我正在编写prog。它使用DeviceIoControl()与内核驱动程序通信。
对于不同的IOCTL代码,DeviceIoControl有时返回-0x3ffffff3,有时返回-0x3ffffffb。 (两种情况下均为负值)
从这个返回值我如何理解目标设备是否支持IOCTL代码?
如果我向设备发送正确的IOCTL代码,它是否应该返回正值?
谢谢,
答案 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似乎得到了设备的支持,因为您获得的不是零。请记住,如果使用有符号整数,则可能会得到负值,如果不应该得到负值,则使用无符号整数尝试它们。