GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION funzione di callback (gpioclx.h)

La funzione di callback degli eventi CLIENT_ControllerSpecificFunction esegue un'operazione specifica per un particolare controller di I/O per utilizzo generico (GPIO).

Sintassi

GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION GpioClientControllerSpecificFunction;

NTSTATUS GpioClientControllerSpecificFunction(
  [in]      PVOID Context,
  [in, out] PGPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS Parameters
)
{...}

Parametri

[in] Context

Puntatore al contesto di dispositivo del driver del controller GPIO.

[in, out] Parameters

Puntatore a una struttura GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS che contiene i buffer di input e output per l'operazione specifica del controller.

Valore restituito

La funzione CLIENT_ControllerSpecificFunction restituisce STATUS_SUCCESS se la chiamata ha esito positivo. I valori restituiti possibili includono i codici di errore seguenti.

Codice restituito Descrizione
STATUS_NOT_SUPPORTED
Il controller GPIO non supporta l'operazione specificata dai parametri di input.
STATUS_BUFFER_TOO_SMALL
Le dimensioni del buffer di input o del buffer di output sono troppo piccole.

Commenti

Come opzione, un driver del controller GPIO può supportare IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION richieste. Questo tipo di richiesta di controllo I/O (IOCTL) esegue operazioni specifiche del controller per il vantaggio dei driver di dispositivo periferici che richiedono queste operazioni. Per supportare questo IOCTL, un driver del controller GPIO implementa una funzione CLIENT_ControllerSpecificFunction .

L'estensione del framework GPIO (GpioClx) supporta la funzione CLIENT_ControllerSpecificFunction per soddisfare le esigenze specifiche di determinate piattaforme hardware. I driver di controller GPIO tipici non implementano questa funzione. Un driver di dispositivo periferico che usa IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION richieste per eseguire un'operazione specifica dell'hardware in una piattaforma rischia la perdita di compatibilità con altre piattaforme che non supportano questa operazione.

In genere, la funzione CLIENT_ControllerSpecificFunction programma il controller GPIO per eseguire un'operazione specifica dell'hardware su un set di pin GPIO. I parametri di input e output per questa operazione vengono definiti dallo sviluppatore per il driver del controller GPIO. Solo un driver di dispositivo periferico che riconosce le operazioni specifiche implementate da un driver del controller GPIO può richiedere queste operazioni.

Quando GpioClx riceve una richiesta di IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION , verifica se il driver del controller GPIO ha implementato una funzione CLIENT_ControllerSpecificFunction . In tal caso, GpioClx copia le descrizioni dei buffer di input e output da IOCTL a una struttura GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS e passa un puntatore a questa struttura come parametro alla funzione CLIENT_ControllerSpecificFunction . Se i valori dei parametri nella struttura GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS sono validi, la funzione esegue l'operazione richiesta e restituisce STATUS_SUCCESS.

Se GpioClx riceve una richiesta di IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION e il driver del controller GPIO non implementa una funzione CLIENT_ControllerSpecificFunction , GpioClx completa L'IOCTL con il codice di errore STATUS_NOT_IMPLEMENTED.

Esempio

Per definire una funzione di callback CLIENT_ControllerSpecificFunction, è innanzitutto necessario fornire una dichiarazione di funzione che identifica il tipo di funzione di callback che si sta definendo. Windows fornisce un set di tipi di funzione di callback per i driver. La dichiarazione di una funzione tramite i tipi di funzione di callback consente di analizzare il codice per i driver, l'SDV ( Static Driver Verifier ) e altri strumenti di verifica di trovare errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.

Ad esempio, per definire una funzione di callback CLIENT_ControllerSpecificFunction denominata MyEvtGpioControllerSpecificFunction, usare il tipo di funzione GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION, come illustrato nell'esempio di codice seguente:

GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION MyEvtGpioControllerSpecificFunction;

Implementare quindi la funzione di callback come indicato di seguito:

_Use_decl_annotations_
NTSTATUS
  MyEvtGpioControllerSpecificFunction(
    PVOID Context,
    PGPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS Parameters
    )
{ ... }

Il tipo di funzione GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION è definito nel file di intestazione Gpioclx.h. Per identificare in modo più accurato gli errori quando si eseguono gli strumenti di analisi del codice, assicurarsi di aggiungere l'annotazione Use_decl_annotations alla definizione della funzione. L'annotazione Use_decl_annotations assicura che vengano utilizzate le annotazioni applicate al tipo di funzione GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo di funzione per i driver KMDF. Per altre informazioni sulle Use_decl_annotations, vedere Annotazione del comportamento della funzione.

Requisiti

Requisito Valore
Client minimo supportato Supportato a partire da Windows 8.
Piattaforma di destinazione Desktop
Intestazione gpioclx.h
IRQL Chiamato a PASSIVE_LEVEL.

Vedi anche

GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS

IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION