Windows 8 DeviceIoControl()函数在Windows 7和Windows 8中的工作方式不同
我正在尝试使用DeviceIoControl功能获取硬盘序列号。使用相同的参数调用它,它在输出缓冲区中给出不同的值 我把它定为Windows 8 DeviceIoControl()函数在Windows 7和Windows 8中的工作方式不同,windows-8,driver,hard-drive,deviceiocontrol,Windows 8,Driver,Hard Drive,Deviceiocontrol,我正在尝试使用DeviceIoControl功能获取硬盘序列号。使用相同的参数调用它,它在输出缓冲区中给出不同的值 我把它定为 if ( DeviceIoControl (hPhysicalDriveIOCTL, IOCTL_STORAGE_QUERY_PROPERTY, & query, sizeof (query), & buffer,
if ( DeviceIoControl (hPhysicalDriveIOCTL, IOCTL_STORAGE_QUERY_PROPERTY,
& query,
sizeof (query),
& buffer,
sizeof (buffer),
& cbBytesReturned, NULL) )
其中HPPhysicalDriveIoctl=CreateFile(文本(deviceName)),0,
文件共享读取文件共享写入,空,
打开(现有,0,空) 有什么不同?你有错吗?@SergeyPodobry我没有错。DeviceIoControl()在“buffer”中返回的值在win7和win8中不同(我在这两种情况下传递相同的参数)。使用“buffer”的这个值,我必须检索硬盘序列号,所以在win7和wind8中,它会得到同一硬盘的不同值。什么是
deviceName
?显示完整代码和输出。@Rohan DeviceName为“\\\\.\\PhysicalDrive0”