IOCTL_SEND_USB_REQUEST IOCTL (usbscan.h)
Invia una richiesta definita dal fornitore a un dispositivo USB, usando la pipe di controllo e, facoltativamente, invia o riceve dati aggiuntivi.
Codice principale
Buffer di input
Puntatore a una struttura IO_BLOCK_EX .
Lunghezza del buffer di input
Dimensioni del buffer di input.
Buffer di output
Puntatore allo stesso buffer del membro pbyData della struttura IO_BLOCK_EX identificata o NULL se non viene richiesto un trasferimento di dati.
Lunghezza del buffer di output
Dimensioni del buffer di output o zero se non viene richiesto un trasferimento dei dati.
Blocco dello stato
Irp->IoStatus.Status è impostato su STATUS_SUCCESS se la richiesta ha esito positivo. In caso contrario, stato alla condizione di errore appropriata come codice NTSTATUS .
Commenti
Parametri DeviceIoControl
Quando la funzione DeviceloControl viene chiamata con il codice di controllo IOCTL_SEND_USB_REQUEST, il chiamante deve specificare l'indirizzo di una struttura IO_BLOCK_EX come parametro lpInBuffer della funzione. Il tipo di richiesta specificato con questo codice di controllo di I/O è specifico del dispositivo e definito dal fornitore, così come il tipo e le dimensioni di tutte le informazioni che potrebbero essere inviate o ricevute.
Nella tabella seguente viene illustrato come specificare gli argomenti di input.
Argomento | Operazione di lettura | Operazione di scrittura | Nessun trasferimento dati |
---|---|---|---|
lpInBuffer | IO_BLOCK_EX puntatore. | IO_BLOCK_EX puntatore. | IO_BLOCK_EX puntatore. |
lpOutBuffer | Puntatore al buffer che riceverà i dati da leggere. | Puntatore al buffer contenente i dati da scrivere. | NULL |
lpOutBufferSize | Dimensioni del buffer. | Dimensioni del buffer. | Zero |
membro bRequest della struttura IO_BLOCK_EX | Codice di richiesta specifico del dispositivo. | Codice di richiesta specifico del dispositivo. | Codice di richiesta specifico del dispositivo. |
membro pbyData della struttura IO_BLOCK_EX | Stesso puntatore di lpOutBuffer. | Stesso puntatore di lpOutBuffer. | NULL |
membro uLength della struttura IO_BLOCK_EX | Stesso valore di lpOutBufferSize. | Stesso valore di lpOutBufferSize. | Zero |
fTransferDirectionIn membro della struttura IO_BLOCK_EX | TRUE | FALSE | FALSE |
Il membro bmRequestType della struttura IO_BLOCK_EX non viene utilizzato con IOCTL_SEND_USB_REQUEST.
Usando il contenuto della struttura di IO_BLOCK_EX , il driver in modalità kernel crea un'cartella ODBC che contiene una struttura URB_CONTROL_VENDOR_OR_CLASS_REQUEST .
La tabella seguente indica i valori assegnati ai membri della struttura _URB_CONTROL_VENDOR_OR_CLASS_REQUEST.
Membro struttura | Valore assegnato |
---|---|
TransferFlags | 0 |
TransferBufferLength | pIoBlockEx-uLength> |
TransferBuffer | lpOutBuffer (lettura) o pIoBlockEx-pbyData> (scrittura) |
TransferBufferMDL | NULL |
RequestTypeReservedBits | 0xC0 (lettura) o 0x40 (scrittura) |
Richiesta | pIoBlockEx-bRequest> |
Valore | (SHORT) pIoBlockEx-uOffset> |
Index | pIoBlockEx-uIndex> |
Per altre informazioni, vedere Accesso ai driver Kernel-Mode per i dispositivi ancora immagine.
Requisiti
Requisito | Valore |
---|---|
Intestazione | usbscan.h (include Usbscan.h) |