simon
驱动牛犊
驱动牛犊
  • 注册日期2001-08-13
  • 最后登录2003-03-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1310回复:1

请教bulkusb的问题。

楼主#
更多 发布于:2001-11-30 12:09
不好意思,请问一个问题,我也用DDK的bulkusb改写了个驱动,使用一个USB存储器做为测试用,该设备定义了一个接口,两个端点是块传输类型的。发现驱动到是安上去了,但是再测试程序中调用CreateFile( FILENAME,
  GENERIC_READ | GENERIC_WRITE,
  FILE_SHARE_READ | FILE_SHARE_WRITE,
  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);后,驱动里响应函数
NTSTATUS
BulkUsb_Create(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp
    )
{
    NTSTATUS ntStatus = STATUS_SUCCESS;
    PFILE_OBJECT fileObject;
    PIO_STACK_LOCATION irpStack;
    PDEVICE_EXTENSION deviceExtension;
    ULONG i, ix;
 NTSTATUS actStat;
    PUSBD_INTERFACE_INFORMATION interface;
 PUSBD_PIPE_INFORMATION PipeInfo;
    PBULKUSB_PIPEINFO ourPipeInfo = NULL;
 

    deviceExtension = DeviceObject->DeviceExtension;
    interface = deviceExtension->UsbInterface;
 
    BULKUSB_KdPrint( DBGLVL_DEFAULT,(\"entering BulkUsb_Create\\n\"));

    BulkUsb_IncrementIoCount(DeviceObject);
 
    // Can\'t accept a new io request if:
    //  1) device is removed,
    //  2) has never been started,
    //  3) is stopped,
    //  4) has a remove request pending,
    //  5) has a stop device pending
    if ( !BulkUsb_CanAcceptIoRequests( DeviceObject ) ) {
        ntStatus = STATUS_DELETE_PENDING;
 
  BULKUSB_KdPrint( DBGLVL_DEFAULT,(\"ABORTING BulkUsb_Create\\n\"));
        goto done;
    }
    
    irpStack = IoGetCurrentIrpStackLocation (Irp);
    fileObject = irpStack->FileObject;
 
    // fscontext is null for device
    fileObject->FsContext = NULL;
 
    if ( 0 == fileObject->FileName.Length ) // this is the case if opening device as opposed to pipe
        goto done;      // nothing more to do
   。
   。
   。
}
fileObject->FileName.Length 的值是0,在测试程序中得到文件名没有在IRPSTACK中传过来,请问是是什么原因,还请大虾指点
巴乔
驱动牛犊
驱动牛犊
  • 注册日期2003-05-10
  • 最后登录2003-06-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-13 00:00
FILENAME的参数对吗?可能是这里的问题
游客

返回顶部