阅读:2639回复:7
应用程序叫用了CancelIo以后switch(::WaitForSingleObject(m_ovRead.hEvent,dwTimeOut)) { case WAIT_OBJECT_0: if (::GetOverlappedResult (hUsb,&m_ovRead,dwRealReadLen,true)) {iReturn=0;} break; case WAIT_TIMEOUT: ::CancelIo(hUsb); break; default:; } } 请问应用程序叫用了CancelIo以后,对驱动程序会产生怎样的行为? 会产生新的irp或是? |
|
沙发#
发布于:2004-08-11 13:01
IRP_MJ_CLOSE
|
|
|
板凳#
发布于:2004-08-11 15:47
产生三个新问题
应用程序叫用CancelIO,驱动收到IRP_MJ_CLOSE后 1谁去停掉目前正在进行的IRP,IO manager吗? 2 CancelIO自变量用有指定特定的handle,在驱动里怎么知道他指定的那个Handle是哪一个pipe handl? 3怎么去区分是 应用过程调用CloseHandle àIRP_MJ_CLOSE 还是应用过程调用CancelIO-->IRP_MJ_CLOSE? 如果你知道任何一个的话 拜托 请告诉我 |
|
地板#
发布于:2004-08-16 14:34
你是乱答的吗? 我抓很久都没有抓到CLOSE |
|
地下室#
发布于:2005-07-21 13:23
同样的问题!请达人帮解~~~
|
|
5楼#
发布于:2005-07-22 17:26
在应用程序调用CancelIo后,操作系统会将为该线程发出的所有未完成的异步IRP调用IoCancelIrp。IRP的取消例程就会被调用。
|
|
6楼#
发布于:2005-07-26 16:01
你脑子有问题!.牛头不对马嘴!WaitForSingleObject => KeWaitForSingleObject
|
|
7楼#
发布于:2007-04-16 23:01
...
你自己看错了吧, 这个是APP. |
|