IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION IOCTL (gpio.h)
Il codice di controllo I /O IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION consente a un client del controller di I/O per utilizzo generico (GPIO) di richiedere un'operazione di controllo del dispositivo specifica del controller. In genere, i client di un controller GPIO sono driver per i dispositivi periferici che si connettono ai pin GPIO.
Codice principale
Buffer di input
I requisiti del buffer di input per questo codice di controllo di I/O sono definiti dallo sviluppatore del driver del controller GPIO. Per altre informazioni sui buffer di input per i provider di integrazione METHOD_BUFFERED, vedere Descrizioni del buffer per i codici di controllo di I/O.
Buffer di output
I requisiti del buffer di output per questo codice di controllo di I/O sono definiti dallo sviluppatore del driver del controller GPIO. Per altre informazioni sui buffer di output per METHOD_BUFFERED IRP, vedere Descrizioni del buffer per i codici di controllo di I/O.
Blocco dello stato
Se l'operazione ha esito positivo, il driver del controller GPIO imposta il membro Status su STATUS_SUCCESS e imposta il membro Information sul numero totale di byte scritti nel buffer di output. Se un'operazione non produce dati di output o il puntatore dati di output è NULL, il membro Information viene impostato su zero.
Se il buffer di input non è sufficientemente grande da contenere i parametri di input o il buffer di output non è sufficientemente grande da contenere i parametri di output per l'operazione specifica del controller, il membro Status viene impostato su STATUS_BUFFER_TOO_SMALL.
Se la richiesta non riesce, il membro Status viene impostato su un codice di errore e il membro Information è impostato su zero.
Se il driver del controller GPIO non supporta operazioni specifiche del controller, il membro Status viene impostato su STATUS_NOT_IMPLEMENTED. Se il driver del controller GPIO supporta operazioni specifiche del controller, ma non riconosce il contenuto del buffer di input come valido, il membro Status viene impostato su STATUS_NOT_SUPPORTED.
Commenti
I controller GPIO tipici non supportano le richieste di IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION . Tuttavia, uno sviluppatore di driver controller ha la possibilità di definire una o più operazioni specifiche del controller per soddisfare i requisiti o le funzionalità speciali di un controller GPIO in una determinata piattaforma hardware.
Solo un driver di dispositivo periferico che riconosce le operazioni specifiche del controller supportate da un particolare tipo di hardware del controller GPIO può usare IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION richieste per eseguire queste operazioni. Un driver di dispositivo periferico che usa queste richieste per eseguire operazioni specifiche del controller in una piattaforma hardware rischia la perdita di compatibilità con altre piattaforme che non supportano queste operazioni.
Il significato del codice di controllo IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION è definito dallo sviluppatore del driver del controller GPIO. In genere, il driver controller usa questo codice di controllo per consentire ai driver di dispositivo periferici di eseguire operazioni specifiche dell'hardware sui pin GPIO a cui sono connessi i dispositivi.
Ad esempio, il buffer di input nella richiesta di IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION potrebbe contenere un codice di comando definito dal controller e un certo numero di parametri di input. Il driver del controller GPIO può o meno scrivere dati nel buffer di output, a seconda del codice del comando.
Il driver di dispositivo periferico invia questa richiesta di controllo di I/O all'oggetto file per il dispositivo GPIO di destinazione. L'oggetto file è una struttura FILE_OBJECT che rappresenta una connessione aperta a un set di pin nel controller GPIO. I driver del framework driver in modalità kernel (KMDF) usano un handle WDFIOTARGET per fare riferimento a questo oggetto file.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Supportato a partire da Windows 8. |
Intestazione | gpio.h |