Metodo IMiniportWaveRTOutputStream::SetWritePacket (portcls.h)

SetWritePacket informa il driver che il sistema operativo ha scritto dati validi nel buffer WaveRT.

Sintassi

NTSTATUS SetWritePacket(
  [in] ULONG PacketNumber,
  [in] DWORD Flags,
  [in] ULONG EosPacketLength
);

Parametri

[in] PacketNumber

Numero del pacchetto scritto dal sistema operativo nel buffer WaveRT.

[in] Flags

Attributi aggiuntivi correlati al pacchetto o al flusso.

KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM : questo flag indica che questo pacchetto rappresenta la fine del flusso di dati.

[in] EosPacketLength

Lunghezza del pacchetto EOS se KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM è specificata in Flag. Zero è un valore valido. Se KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM non è specificato in Flag, questo parametro viene ignorato.

Valore restituito

SetWritePacket restituisce STATUS_SUCCESS se la chiamata ha esito positivo. In caso contrario, la funzione restituisce un codice di stato di errore appropriato.

STATUS_DATA_LATE_ERROR: il driver restituisce questo errore se il sistema operativo passa un numero di pacchetto già trasferito o è attualmente in corso il trasferimento. In questo caso, si è verificata una condizione di glitch. Il driver può facoltativamente usare alcuni dei dati del pacchetto o continuare a riprodurre i dati scritti in precedenza in questo numero di pacchetti.

STATUS_DATA_OVERRUN: il driver restituisce questo errore se il sistema operativo passa un numero di pacchetto superiore a quello che può essere archiviato nel buffer WaveRT. In questo caso, si è verificata una condizione di glitch. Il driver può facoltativamente ignorare i dati nel pacchetto.

STATUS_INVALID_DEVICE_STATE: il driver restituisce questo errore se il sistema operativo chiama questa routine dopo un'impostazione precedente del flag di KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM.

STATUS_INVALID_PARAMETER: il driver restituisce questo errore se trova qualsiasi altro parametro non valido, oltre ai casi specifici per altri stati di errore. Ciò include tutti i valori flag non definiti in modo specifico sopra.

Commenti

Dopo che il sistema operativo chiama questa routine, il driver può usare facoltativamente le informazioni fornite per ottimizzare il trasferimento hardware. Ad esempio, il driver potrebbe ottimizzare i trasferimenti DMA o l'hardware del programma per arrestare il trasferimento alla fine del pacchetto specificato nel caso in cui il sistema operativo non chiami nuovamente questa routine per informare il driver di un altro pacchetto. Ciò può attenuare gli effetti udibili del sottoflow, ad esempio introducendo un gap udibile anziché ripetere un buffer circolare. Tuttavia, il driver è ancora obbligato a aumentare i relativi contatori di pacchetti interni e segnalare gli eventi di notifica a una velocità in tempo reale nominale.

Tranne quando il sistema operativo specifica il flag KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM, la dimensione del pacchetto è la dimensione del buffer WaveRT divisa da NotificationCount passata a IMiniportWaveRTStreamNotification::AllocateBufferWithNotification.

A seconda delle funzionalità hardware, se viene specificato il flag di KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM, il driver può riempire in silenzio una parte del buffer WaveRT che segue il pacchetto EOS nel caso in cui i dati hardware trasferiscono i dati oltre la posizione EOS.

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

IMiniportWaveRTOutputStream