阅读:1174回复:7
DefaultPnp(KIrp I)
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] |
|
|
沙发#
发布于:2003-12-19 10:43
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2003-12-19 10:45
呵呵,是的。
|
|
|
地板#
发布于:2003-12-19 10:51
在调试模式下,每当我插上U盘时, 总是能执行而且是唯一执行的一段代码 DefaultPnp(KIrp I) ,那么我又该如何得到该U盘固件的描述符呢? 我的驱动程序又如何对U盘进行操作呢? 如果没有得到U盘固件的描述符的话,是不是我就不能对U盘进行操作呢? 呵呵谢谢。 :D
|
|
|
地下室#
发布于:2003-12-19 10:55
用户被禁言,该主题自动屏蔽! |
|
5楼#
发布于:2003-12-19 11:06
虽然你没有弄过U盘,但是你可以假设 \"U盘是任何设备”,再以你所做过的设备为本,来告诉我我的那些疑问呀,先谢谢你了 pengenwen。 :D
|
|
|
6楼#
发布于:2003-12-19 13:57
我自己顶一下了。 :D
|
|
|
7楼#
发布于:2003-12-20 08:13
虽然你没有弄过U盘,但是你可以假设 \"U盘是任何设备”,再以你所做过的设备为本,来告诉我我的那些疑问呀,先谢谢你了 pengenwen。 :D |
|
|