Funzione SerCxGetRingBufferUtilization (sercx.h)

Il metodo SerCxGetRingBufferUtilization consente al driver del controller seriale di determinare la quantità di buffer circolare type-ahead attualmente riempita dai dati ricevuti dalla porta seriale.

Sintassi

void SerCxGetRingBufferUtilization(
  [in]            WDFDEVICE Device,
  [out, optional] PULONG    BytesUsed,
  [out, optional] PULONG    BufferSize
);

Parametri

[in] Device

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

[out, optional] BytesUsed

Numero di byte di dati non letti attualmente contenuti nel buffer circolare type-ahead usato per archiviare i dati ricevuti.

[out, optional] BufferSize

Dimensione, in byte, del buffer circolare type-ahead usato per archiviare i dati ricevuti.

Valore restituito

nessuno

Osservazioni

Il driver del controller seriale chiama questa funzione per determinare la quantità di spazio di archiviazione disponibile nel buffer circolare type-ahead. L'estensione del controller seriale (SerCx) gestisce questo buffer per contenere i dati ricevuti dal driver del controller seriale dalla porta seriale quando non viene elaborata alcuna richiesta di lettura dal client. Questa funzione fornisce le informazioni richieste dal driver per eseguire in modo accurato il controllo del flusso software (XON/XOFF).

Per implementare il controllo del flusso software, il driver del controller seriale monitora la quantità di spazio disponibile nel buffer circolare type-ahead. Lo spazio disponibile, in byte, è uguale a BufferSize - BytesUsed. Quando lo spazio disponibile scende al di sotto di una soglia specificata dal client, XoffLimit, il driver del controller seriale trasmette un carattere XOFF per indicare alla porta di trasmissione di sospendere la trasmissione. Successivamente, quando lo spazio disponibile supera una soglia specificata dal client, XonLimit, il driver trasmette un carattere XON per indicare alla porta di trasmissione di riprendere la trasmissione. In genere, il client ha specificato queste due soglie in una precedente richiesta di controllo di I/O IOCTL_SERIAL_SET_HANDFLOW.

SerCx valuta lo spazio disponibile nel buffer circolare type-ahead nel contesto delle impostazioni correnti del controllo del flusso e dell'handshaking. Dopo che il buffer circolare type-ahead svuota completamente, SerCx chiama la funzione di callback EvtSerCxReceive del driver in modo che il driver possa inviare un XON e riprendere la ricezione dei dati. La funzione EvtSerCxReceive può chiamare SerCxGetRingBufferUtilization per determinare se inviare un XON.

Requisiti

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

Vedi anche

EvtSerCxReceive

IOCTL_SERIAL_SET_HANDFLOW