maaaaaad
Гость
|
|
« : 06-11-2003 21:47 » |
|
есть сканер на usb USB\VID_043D&PID_0057 (mustek, можете не рыться в вендорах%-) ) написал inf, в драйве (AddDevice) пытаюсь прочесть дескриптеры
NTSTATUS XDeviceScan(PDEVICE_OBJECT fdo) { NTSTATUS status = STATUS_SUCCESS; URB urb; USB_DEVICE_DESCRIPTOR dd;
UsbBuildGetDescriptorRequest(&urb, //sizeof(_URB_CONTROL_DESCRIPTOR_REQUEST), (USHORT) sizeof (struct _URB_CONTROL_DESCRIPTOR_REQUEST), USB_DEVICE_DESCRIPTOR_TYPE, 0, 0, &dd, NULL, sizeof(dd), NULL); __try { status = SendAwaitUrb(fdo, &urb); } __except(EXCEPTION_CONTINUE_EXECUTION) { DbgPrint(DRIVER_NAME "SendAwaitUrb() cause exception!\n"); } if (!NT_SUCCESS(status)) { DbgPrint(DRIVER_NAME " - Error %X trying to read device descriptor\n", status); return status; }
DbgPrint(DRIVER_NAME " - Configuring device from %ws\n", dd.iManufacturer); DbgPrint(DRIVER_NAME " - Product is %ws\n", dd.iProduct); DbgPrint(DRIVER_NAME " - Serial number is %ws\n", dd.iSerialNumber);
// Read the descriptor of the first configuration. This requires two steps. The first step // reads the fixed-size configuration descriptor alone. The second step reads the // configuration descriptor plus all imbedded interface and endpoint descriptors.
return status;
SendAwaitUrb - стандартная, только что пытался переправлять IRP на DeviceSendIprTo (и Pdo=) ) CallDriver в ней возвращает STATUS_INVALID_DEVICE_REQUEST Устройство добавляется и стартуется, но вот ничего не читается... Такое впечатление, что IRP не туда отправляются...
класс нужно обязательно использовать USB?, а то я свой юзаю... думаю не правильно проинстален драйвер...
|