delphi编写的虚拟磁盘开发源码分析报告.docVIP

  • 3
  • 0
  • 约4.55万字
  • 约 44页
  • 2019-07-23 发布于安徽
  • 举报

delphi编写的虚拟磁盘开发源码分析报告.doc

. PAGE . . Delphi编写的虚拟磁盘开发源码分析 一、虚拟光驱驱动(C语言编写) 1、Vcd文件夹 (1)、DeviceThread.h //设备的处理线程 VOID DeviceThread ( IN PVOID Context ); (2)、DeviceThread.c #include ntddk.h #include ntdef.h #include ntdddisk.h #include ntddcdrm.h #include ntverp.h #include ntifs.h #include stdio.h #include DeviceThread.h #include VCD.h ////////////////////////////////////////////////////////////////////////// NTSTATUS VCDOpenFile ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ) { PDEVICE_EXTENSION device_extension; PCHAR filename; UCHAR afile_name[MAX_PATH] = {0}; UNICODE_STRING ufile_name; NTSTATUS status; OBJECT_ATTRIBUTES object_attributes; FILE_END_OF_FILE_INFORMATION file_eof; FILE_BASIC_INFORMATION file_basic; FILE_STANDARD_INFORMATION file_standard; FILE_ALIGNMENT_INFORMATION file_alignment; DbgPrint(VCDOpenFile\n); device_extension = (PDEVICE_EXTENSION) DeviceObject-DeviceExtension; filename = (PCHAR)Irp-AssociatedIrp.SystemBuffer; RtlCopyMemory(device_extension-oldfile_name, filename, MAX_PATH); if (filename[0] == \\) { if (filename[1] == \\) // \\server\share\path\XXX.iso -\??\UNC\\server\share\path\XXX.iso { strcpy(afile_name, \\??\\UNC); strcat(afile_name, filename); } else // \Device\Harddisk0\Partition1\path\XXX.iso 不变 { strcpy(afile_name, filename); } } else // c:\path\XXX.iso -\??\c:\path\XXX.iso { strcpy(afile_name, \\??\\); strcat(afile_name, filename); } device_extension-file_name.Length = (USHORT)strlen(afile_name); device_extension-file_name.MaximumLength = device_extension-file_name.Length; device_extension-file_name.Buffer = ExAllocatePool(NonPagedPool, device_extension-file_name.Length); RtlCopyMemory( device_extension-file_name.Buffer, afile_name, device_extension-file_name.Length );

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档