Condividi tramite


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

Vedi anche

IMiniportWaveRTInputStream