阅读:1010回复:1
为什么我用异步方式打开设备会失败
应用的测试程序如下,驱动程序没有StartIo的IRP串行排队。
使用同步方式打开,驱动工作正常。 异步方式打开,返回错误。哪怕是只发送了一次DeviceIoControl 也不行,请教是为什么? hDevice=CreateFile(MY_DEVICE_NAME, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, NULL); ...... OVERLAPPED ol; if (!(DeviceIoControl(hDevice, START_HELLPWORLD, NULL, 0, NULL, NULL); ...... OVERLAPPED ol; if (!(DeviceIoControl(hDevice, START_HELLPWORLD, NULL, 0, NULL, 0, &RetBytes, &ol))) { #ifdef DEBUGMSG printf(\"Can\'t deal with the IRP\\n\"); printf(\"DeviceIoControl() GetLastError reports \\ %d\\n\",erron); #endif // CloseHandle(hDevice); // return FALSE; } |
|
驱动老牛
|
沙发#
发布于:2005-04-10 10:02
应用的测试程序如下,驱动程序没有StartIo的IRP串行排队。 OVERLAPPED 结构要清0并创建EVENT才行啊 |
|