Condividi tramite


GPIO_CLIENT_PREPARE_CONTROLLER funzione di callback (gpioclx.h)

La funzione di callback degli eventi CLIENT_PrepareController esegue tutte le operazioni necessarie per rendere il controller GPIO (General-Purpose I/O) pronto per l'accesso da parte del driver del controller GPIO.

Sintassi

GPIO_CLIENT_PREPARE_CONTROLLER GpioClientPrepareController;

NTSTATUS GpioClientPrepareController(
  [in] WDFDEVICE Device,
  [in] PVOID Context,
  [in] WDFCMRESLIST ResourcesRaw,
  [in] WDFCMRESLIST ResourcesTranslated
)
{...}

Parametri

[in] Device

Handle WDFDEVICE per l'oggetto dispositivo framework che rappresenta il controller GPIO.

[in] Context

Puntatore al contesto di dispositivo del driver del controller GPIO.

[in] ResourcesRaw

Handle WDFCMRESLIST in una raccolta di oggetti risorsa framework. Questa raccolta identifica le risorse hardware non elaborate (relative al bus) assegnate dal manager Plug and Play (PnP) al dispositivo controller GPIO.

[in] ResourcesTranslated

Handle WDFCMRESLIST in una raccolta di oggetti risorsa framework. Questa raccolta identifica le risorse hardware tradotte (fisiche del sistema) assegnate dal gestore PnP al dispositivo controller GPIO.

Valore restituito

La funzione CLIENT_PrepareController 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 inizializzare le risorse hardware necessarie per il driver del controller GPIO in modo che possa accedere al dispositivo controller GPIO.

I parametri ResourcesRaw e ResourcesTranslated sono handle per elenchi di risorse non elaborate e tradotte. Questi elenchi descrivono le risorse hardware assegnate dal gestore PnP al dispositivo controller GPIO specificato dal parametro Device . Per altre informazioni, vedere Risorse non elaborate e tradotte.

Durante il callback CLIENT_PrepareController , il driver del controller GPIO può acquisire le risorse hardware richieste dall'elenco ResourcesRaw o ResourcesTranslated . Se il dispositivo controller GPIO è mappato alla memoria, il driver deve mappare l'intervallo o gli intervalli di indirizzi di memoria relativi al bus assegnati ai registri hardware del dispositivo agli indirizzi virtuali di sistema. Per altre informazioni, vedere Mapping di indirizzi Bus-Relative a indirizzi virtuali.

Se il controller GPIO non è mappato alla memoria, le risorse hardware del driver contengono un ID connessione anziché un intervallo di memoria. Il driver usa questo ID per aprire una connessione logica al controller GPIO e invia richieste di I/O tramite questa connessione per accedere ai registri del controller.

GpioClx si connette a (e versioni successive si disconnette da) qualsiasi risorsa di interrupt assegnata dal gestore PnP al controller GPIO. Se GpioClx riceve una risorsa di interrupt di questo tipo, non rimuove questa risorsa interrupt dagli elenchi di risorse che passa alla funzione di callback CLIENT_PrepareController. Tuttavia, il driver del controller GPIO non deve tentare di connettersi a (o versione successiva disconnettersi da) qualsiasi risorsa di interrupt trovata in questi elenchi.

La funzione di callback degli eventi CLIENT_ReleaseController esegue operazioni necessarie quando il dispositivo controller GPIO non è più accessibile. Durante questo callback, il driver del controller GPIO deve rilasciare tutte le risorse hardware acquisite durante il callback CLIENT_PrepareController precedente.

Per registrare la funzione di callback del driver CLIENT_PrepareController , 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_PrepareController.

Anche se la funzione di callback CLIENT_PrepareController viene chiamata in IRQL = PASSIVE_LEVEL, non è consigliabile rendere questa funzione visualizzabile. Il callback CLIENT_PrepareController è nel percorso di temporizzazione critico per il ripristino dell'alimentazione nei dispositivi nella piattaforma hardware e, per motivi di prestazioni, non deve essere ritardato da errori di pagina.

Esempio

Per definire una funzione di callback CLIENT_PrepareController, è 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_PrepareController denominata MyEvtGpioPrepareController, usare il tipo di funzione GPIO_CLIENT_PREPARE_CONTROLLER, come illustrato nell'esempio di codice seguente:

GPIO_CLIENT_PREPARE_CONTROLLER MyEvtGpioPrepareController;

Implementare quindi la funzione di callback come indicato di seguito:

_Use_decl_annotations_
NTSTATUS
  MyEvtGpioPrepareController(
    WDFDEVICE Device,
    PVOID Context,
    WDFCMRESLIST ResourcesRaw,
    WDFCMRESLIST ResourcesTranslated
)
{ ... }

Il tipo di funzione GPIO_CLIENT_PREPARE_CONTROLLER è 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_PREPARE_CONTROLLER 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

CLIENT_ReleaseController

GPIO_CLIENT_REGISTRATION_PACKET

GPIO_CLX_RegisterClient