阅读:1065回复:1
发送Inquiry出错,请大侠帮忙
请问我如果想在一个U盘驱动里发送INQUIRY命令,应该怎样填写
SCSI_PASS_THROUGH结构呀? SCSI_PASS_THROUGH结构变量里的DataBufferOffset和SenseInfoOffset是什么意思?大家帮我看一下这段源代码好吗? NTSTATUS Sample_Inquiry(PDEVICE_OBJECT deviceObject) { NTSTATUS ntStatus, status = STATUS_SUCCESS; PIRP irp; KEVENT event; IO_STATUS_BLOCK ioStatus; PIO_STACK_LOCATION nextStack; PDEVICE_EXTENSION deviceExtension; ULONG length = 0; SCSI_PASS_THROUGH_WITH_BUFFERS sptwb; deviceExtension = deviceObject->DeviceExtension; RtlZeroMemory(&sptwb, sizeof(SCSI_PASS_THROUGH_WITH_BUFFERS)); sptwb.spt.Length = sizeof(SCSI_PASS_THROUGH); sptwb.spt.PathId = 0; sptwb.spt.TargetId = 1; sptwb.spt.Lun = 0; sptwb.spt.CdbLength = 6; sptwb.spt.SenseInfoLength = 0; sptwb.spt.DataIn = SCSI_IOCTL_DATA_IN; sptwb.spt.DataTransferLength = 192; sptwb.spt.TimeOutValue = 30; sptwb.spt.DataBufferOffset = offsetof(SCSI_PASS_THROUGH_WITH_BUFFERS,ucDataBuf); sptwb.spt.SenseInfoOffset = NULL; sptwb.spt.Cdb[0] = 0x12; sptwb.spt.Cdb[2] = 0x00; sptwb.spt.Cdb[4] = 0x24; length = offseto(SCSI_PASS_THROUGH_WITH_BUFFERS,ucDataBuf) + sptwb.spt.DataTransferLength; // // issue a synchronous request // KeInitializeEvent(&event, NotificationEvent, FALSE); irp = IoBuildDeviceIoControlRequest( IOCTL_SCSI_PASS_THROUGH, deviceExtension->TopOfStackDeviceObject, &sptwb, sizeof(SCSI_PASS_THROUGH), &sptwb, length, FALSE, &event, &ioStatus); // // Call the class driver to perform the operation. If the returned status // is PENDING, wait for the request to complete. // nextStack = IoGetNextIrpStackLocation(irp); ASSERT(nextStack != NULL); ntStatus = IoCallDriver( deviceExtension- >TopOfStackDeviceObject, irp); if (ntStatus == STATUS_PENDING) { KeWaitForSingleObject( &event, Suspended, KernelMode, FALSE, NULL); } else { ioStatus.Status = ntStatus; } // // USBD maps the error code for us // ntStatus = ioStatus.Status; return STATUS_SUCCESS; } 加了这段代码后,驱动就运行不正常了,用usbview看发现 ConnectionStatus: DeviceConnected Current Config Value: Device Bus Speed: Full Device Address: Open Pipes: 0 另外用bus hound捕获的数据有误,请看我的文本文件。请大侠帮我分析一下吧。我做的是客户驱动。谢谢 |
|
|
沙发#
发布于:2004-08-09 16:11
真搞不懂,没人理郁闷中。。。。。。。。。。。
|
|