总结一下在windows驱动开发中,经常会犯的错误,加以注意!
问题1: 没有完成IRP
这是个新手非常容易犯的错误,没有设置IRP状态,完成IRP。这会导致,调用该驱动的应用程序,无法关闭,即使被kill,也会变成系统进程存在,因为有资源在内核中没清理干净。
pIrp->IoStatus.Status = ntStatus;
pIrp->IoStatus.Information = 0;
IoCompleteRequest(pIrp, IO_NO_INCREMENT);
就这几行代码,千万别忘记!!!