Freigeben über


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

IRP_MJ_DEVICE_CONTROL

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)