任何人都可以提供一个使用示例SetupDiGetDeviceProperty吗?
当我在Windows XP - 32上运行以下代码时,我得到以下结果.
我只插了一个usb笔式驱动器
On Windows XP - 32 Bit
-----------------------
Drive C:
ProductId: ST3160215AS
ProductRevision: 3.AAD
DeviceType: 7, DeviceNumber: 0, PartitionNumber: 1
DevicePath: \\?\ide#diskst3160215as_____________________________3.aad___#5&2
7db0ed4&0&0.0.0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
Class: DiskDrive
Hardware ID: IDE\DiskST3160215AS_____________________________3.AAD___
Friendly Name: ST3160215AS
Physical Device Object Name: \Device\Ide\IdeDeviceP2T0L0-5
Device Description: Disk drive
Parent Device Instance ID: PCIIDE\IDECHANNEL\4&1C1E8A11&0&0
Parent of Parent Device Instance ID: PCI\VEN_8086&DEV_27C0&SUBSYS_72671462&R
EV_01\3&11583659&0&FA
DeviceInstanceId: IDE\DISKST3160215AS_____________________________3.AAD___\5
&27DB0ED4&0&0.0.0
Drive D:
ProductId: ST3160215AS
ProductRevision: 3.AAD
DeviceType: 7, DeviceNumber: 0, PartitionNumber: 2
DevicePath: \\?\ide#diskst3160215as_____________________________3.aad___#5&2
7db0ed4&0&0.0.0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
Class: DiskDrive
Hardware ID: IDE\DiskST3160215AS_____________________________3.AAD___ …Run Code Online (Sandbox Code Playgroud) 如何在Windows 7中写入物理驱动器?
我正在尝试写入\\.\PhysicalDrive0Windows 7中的物理磁盘(例如).
这个问题已经被要求死亡,但从未得到过回答.它曾经在Windows XP中运行,但微软故意在Windows Vista中破解.微软提供了有关如何操作的提示,但没有人能够弄明白.
在过去,允许写入物理磁盘(只要您是管理员).执行此操作的方法甚至记录在知识库文章中:
要在基于Win32的应用程序中打开直接磁盘访问(原始I/O)的物理硬盘驱动器,请使用表单的设备名称
Run Code Online (Sandbox Code Playgroud)\\.\PhysicalDriveN其中N为0,1,2等,表示系统中的每个物理驱动器.
您可以使用具有这些设备名称的CreateFile()应用程序编程接口(API)打开物理或逻辑驱动器,前提是您具有对驱动器的适当访问权限(即,您必须是管理员).必须同时使用CreateFile()FILE_SHARE_READ和FILE_SHARE_WRITE标志才能访问驱动器.
在添加安全限制的情况下,Windows Vista中的所有更改都会发生.
许多人和许多答案,在许多stackoverflow问题上混淆:
\\.\PhysicalDrive0),和\\.\C$)阻止对卷和磁盘的直接写入操作
如果出现以下情况,DASD(直接访问存储设备)卷句柄上的写操作将成功:
- 文件系统未安装,或者是否
- 写入的扇区是引导扇区.
- 写入的扇区驻留在文件系统空间之外.
- 通过请求独占写访问来隐式锁定文件系统.
- 通过发送锁定/卸载请求显式锁定了文件系统.
- 写请求已由内核模式驱动程序标记,指示应绕过此检查.该标志名为SL_FORCE_DIRECT_WRITE,它位于IrpSp-> flags字段中.文件系统和存储驱动程序都会检查此标志.
在我的情况下,我要求写一个物理,而不是逻辑.Microsoft注意到写入物理磁盘句柄的新限制:
在以下情况下,磁盘句柄上的写操作将成功:
- 写入的扇区不属于文件系统.
- 写入的扇区属于明确锁定的已装入文件系统.
- 写入的扇区属于未安装的文件系统或卷没有文件系统.
关于如何使其工作的提示围绕着:
但问题是如何卸载文件系统?你如何锁定文件系统?
我能够读取磁盘的所有物理扇区; 那没问题.问题是当我想写入磁盘的物理扇区时.
我当前的代码是伪代码:
void ZeroSector(Int64 …Run Code Online (Sandbox Code Playgroud)