Windows 8 DeviceIoControl()函数在Windows 7和Windows 8中的工作方式不同

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,

我正在尝试使用DeviceIoControl功能获取硬盘序列号。使用相同的参数调用它,它在输出缓冲区中给出不同的值

我把它定为

  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”