EVT_SERCX_TRANSMIT funzione di callback (sercx.h)

La funzione di callback dell'evento EvtSerCxTransmit prepara il dispositivo controller seriale (UART) per eseguire un'operazione di scrittura (trasmissione).

Sintassi

EVT_SERCX_TRANSMIT EvtSercxTransmit;

NTSTATUS EvtSercxTransmit(
  [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 trasmettere. Il driver del controller può usare questo valore come hint per decidere se usare PIO o DMA per eseguire il trasferimento dei dati.

Valore restituito

La funzione EvtSerCxTransmit 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 seriale per trasmettere i dati. Se necessario, la funzione EvtSerCxTransmit può abilitare gli interruzioni.

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

Se la trasmissione FIFO nel controller seriale è piena o quasi completa, ma l'interruzione con segno di acqua bassa di FIFO è abilitata, la funzione EvtSerCxTransmit può semplicemente restituire. Successivamente, l'ISR del driver controller può pianificare la funzione DPC di trasmissione/ricezione da eseguire e questa funzione può trasferire più dati di output alla trasmissione FIFO.

Per registrare una funzione di callback EvtSerCxTransmit , 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_TRANSMIT(
    __in WDFDEVICE Device
    );

Per definire una funzione di callback EvtSerCxTransmit denominata MyEvtSerCxTransmit, è prima necessario specificare una dichiarazione di funzione che gli strumenti di verifica del driver statico (SDV) e altri strumenti di verifica richiedono, come indicato di seguito.

EVT_SERCX_TRANSMIT MyEvtSerCxTransmit;

Implementare quindi la funzione di callback come indicato di seguito.

NTSTATUS
  MyEvtSerCxTransmit(
    __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 Chiamata in IRQL <= DISPATCH_LEVEL

Vedi anche

EvtDriverDeviceAdd

SerCxInitialize

WdfDpcEnqueue