jonathanfoo
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2004-06-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1224回复:4

在应用层如何获取IRP的返回状态?

楼主#
更多 发布于:2004-03-22 16:57
// 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的错误状态告诉
应用层?哪个函数可以处理?

newhand
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-03-22 17:11
getlasterror和IRP返回的结果不一样。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
jonathanfoo
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2004-06-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-23 09:00
那如何才能从应用层获取IRP的返回状态呢?
我需要根据IRP不同的返回状态做相应的处理。
newhand
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2004-03-23 09:17
如果你是和自己驱动通信的话,那么可以把返回的结果放到输出缓冲区里。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
jonathanfoo
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2004-06-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-03-23 14:35
我的驱动程序是异步IO操作,
IRP的最终状态会根据情况不同,而产生不同的状态,
我想在应用层根据IRP的不同返回状态进行相应的操作,
难道在应用层就不能获取IRP的状态字段吗?

GetOverLappedResult不是可以获取overlap结构体的信息吗?
难道必须是STATUS_SUCCESS时,才可以获取吗?
newhand
游客

返回顶部