IOCTL_SEND_USB_REQUEST IOCTL (usbscan.h)

Sendet eine vom Hersteller definierte Anforderung mithilfe der Steuerpipe an ein USB-Gerät und sendet oder empfängt optional zusätzliche Daten.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Zeiger auf eine IO_BLOCK_EX-Struktur .

Länge des Eingabepuffers

Größe des Eingabepuffers.

Ausgabepuffer

Zeiger auf den gleichen Puffer, wie 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 wird auf STATUS_SUCCESS festgelegt, wenn die Anforderung erfolgreich ist. Andernfalls wird Status zur entsprechenden Fehlerbedingung als NTSTATUS-Code verwendet.

Hinweise

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-Steuerungscode angegebene Anforderungstyp ist gerätespezifisch und herstellerdefiniert, ebenso wie der Typ und die Größe aller Informationen, die gesendet oder empfangen werden können.

Die folgende Tabelle zeigt, 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 den Puffer, der die zu lesenden Daten empfängt. Zeiger auf den Puffer, der die zu schreibenden Daten enthält. NULL
lpOutBufferSize Puffergröße. Puffergröße. Null
bRequest-Element der IO_BLOCK_EX-Struktur Gerätespezifischer Anforderungscode. Gerätespezifischer Anforderungscode. Gerätespezifischer Anforderungscode.
pbyData-Element der IO_BLOCK_EX-Struktur Derselbe Zeiger wie lpOutBuffer. Derselbe Zeiger wie lpOutBuffer. NULL
uLength-Element der IO_BLOCK_EX-Struktur Derselbe Wert wie lpOutBufferSize. Derselbe Wert wie lpOutBufferSize. Null
fTransferDirectionIn-Element der IO_BLOCK_EX-Struktur TRUE FALSE FALSE

Das bmRequestType-Element 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.

Strukturmember Zugewiesener Wert
TransferFlags 0
TransferBufferLength pIoBlockEx-uLength>
TransferBuffer lpOutBuffer (read) oder pIoBlockEx-pbyData> (schreiben)
TransferBufferMDL NULL
RequestTypeReservedBits 0xC0 (Lesen) oder 0x40 (Schreiben)
Anforderung pIoBlockEx-bRequest>
Wert (KURZ)pIoBlockEx-uOffset>
Index pIoBlockEx-uIndex>

Weitere Informationen finden Sie unter Zugreifen auf Kernel-Mode Treiber für Standbildgeräte.

Anforderungen

Anforderung Wert
Header usbscan.h (include Usbscan.h)