Metodo IMiniportWaveRTInputStream::GetReadPacket (portcls.h)
Restituisce informazioni sui dati acquisiti.
Sintassi
NTSTATUS GetReadPacket(
[out] ULONG *PacketNumber,
[out] DWORD *Flags,
[out] ULONG64 *PerformanceCounterValue,
[out] BOOL *MoreData
);
Parametri
[out] PacketNumber
Restituisce il numero di pacchetto relativo all'inizio dell'acquisizione.
[out] Flags
Riservato per uso futuro. Deve essere impostato su 0.
[out] PerformanceCounterValue
Restituisce il valore del contatore delle prestazioni corrispondente all'istante di campionamento del primo campione nel pacchetto.
[out] MoreData
Restituisce true se sono disponibili più dati immediatamente pronti. Il sistema operativo può facoltativamente chiamare nuovamente questa routine dopo l'elaborazione del pacchetto per ottenere le informazioni sul pacchetto successivo. Se il driver restituisce FALSE, l'acquisizione viene eseguita in tempo reale.
Valore restituito
GetReadPacket
restituisce STATUS_SUCCESS se la chiamata ha avuto esito positivo. In caso contrario, la funzione restituisce un codice di stato di errore appropriato.
STATUS_DEVICE_NOT_READY: il driver restituisce questo errore se non sono disponibili nuovi dati.
Osservazioni
Prima di leggere i dati audio acquisiti dal buffer WaveRT, il sistema operativo chiama questa routine per ottenere informazioni sui dati disponibili.
Il numero di pacchetto identifica un pacchetto all'interno del flusso. Viene reimpostato su zero quando il flusso è in KSSTATE_STOP. Il numero avanza con ogni buffer acquisito. Dal numero di pacchetto il sistema operativo può derivare la posizione del pacchetto all'interno del buffer WaveRT e può anche derivare la posizione del flusso del pacchetto rispetto all'inizio del flusso.
Le dimensioni del pacchetto sono le dimensioni del buffer WaveRT diviso per NotificationCount passato a IMiniportWaveRTStreamNotification::AllocateBufferWithNotification. Il sistema operativo può chiamare questa routine in qualsiasi momento. Nel normale funzionamento, il sistema operativo chiama questa routine dopo che il driver imposta l'evento di notifica del buffer o dopo che una chiamata precedente restituisce true per MoreData. Quando il sistema operativo chiama questa routine, il driver può presupporre che il sistema operativo abbia terminato la lettura di tutti i pacchetti precedenti. Se l'hardware ha acquisito dati sufficienti, il driver potrebbe scoppiare immediatamente il pacchetto completo successivo nel buffer WaveRT e impostare nuovamente l'evento del buffer. Nel caso dell'overflow di acquisizione (quando il sistema operativo non legge i dati abbastanza rapidamente) il driver audio potrebbe eliminare o sovrascrivere alcuni dati audio. Il driver audio elimina o sovrascrive prima i dati meno recenti, il driver audio può continuare ad avanzare il contatore dei pacchetti interno anche se il sistema operativo potrebbe non aver letto i dati.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile in Windows 10 e versioni successive. |
piattaforma di destinazione | Finestre |
intestazione | portcls.h |
IRQL | Livello passivo |