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 avuto esito positivo. In caso contrario, la funzione restituisce un codice di stato di errore appropriato.
Osservazioni
Dal numero di pacchetti, il sistema operativo può derivare la posizione del 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 durante il trasferimento dei dati da ogni pacchetto del buffer WaveRT. Pertanto, l'evento da solo non può indicare quale pacchetto all'interno del buffer WaveRT viene trasferito. Nel normale funzionamento questo non è un problema, ma nella correzione dei casi di underflow è più facile ottenere eseguendo una query sul numero di pacchetti da cui il sistema operativo può determinare il pacchetto da scrivere successivamente.
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 in base 0 del pacchetto attualmente trasferito e assicurarsi che scriva prima di tale pacchetto. Ad esempio, se il numero di pacchetti è 5, 5 pacchetti sono stati trasferiti completamente. Ovvero, i pacchetti 0-4 sono stati trasferiti completamente. Di conseguenza, il pacchetto 5 è in corso e il sistema operativo deve scrivere il pacchetto 6. Se il conteggio delle notifiche per il buffer WaveRT è 2, il pacchetto 6 sarà all'offset 0 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 del 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.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile in Windows 10 e versioni successive. |
piattaforma di destinazione | Finestre |
intestazione | portcls.h |
IRQL | Livello passivo |