驱动小牛
|
阅读:1470回复:3
麻烦大大解释一句代码,不懂
一个USB驱动
这是在PNP例程中的case IRP_MN_STOP_DEVICE里面的一段代码,好像是停设备之前,要把电源的IRP包给Cancel掉 在POWER例程的 case PowerSystemWorking:中也调用了同一段代码 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// NTSTATUS result; DEVICE_EXTENSION extension;//////就是那个用户自定义的大结构体 PIRP irp; // irp =(PIRP) InterlockedExchange(&extension->var1400, 0);//////////???这句不明白, ////////////////是在这里面存Pending irp么?可以这样么? if ( irp ) { IoCancelIrp(irp);///cancel pending irp result = InterlockedExchange(&extension->var1408, 1); if ( result ) { PoStartNextPowerIrp(irp); irp->IoStatus.Information = 0; irp->IoStatus.Status = STATUS_CANCELLED; IoCompleteRequest(irp, 0); } } |
驱动小牛
|
沙发#
发布于:2008-05-09 11:43
非常感谢
|