阅读:1597回复:0
usb例子程序中的几个问题
本站下载的basicusb 和 bulkusb程序中有几个迷惑,请指点:
1.bulkusb中: NTSTATUS UsbBulkDevice::OnRemoveDevice(KIrp I) { Tracer << "UsbBulkDevice::OnRemoveDevice() Entry\n"; // Our PnP policy will take care of // (1) giving the IRP to USBD // (2) detaching the PDO // (3) deleting the device object return STATUS_SUCCESS; } 这里面好像什么事也没做呀,怎么就删除设备了呢? 2. NTSTATUS UsbBulkDevice::Create(KIrp I) { Tracer << "UsbBulkDevice::Create() Entry\n"; I.ForceReuseOfCurrentStackLocationInCalldown(); NTSTATUS status = m_Usb.PnpCall(this, I); Tracer << "UsbBulkDevice:Create Status " << (ULONG)status << "\n"; return status; } 函数create的代码和close的代码几乎一样,难道只需调用pnpcall函数将irp交给下一栈就可以了吗?本身不要做什么吗? 3. IRP_MJ_INTERNAL_DEVICE_CONTROL这个irp是干什么的哪?在ddk中找不到哇! 4. 那些时候应该用ForceReuseOfCurrentStackLocationInCalldown? 那些时候直接调用pnpcall就可以呢? 不懂得还多着呢,先问这些吧,请高手不要烦,多多指点! |
|