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
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) |