Kernel 如何从DeviceIoControl返回值知道IOCTL代码是否有效

Kernel 如何从DeviceIoControl返回值知道IOCTL代码是否有效,kernel,driver,device-driver,ioctl,wdk,Kernel,Driver,Device Driver,Ioctl,Wdk,我在写程序。它使用DeviceIoControl()与内核驱动程序通信 对于不同的IOCTL代码,DeviceIoControl返回有时-0x3ffffff3和有时-0x3FFFFB。(两种情况下均为负值) 从这个返回值,我如何理解目标设备是否支持IOCTL代码 若我正在向设备发送正确的IOCTL代码,它是否应该始终返回正值 谢谢,阅读DeviceIoControl的MSDN页面时,会说: Return value If the operation completes successfully

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

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

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

若我正在向设备发送正确的IOCTL代码,它是否应该始终返回正值


谢谢,

阅读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.
因此,似乎设备支持您的IOCTL,因为您得到的不是零。请记住,如果使用有符号整数,可能会得到负值;如果不应该得到负值,请尝试使用无符号整数