Condividi tramite


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 utilizzato per archiviare i dati ricevuti.

[out, optional] BufferSize

Dimensioni, 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) mantiene questo buffer per contenere i dati ricevuti dal driver del controller seriale quando non viene elaborata alcuna richiesta di lettura dal client. Questa funzione fornisce le informazioni necessarie al driver per eseguire accuratamente 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 - Byteused. 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 sale al di sopra di 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 richiesta di controllo di I/O precedente 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 il driver EvtSerCxReceive funzione di callback 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.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile a partire da Windows 8.
piattaforma di destinazione Universale
intestazione sercx.h
IRQL <= DISPATCH_LEVEL

Vedere anche

EvtSerCxReceive

IOCTL_SERIAL_SET_HANDFLOW