GPIO_CLIENT_ENABLE_INTERRUPT funzione di callback (gpioclx.h)

La funzione di callback degli eventi CLIENT_EnableInterrupt abilita gli interrupt su un pin GPIO (General Purpose I/O) configurato come input di interrupt.

Sintassi

GPIO_CLIENT_ENABLE_INTERRUPT GpioClientEnableInterrupt;

NTSTATUS GpioClientEnableInterrupt(
  [in] PVOID Context,
  [in] PGPIO_ENABLE_INTERRUPT_PARAMETERS EnableParameters
)
{...}

Parametri

[in] Context

Puntatore al contesto di dispositivo del driver del controller GPIO.

[in] EnableParameters

Puntatore a una struttura GPIO_ENABLE_INTERRUPT_PARAMETERS che specifica un pin GPIO e descrive gli attributi di interrupt di questo pin.

Valore restituito

La funzione CLIENT_EnableInterrupt restituisce STATUS_SUCCESS se la chiamata ha esito positivo. In caso contrario, restituisce un codice di errore appropriato.

Commenti

Questa funzione di callback viene implementata dal driver del controller GPIO. L'estensione del framework GPIO (GpioClx) chiama questa funzione per abilitare gli interrupt su un pin GPIO configurato come input di richiesta di interrupt.

Per registrare la funzione di callback CLIENT_EnableInterrupt del driver, chiamare il metodo GPIO_CLX_RegisterClient . Questo metodo accetta, come parametro di input, un puntatore a una struttura GPIO_CLIENT_REGISTRATION_PACKET che contiene un puntatore a funzione CLIENT_EnableInterrupt .

GpioClx chiama sempre le funzioni di callback CLIENT_EnableInterrupt e CLIENT_DisableInterrupt in IRQL = PASSIVE_LEVEL. Tuttavia, se i registri GPIO sono mappati alla memoria, GpioClx chiama le altre funzioni di callback correlate agli interrupt dal relativo ISR in DIRQL. In questo caso, le funzioni CLIENT_EnableInterrupt e CLIENT_DisableInterrupt devono usare il blocco di interrupt GPIO per sincronizzare le operazioni correlate agli interrupt con l'ISR. Per altre informazioni, vedere Interrupt Synchronization for GPIO Controller Drivers.For more information, see Interrupt Synchronization for GPIO Controller Drivers.

Esempio

Per definire una funzione di callback CLIENT_EnableInterrupt, è 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_EnableInterrupt denominata MyEvtGpioEnableInterrupt, usare il tipo di funzione GPIO_CLIENT_ENABLE_INTERRUPT, come illustrato nell'esempio di codice seguente:

GPIO_CLIENT_ENABLE_INTERRUPT MyEvtGpioEnableInterrupt;

Implementare quindi la funzione di callback come indicato di seguito:

_Use_decl_annotations_
NTSTATUS
  MyEvtGpioEnableInterrupt(
    PVOID Context,
    PGPIO_ENABLE_INTERRUPT_PARAMETERS InterruptParameters
    )
{ ... }

Il tipo di funzione GPIO_CLIENT_ENABLE_INTERRUPT è 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 garantisce che vengano utilizzate le annotazioni applicate al tipo di funzione GPIO_CLIENT_ENABLE_INTERRUPT 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