Bagikan melalui


Metode IMiniportWaveRTOutputStream::SetWritePacket (portcls.h)

SetWritePacket memberi tahu driver bahwa OS telah menulis data yang valid ke buffer WaveRT.

Sintaks

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

Parameter

[in] PacketNumber

Jumlah paket yang ditulis oleh OS ke buffer WaveRT.

[in] Flags

Atribut tambahan yang terkait dengan paket atau aliran.

KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM - Bendera ini menunjukkan bahwa paket ini mewakili akhir aliran data.

[in] EosPacketLength

Panjang paket EOS jika KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM ditentukan dalam Bendera. Nol adalah nilai yang valid. Jika KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM tidak ditentukan dalam Bendera, parameter ini diabaikan.

Mengembalikan nilai

SetWritePacket mengembalikan STATUS_SUCCESS jika panggilan berhasil. Jika tidak, fungsi mengembalikan kode status kesalahan yang sesuai.

STATUS_DATA_LATE_ERROR – Driver mengembalikan kesalahan ini jika OS melewati nomor paket yang telah ditransfer atau saat ini sedang ditransfer. Dalam hal ini, kondisi kesalahan telah terjadi. Driver dapat secara opsional menggunakan beberapa data dari paket atau terus memutar data yang sebelumnya ditulis ke nomor paket ini.

STATUS_DATA_OVERRUN – Driver mengembalikan kesalahan ini jika OS melewati nomor paket yang lebih tinggi dari yang dapat disimpan di buffer WaveRT. Dalam hal ini, kondisi kesalahan telah terjadi. Driver dapat secara opsional mengabaikan data dalam paket.

STATUS_INVALID_DEVICE_STATE – Driver mengembalikan kesalahan ini jika OS memanggil rutinitas ini setelah sebelumnya mengatur bendera KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM.

STATUS_INVALID_PARAMETER – Driver mengembalikan kesalahan ini jika menemukan parameter lain yang tidak valid, selain dari kasus tertentu untuk status kesalahan lainnya. Ini termasuk nilai Bendera apa pun yang tidak secara khusus didefinisikan di atas.

Keterangan

Setelah OS memanggil rutinitas ini, driver dapat secara opsional menggunakan informasi yang disediakan untuk mengoptimalkan transfer perangkat keras. Misalnya, driver mungkin mengoptimalkan transfer DMA, atau perangkat keras program untuk berhenti mentransfer di akhir paket yang ditentukan jika OS tidak memanggil rutinitas ini lagi untuk memberi tahu driver paket lain. Ini dapat mengurangi efek yang dapat didengar dari aliran bawah, misalnya memperkenalkan celah yang dapat didengar daripada mengulangi buffer melingkar. Namun driver masih berkewajiban untuk meningkatkan penghitung paket internal dan peristiwa pemberitahuan sinyal pada tingkat real time nominal.

Kecuali ketika OS menentukan bendera KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM, ukuran paket adalah ukuran buffer WaveRT yang dibagi dengan NotificationCount yang diteruskan ke IMiniportWaveRTStreamNotification::AllocateBufferWithNotification.

Bergantung pada kemampuan perangkat keras, jika bendera KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM ditentukan, driver dapat mengisi sebagian buffer WaveRT yang mengikuti paket EOS jika perangkat keras mentransfer data di luar posisi EOS.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Windows 10 dan yang lebih baru.
Target Platform Windows
Header portcls.h
IRQL Tingkat pasif

Lihat juga

IMiniportWaveRTOutputStream