阅读:1224回复:4
在应用层如何获取IRP的返回状态?
// return status
pIrp->IoStatus.Information = 0; // Map to Win 32 Error Code - ERROR_BAD_COMMAND pIrp->IoStatus.Status = STATUS_INVALID_DEVICE_STATE; IoCompleteRequest(pIrp, IO_NO_INCREMENT); 通过上面的语句,我想将IRP标志为错误完成,并在应用层调用 GetLastError来获取IRP的状态,可是却得不到ERROR_BAD_COMMAND, 请问,这是为什么? 是不是我需要编写自己的Io完成例程,从而将IRP的错误状态告诉 应用层?哪个函数可以处理? |
|
|
沙发#
发布于:2004-03-22 17:11
getlasterror和IRP返回的结果不一样。
|
|
|
板凳#
发布于:2004-03-23 09:00
那如何才能从应用层获取IRP的返回状态呢?
我需要根据IRP不同的返回状态做相应的处理。 |
|
|
地板#
发布于:2004-03-23 09:17
如果你是和自己驱动通信的话,那么可以把返回的结果放到输出缓冲区里。
|
|
|
地下室#
发布于:2004-03-23 14:35
我的驱动程序是异步IO操作,
IRP的最终状态会根据情况不同,而产生不同的状态, 我想在应用层根据IRP的不同返回状态进行相应的操作, 难道在应用层就不能获取IRP的状态字段吗? GetOverLappedResult不是可以获取overlap结构体的信息吗? 难道必须是STATUS_SUCCESS时,才可以获取吗? |
|
|