我如何知道IOCTL代码是否有效来自DeviceIoControl返回值

时间:2014-03-22 15:37:14

标签: kernel driver device-driver ioctl wdk

我正在编写prog。它使用DeviceIoControl()与内核驱动程序通信。

对于不同的IOCTL代码,DeviceIoControl有时返回-0x3ffffff3,有时返回-0x3ffffffb。 (两种情况下均为负值)

从这个返回值我如何理解目标设备是否支持IOCTL代码?

如果我向设备发送正确的IOCTL代码,它是否应该返回正值?

谢谢,

1 个答案:

答案 0 :(得分:1)

阅读DeviceIoControl的MSDN页面,说明如下:

Return value

If the operation completes successfully, the return value is nonzero.

If the operation fails or is pending, the return value is zero. To get extended error information, call GetLastError.

因此,您的IOCtls似乎得到了设备的支持,因为您获得的不是零。请记住,如果使用有符号整数,则可能会得到负值,如果不应该得到负值,则使用无符号整数尝试它们。