Condividi tramite


GPIO_CLIENT_QUERY_ACTIVE_INTERRUPTS funzione di callback (gpioclx.h)

La funzione di callback degli eventi CLIENT_QueryActiveInterrupts esegue una query sullo stato di un set di pin di I/O per utilizzo generico (GPIO) configurati come input di interrupt.

Sintassi

GPIO_CLIENT_QUERY_ACTIVE_INTERRUPTS GpioClientQueryActiveInterrupts;

NTSTATUS GpioClientQueryActiveInterrupts(
  [in]      PVOID Context,
  [in, out] PGPIO_QUERY_ACTIVE_INTERRUPTS_PARAMETERS QueryActiveParameters
)
{...}

Parametri

[in] Context

Puntatore al contesto di dispositivo del driver del controller GPIO.

[in, out] QueryActiveParameters

Puntatore a una struttura GPIO_QUERY_ACTIVE_INTERRUPTS_PARAMETERS che, all'ingresso, descrive i pin di interrupt GPIO per la query e, all'uscita, contiene lo stato di interruzione attivo e abilitato di questi pin.

Valore restituito

La funzione CLIENT_QueryActiveInterrupts 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 eseguire una query su un set di pin GPIO configurati come input di richiesta di interrupt.

Il parametro QueryActiveParameters punta a una struttura GPIO_QUERY_ACTIVE_INTERRUPTS_PARAMETERS allocata dal chiamante. Il chiamante imposta i valori dei membri BankId e EnabledMask di questa struttura. La funzione CLIENT_QueryActiveInterrupts scrive nel membro ActiveMask della struttura.

All'immissione, i bit impostati nel membro EnabledMask devono corrispondere al set di interrupt attualmente abilitati nella banca. In caso di restituzione, i bit impostati nel membro ActiveMask devono corrispondere agli interrupt abilitati e attivi. Pertanto, se un bit in EnabledMask è zero, il bit corrispondente in ActiveMask deve essere zero.

Per registrare la CLIENT_QueryActiveInterrupts funzione di callback 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_QueryActiveInterrupts.

GpioClx chiama la funzione di callback CLIENT_QueryActiveInterrupts in PASSIVE_LEVEL o DIRQL, a seconda delle informazioni sul dispositivo fornite dalla funzione di callback CLIENT_QueryControllerBasicInformation a GpioClx. La funzione CLIENT_QueryControllerBasicInformation fornisce informazioni sul dispositivo sotto forma di struttura CLIENT_CONTROLLER_BASIC_INFORMATION . Se il flag MemoryMappedController bit viene impostato nel membro Flags di questa struttura, GpioClx chiama la funzione CLIENT_QueryActiveInterrupts in DIRQL, ovvero l'IRQL in cui viene eseguito l'ISR in GpioClx. In caso contrario, questa funzione viene chiamata in PASSIVE_LEVEL. Per altre informazioni su questo bit di flag, vedere Funzioni di callback GPIO facoltative e necessarie.

Esempio

Per definire una funzione di callback CLIENT_QueryActiveInterrupts, è necessario innanzitutto 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_QueryActiveInterrupts denominata MyEvtGpioQueryActiveInterrupts, usare il tipo di funzione GPIO_CLIENT_QUERY_ACTIVE_INTERRUPTS, come illustrato nell'esempio di codice seguente:

GPIO_CLIENT_QUERY_ACTIVE_INTERRUPTS MyEvtGpioQueryActiveInterrupts;

Implementare quindi la funzione di callback come indicato di seguito:

_Use_decl_annotations_
NTSTATUS
  MyEvtGpioQueryActiveInterrupts(
    PVOID Context,
    PGPIO_QUERY_ACTIVE_INTERRUPTS_PARAMETERS QueryActiveParameters
    )
{ ... }

Il tipo di funzione GPIO_CLIENT_QUERY_ACTIVE_INTERRUPTS è 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_QUERY_ACTIVE_INTERRUPTS 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 Vedere la sezione Osservazioni.

Vedi anche

CLIENT_CONTROLLER_BASIC_INFORMATION

CLIENT_QueryControllerBasicInformation

GPIO_CLIENT_REGISTRATION_PACKET

GPIO_CLX_RegisterClient

GPIO_QUERY_ACTIVE_INTERRUPTS_PARAMETERS