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 |