xiang
驱动牛犊
驱动牛犊
  • 注册日期2001-06-12
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1597回复:0

usb例子程序中的几个问题

楼主#
更多 发布于:2001-05-28 16:34
本站下载的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就可以呢?

不懂得还多着呢,先问这些吧,请高手不要烦,多多指点!
游客

返回顶部