我正在谈论物理磁盘驱动器,而不是卷/分区/逻辑驱动器。 所以通常build议的GetVolumeInformation
函数不适用于我的情况。
确切地说:我直接使用尚未分区的磁盘。 我通过CreateFile
函数打开一个句柄:
hDisk = CreateFile( _T("\\\\.\\PHYSICALDRIVE0"), GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED|FILE_FLAG_NO_BUFFERING, NULL);
我可以使用这个句柄直接在磁盘上读/写。 使用DeviceIoControl
函数也可以查询各种磁盘属性。 但是我找不到查询设备pipe理器中可见的磁盘供应商/串行属性的方法。
看看DiskId32 。 源代码也在那里。 这个想法是使用DFP_RECEIVE_DRIVE_DATA
和DeviceIoControl
。