Condividi tramite


Metodo IMiniportWaveRTOutputStream::GetPacketCount (portcls.h)

GetPacketCount restituisce il conteggio (basato su 1) dei pacchetti completamente trasferiti dal buffer WaveRT all'hardware.

Sintassi

NTSTATUS GetPacketCount(
  [out] ULONG *pPacketCount
);

Parametri

[out] pPacketCount

pPacketCount restituisce il numero di pacchetti completamente trasferiti dal buffer WaveRT all'hardware.

Valore restituito

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

Commenti

Dal conteggio dei pacchetti, il sistema operativo può derivare la posizione di flusso dei pacchetti che scrive nel buffer WaveRT. Il sistema operativo può anche derivare la posizione del buffer WaveRT del pacchetto successivo da scrivere all'interno del buffer WaveRT. Per i driver WaveRT, il driver segnala un singolo evento di notifica mentre trasferisce i dati da ogni pacchetto del buffer WaveRT. Pertanto l'evento da solo non può indicare quale pacchetto all'interno del buffer WaveRT viene trasferito. Nell'operazione normale questo non è un problema, ma nella correzione dei casi di sottoflow è più facilmente ottenuto eseguendo una query sul conteggio dei pacchetti da cui il sistema operativo può determinare quale pacchetto scrivere successivamente.

Il packetCount restituito indica il conteggio (basato su 1) dei pacchetti completamente trasferiti dal buffer WaveRT all'hardware. In questo modo, il sistema operativo può determinare il numero basato su 0 del pacchetto attualmente trasferito e assicurarsi che scrive prima di tale pacchetto. Ad esempio, se il conteggio dei pacchetti è 5, 5 pacchetti sono stati completamente trasferiti. Vale a dire, i pacchetti 0-4 sono stati completamente trasferiti. Pertanto il pacchetto 5 è in corso e il sistema operativo deve scrivere pacchetti 6. Se il conteggio delle notifiche per il buffer WaveRT è 2, il pacchetto 6 sarà all'interno del buffer WaveRT (perché 6 modulo 2 è 0 e 0 volte la dimensione del pacchetto è 0).

Il sistema operativo può ottenere questa proprietà in qualsiasi momento. Tuttavia, in genere ottiene questa proprietà solo periodicamente o dopo che il driver restituisce un errore di flusso di dati (STATUS_DATA_LATE_ERROR, STATUS_DATA_OVERRUN) da SetWritePacket() per risincronizzare con il driver.

Il driver deve reimpostare il numero di pacchetti su 0 quando il flusso è in KSSTATE_STOP.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows 10 e versioni successive.
Piattaforma di destinazione Windows
Intestazione portcls.h
IRQL Livello passivo

Vedi anche

IMiniportWaveRTOutputStream