IOCTL_SEND_USB_REQUEST IOCTL (usbscan.h)
Sendet eine vom Hersteller definierte Anforderung an ein USB-Gerät mithilfe des Steuerrohrs und sendet optional zusätzliche Daten.
Hauptcode
Eingabepuffer
Zeiger auf eine IO_BLOCK_EX Struktur.
Eingabepufferlänge
Größe des Eingabepuffers.
Ausgabepuffer
Zeigen Sie auf denselben Puffer, den der PbyData- Member der identifizierten IO_BLOCK_EX Struktur oder NULL-, wenn keine Datenübertragung angefordert wird.
Länge des Ausgabepuffers
Größe des Ausgabepuffers oder Null, wenn keine Datenübertragung angefordert wird.
Statusblock
Irp->IoStatus.Status auf STATUS_SUCCESS festgelegt ist, wenn die Anforderung erfolgreich ist. Andernfalls Status der entsprechenden Fehlerbedingung als NTSTATUS- Code.
Bemerkungen
DeviceIoControl-Parameter
Wenn die DeviceloControl--Funktion mit dem IOCTL_SEND_USB_REQUEST-Steuerelementcode aufgerufen wird, muss der Aufrufer die Adresse einer IO_BLOCK_EX Struktur als lpInBuffer Parameter der Funktion angeben. Der mit diesem E/A-Steuerelementcode angegebene Anforderungstyp ist gerätespezifisch und vom Hersteller definiert, ebenso wie der Typ und die Größe aller Informationen, die gesendet oder empfangen werden können.
In der folgenden Tabelle wird gezeigt, wie Eingabeargumente angegeben werden sollen.
Argument | Lesevorgang | Schreibvorgang | Keine Datenübertragung |
---|---|---|---|
lpInBuffer- | IO_BLOCK_EX Zeiger. | IO_BLOCK_EX Zeiger. | IO_BLOCK_EX Zeiger. |
lpOutBuffer- | Zeiger auf Puffer, der zu lesende Daten empfängt. | Zeiger auf Puffer, der Daten enthält, die geschrieben werden sollen. | NULL- |
lpOutBufferSize | Größe des Puffers. | Größe des Puffers. | Null |
bRequest Mitglied der IO_BLOCK_EX Struktur | Gerätespezifischer Anforderungscode. | Gerätespezifischer Anforderungscode. | Gerätespezifischer Anforderungscode. |
pbyData- Mitglied der IO_BLOCK_EX-Struktur | Derselbe Zeiger wie lpOutBuffer. | Derselbe Zeiger wie lpOutBuffer. | NULL- |
uLength Mitglied der IO_BLOCK_EX Struktur | Derselbe Wert wie lpOutBufferSize. | Derselbe Wert wie lpOutBufferSize. | Null |
fTransferDirectionIn Mitglied der IO_BLOCK_EX-Struktur | TRUE- | FALSE- | FALSE- |
Das bmRequestType- Mitglied der IO_BLOCK_EX-Struktur wird nicht mit IOCTL_SEND_USB_REQUEST verwendet.
Mithilfe des IO_BLOCK_EX Strukturinhalts erstellt der Kernelmodustreiber eine URB-, die eine URB_CONTROL_VENDOR_OR_CLASS_REQUEST Struktur enthält.
In der folgenden Tabelle sind die Werte angegeben, die _URB_CONTROL_VENDOR_OR_CLASS_REQUEST Strukturmember zugewiesen sind.
Strukturelement | Zugewiesener Wert |
---|---|
TransferFlags- | 0 |
TransferBufferLength | pIoBlockEx->uLength |
TransferBuffer- | lpOutBuffer- (lesen) oder pIoBlockEx-->pbyData- (Schreiben) |
TransferBufferMDL- | NULL- |
RequestTypeReservedBits | 0xC0 (Lesen) oder 0x40 (Schreiben) |
anfordern | pIoBlockEx->bRequest |
Wert | (SHORT)pIoBlockEx->uOffset |
Index- | pIoBlockEx-->uIndex- |
Weitere Informationen finden Sie unter Zugreifen auf Kernel-Mode Drivers for Still Image Devices.
Anforderungen
Anforderung | Wert |
---|---|
Header- | usbscan.h (include Usbscan.h) |