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 utilizzi futuri. Deve essere 0.
[out] PerformanceCounterValue
Restituisce il valore del contatore delle prestazioni corrispondente all'istante di campionamento del primo esempio nel pacchetto.
[out] MoreData
Restituisce TRUE se sono pronti immediatamente altri dati. Il sistema operativo può 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 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.
Commenti
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. Questo valore viene reimpostato su zero quando il flusso si trova in KSSTATE_STOP. Il numero avanza con ogni buffer acquisito. Dal numero di pacchetti il sistema operativo può derivare la posizione del pacchetto all'interno del buffer WaveRT e può anche derivare la posizione di flusso del pacchetto rispetto all'inizio del flusso.
La dimensione del pacchetto è la dimensione del buffer WaveRT divisa da NotificationCount passata a IMiniportWaveRTStreamNotification::AllocateBufferWithNotification. Il sistema operativo può chiamare questa routine in qualsiasi momento. In un'operazione normale, il sistema operativo chiama questa routine dopo che il driver imposta l'evento di notifica del buffer o dopo una chiamata precedente restituisce true per MoreData. Quando il sistema operativo chiama questa routine, il driver può presumere che il sistema operativo abbia completato la lettura di tutti i pacchetti precedenti. Se l'hardware ha acquisito dati sufficienti, il driver potrebbe immediatamente scoppiare il pacchetto completo successivo nel buffer WaveRT e impostare di nuovo l'evento buffer. Nel caso dell'overflow di acquisizione (quando il sistema operativo non legge i dati abbastanza rapidamente) il driver audio può eliminare o sovrascrivere alcuni dati audio. Il driver audio elimina o sovrascrive prima i dati meno recenti, il driver audio può continuare a avanzare il contatore dei pacchetti interni anche se il sistema operativo potrebbe non aver letto i dati.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile in Windows 10 e versioni successive. |
Piattaforma di destinazione | Windows |
Intestazione | portcls.h |
IRQL | Livello passivo |