xuguozhe
驱动牛犊
驱动牛犊
  • 注册日期2003-11-12
  • 最后登录2004-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1174回复:7

DefaultPnp(KIrp I)

楼主#
更多 发布于:2003-12-19 10:37
NTSTATUS UsbBulkDevice::DefaultPnp(KIrp I)
{
    static char* minors[] = {
       \"IRP_MN_START_DEVICE\",
       \"IRP_MN_QUERY_REMOVE_DEVICE\",
       \"IRP_MN_REMOVE_DEVICE\",
       \"IRP_MN_CANCEL_REMOVE_DEVICE\",
       \"IRP_MN_STOP_DEVICE\",
       \"IRP_MN_QUERY_STOP_DEVICE\",
       \"IRP_MN_CANCEL_STOP_DEVICE\",
       \"IRP_MN_QUERY_DEVICE_RELATIONS\",
       \"IRP_MN_QUERY_INTERFACE\",
       \"IRP_MN_QUERY_CAPABILITIES\",
       \"IRP_MN_QUERY_RESOURCES\",
       \"IRP_MN_QUERY_RESOURCE_REQUIREMENTS\",
       \"IRP_MN_QUERY_DEVICE_TEXT\",
       \"IRP_MN_FILTER_RESOURCE_REQUIREMENTS\",

       \"IRP_MN_undefined\",
       \"IRP_MN_READ_CONFIG\",
       \"IRP_MN_WRITE_CONFIG\",
       \"IRP_MN_EJECT\",
       \"IRP_MN_SET_LOCK\",
       \"IRP_MN_QUERY_ID\",
       \"IRP_MN_QUERY_PNP_DEVICE_STATE\",
       \"IRP_MN_QUERY_BUS_INFORMATION\",
       \"IRP_MN_DEVICE_USAGE_NOTIFICATION\",
       \"IRP_MN_SURPRISE_REMOVAL\"
       };

ULONG Minor = I.MinorFunction();
CHAR* IrpName;
if ( Minor < IRP_MN_SURPRISE_REMOVAL )
       IrpName = minors[Minor];
else
       IrpName = \"<unknown>\";

DbgPrint(\"Pnp IRP minor function=%s\\n\", IrpName);

I.ForceReuseOfCurrentStackLocationInCalldown();
return m_Usb.PnpCall(this, I);
}


请各位高手给在下讲解一二呗。 多谢了。  

[编辑 -  12/19/03 by  xuguozhe]
我的最爱C++ [img]http://www.5see.com/demo/gif/kj/car/1/car11.gif[/img]
pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-19 10:43
用户被禁言,该主题自动屏蔽!
xuguozhe
驱动牛犊
驱动牛犊
  • 注册日期2003-11-12
  • 最后登录2004-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-12-19 10:45
呵呵,是的。
我的最爱C++ [img]http://www.5see.com/demo/gif/kj/car/1/car11.gif[/img]
xuguozhe
驱动牛犊
驱动牛犊
  • 注册日期2003-11-12
  • 最后登录2004-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-12-19 10:51
在调试模式下,每当我插上U盘时, 总是能执行而且是唯一执行的一段代码 DefaultPnp(KIrp I) ,那么我又该如何得到该U盘固件的描述符呢?  我的驱动程序又如何对U盘进行操作呢? 如果没有得到U盘固件的描述符的话,是不是我就不能对U盘进行操作呢? 呵呵谢谢。 :D
我的最爱C++ [img]http://www.5see.com/demo/gif/kj/car/1/car11.gif[/img]
pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-12-19 10:55
用户被禁言,该主题自动屏蔽!
xuguozhe
驱动牛犊
驱动牛犊
  • 注册日期2003-11-12
  • 最后登录2004-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-12-19 11:06
虽然你没有弄过U盘,但是你可以假设 \"U盘是任何设备”,再以你所做过的设备为本,来告诉我我的那些疑问呀,先谢谢你了 pengenwen。 :D
我的最爱C++ [img]http://www.5see.com/demo/gif/kj/car/1/car11.gif[/img]
xuguozhe
驱动牛犊
驱动牛犊
  • 注册日期2003-11-12
  • 最后登录2004-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-12-19 13:57
我自己顶一下了。 :D
我的最爱C++ [img]http://www.5see.com/demo/gif/kj/car/1/car11.gif[/img]
xuguozhe
驱动牛犊
驱动牛犊
  • 注册日期2003-11-12
  • 最后登录2004-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-12-20 08:13
虽然你没有弄过U盘,但是你可以假设 \"U盘是任何设备”,再以你所做过的设备为本,来告诉我我的那些疑问呀,先谢谢你了 pengenwen。 :D
我的最爱C++ [img]http://www.5see.com/demo/gif/kj/car/1/car11.gif[/img]
游客

返回顶部