关于IRP同步的有关问题
关于IRP同步的问题
驱动中,一个处理IRP_MJ_READ的例程Read。如果有一个IRP请求传入Read,然而Read调用WaitForXXXX函数等待某件事情,而且很可能是永远等待下去。那么又有一个IRP请求传入,需要处理,如果驱动没有进行串行化处理。那么后面这个IRP会怎样?
IRP丢失,发起请求的应用程序卡死?
还是IRP丢失,应用程序请求返回错误?
或者是IRP会等待前一个IRP处理完成?
------解决方案--------------------
一般情况下应该是“IRP会等待前一个IRP处理完成”,同时“发起请求的应用程序卡死”。
驱动中,一个处理IRP_MJ_READ的例程Read。如果有一个IRP请求传入Read,然而Read调用WaitForXXXX函数等待某件事情,而且很可能是永远等待下去。那么又有一个IRP请求传入,需要处理,如果驱动没有进行串行化处理。那么后面这个IRP会怎样?
IRP丢失,发起请求的应用程序卡死?
还是IRP丢失,应用程序请求返回错误?
或者是IRP会等待前一个IRP处理完成?
------解决方案--------------------
一般情况下应该是“IRP会等待前一个IRP处理完成”,同时“发起请求的应用程序卡死”。