EVT_SERCX_RECEIVE funzione di callback (sercx.h)

La funzione di callback degli eventi EvtSerCxReceive prepara il dispositivo controller seriale (UART) per eseguire un'operazione di lettura (ricezione).

Sintassi

EVT_SERCX_RECEIVE EvtSercxReceive;

NTSTATUS EvtSercxReceive(
  [in] WDFDEVICE Device,
  [in] size_t Length
)
{...}

Parametri

[in] Device

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

[in] Length

Numero di byte da ricevere. Il driver controller può usare questo valore come suggerimento per decidere se usare PIO o DMA per eseguire il trasferimento dei dati.

Valore restituito

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

Commenti

L'estensione del framework seriale (SerCx) chiama questa funzione per configurare l'hardware del controller per la ricezione dei dati. Se necessario, la funzione EvtSerCxReceive può abilitare gli interrupt.

La funzione EvtSerCxReceive non legge necessariamente i dati di input dal buffer FIFO di ricezione. A seconda dell'hardware del controller seriale o del tipo di trasferimento, questa funzione potrebbe configurare un'operazione DMA per leggere i dati oppure pianificare una funzione DPC di trasmissione/ricezione per leggere i dati. Il driver del controller seriale implementa questa funzione DPC per ricevere dati dal controller e per trasmettere i dati al controller seriale. Durante il DPC, la funzione DPC determina se i dati sono disponibili per la ricezione e, in tal caso, utilizza PIO per leggere i dati dalla ricezione FIFO nel controller seriale.

Se la ricezione FIFO nel controller seriale è vuota o quasi vuota, ma l'interruzione del contrassegno ad acqua elevata di FIFO è abilitata, la routine DPC può semplicemente restituire. Successivamente, l'ISR del driver controller può pianificare l'esecuzione della routine DPC e questa routine può leggere altri dati dalla ricezione FIFO.

Per registrare una funzione di callback EvtSerCxReceive , il driver del controller chiama il metodo SerCxInitialize durante il callback EvtDriverDeviceAdd .

Esempio

Il tipo di funzione per questo callback viene dichiarato in Sercx.h, come indicato di seguito.

typedef NTSTATUS
  EVT_SERCX_RECEIVE(
    __in WDFDEVICE Device
    );

Per definire una funzione di callback EvtSerCxReceive denominata MyEvtSerCxReceive, è necessario innanzitutto fornire una dichiarazione di funzione richiesta da Static Driver Verifier (SDV) e altri strumenti di verifica, come indicato di seguito.

EVT_SERCX_RECEIVE MyEvtSerCxReceive;

Implementare quindi la funzione di callback come indicato di seguito.

NTSTATUS
  MyEvtSerCxReceive(
    __in WDFDEVICE Device
    )
{ ... }

Per altre informazioni sui requisiti SDV per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo per i driver KMDF.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 8.
Piattaforma di destinazione Desktop
Intestazione sercx.h
IRQL Chiamato in IRQL <= DISPATCH_LEVEL

Vedi anche

EvtDriverDeviceAdd

SerCxInitialize

WdfDpcEnqueue