PALLOCATE_RENDER_DMA_ENGINE fungsi panggilan balik (hdaudio.h)

Rutinitas mengalokasikan AllocateRenderDmaEngine mesin DMA untuk aliran render.

Jenis penunjuk fungsi untuk AllocateRenderDmaEngine rutinitas didefinisikan sebagai berikut.

Sintaks

PALLOCATE_RENDER_DMA_ENGINE PallocateRenderDmaEngine;

NTSTATUS PallocateRenderDmaEngine(
  [in]  PVOID _context,
  [in]  PHDAUDIO_STREAM_FORMAT StreamFormat,
  [in]  BOOLEAN Stripe,
  [out] PHANDLE Handle,
  [out] PHDAUDIO_CONVERTER_FORMAT ConverterFormat
)
{...}

Parameter

[in] _context

Menentukan nilai konteks dari anggota Konteks struktur HDAUDIO_BUS_INTERFACE,HDAUDIO_BUS_INTERFACE_V2, atau HDAUDIO_BUS_INTERFACE_BDL.

[in] StreamFormat

Menentukan format aliran yang diminta. Parameter ini menunjuk ke struktur jenis HDAUDIO_STREAM_FORMAT yang dialokasikan pemanggil yang menentukan format data untuk aliran.

[in] Stripe

Menentukan apakah akan mengaktifkan striping. Jika TRUE, rutinitas memungkinkan striping dalam transfer DMA. Jika FALSE, striping dinonaktifkan.

[out] Handle

Mengambil handel ke mesin DMA. Parameter ini menunjuk ke variabel HANDLE yang dialokasikan penelepon tempat rutin menulis handel yang mengidentifikasi mesin DMA.

[out] ConverterFormat

Mengambil format pengonversi. Parameter ini menunjuk ke struktur jenis HDAUDIO_CONVERTER_FORMAT yang dialokasikan penelepon tempat rutin menulis format yang dikodekan.

Nilai kembali

AllocateRenderDmaEngine mengembalikan STATUS_SUCCESS jika panggilan berhasil dalam mencairkan mesin DMA. Jika tidak, rutinitas mengembalikan kode kesalahan yang sesuai. Tabel berikut ini memperlihatkan beberapa kemungkinan kode kesalahan pengembalian.

Menampilkan kode Deskripsi
STATUS_BUFFER_TOO_SMALL
Menunjukkan bahwa mesin DMA tidak dapat mengalokasikan penyimpanan FIFO internal yang memadai untuk mendukung format aliran yang diminta.
STATUS_INSUFFICIENT_RESOURCES
Menunjukkan bahwa tidak ada mesin DMA yang tersedia atau permintaan melebihi sumber daya bandwidth yang tersedia.
STATUS_INVALID_PARAMETER
Menunjukkan bahwa salah satu nilai parameter salah (nilai parameter tidak valid atau penunjuk buruk).

Keterangan

Rutinitas ini mengalokasikan mesin DMA render dan menentukan format data untuk aliran. Jika berhasil, rutin menghasilkan handel yang kemudian digunakan pemanggil untuk mengidentifikasi mesin DMA.

Rutin AllocateRenderDmaEngine mencadangkan sumber daya perangkat keras (mesin DMA) tetapi tidak mengonfigurasi perangkat keras DMA. Setelah memanggil rutinitas ini untuk memesan mesin DMA, driver fungsi harus menetapkan buffer DMA ke mesin DMA dan mengonfigurasi mesin untuk menggunakan buffer:

  • Jika menggunakan versi HDAUDIO_BUS_INTERFACE HD Audio DDI, driver fungsi memanggil rutinitas AllocateDmaBuffer agar driver bus HD Audio mengalokasikan buffer data untuk transfer DMA dan menyiapkan mesin DMA untuk menggunakan buffer.
  • Jika menggunakan versi HDAUDIO_BUS_INTERFACE_BDL DDI, driver fungsi memanggil AllocateContiguousDmaBuffer untuk mengalokasikan buffer DMA dan memanggil rutinitas SetupDmaEngineWithBdl untuk menyiapkan mesin DMA untuk menggunakan buffer.
Parameter streamFormat menentukan format data untuk aliran pengambilan. Mengikuti panggilan ke AllocateRenderDmaEngine, format aliran dapat diubah dengan memanggil ChangeBandwidthAllocation.

Parameter stripe menentukan apakah mesin DMA menggunakan striping untuk mempercepat transfer data. Untuk informasi selengkapnya, lihat Striping.

Melalui parameter handel, rutin menghasilkan handel yang digunakan pemanggil untuk mengidentifikasi mesin DMA yang dialokasikan dalam panggilan berikutnya ke AllocateDmaBuffer, ChangeBandwidthAllocation, FreeDmaBuffer, SetupDmaEngineWithBdl, dan SetDmaEngineState. Driver fungsi membebaskan handel dengan memanggil FreeDmaEngine.

Melalui parameter converterFormat , rutin menghasilkan nilai deskriptor aliran yang dapat digunakan pemanggil untuk memprogram pengonversi output. Rutinitas mengodekan informasi dari parameter streamFormat ke dalam bilangan bulat 16-bit. Untuk informasi selengkapnya, lihat HDAUDIO_CONVERTER_FORMAT.

Segera setelah panggilan berhasil ke AllocateRenderDmaEngine, mesin DMA berada dalam status aliran reset. Sebelum memanggil SetDmaEngineState untuk mengubah mesin DMA ke status berjalan, dijeda, atau dihentikan, klien harus terlebih dahulu mengalokasikan buffer DMA untuk mesin.

Driver audio WDM memanggil AllocateRenderDmaEngine pada waktu pembuatan pin selama eksekusi metode NewStream-nya (misalnya, lihat IMiniportWavePci::NewStream).

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header hdaudio.h (termasuk Hdaudio.h)
IRQL PASSIVE_LEVEL

Lihat juga

AllocateDmaBuffer

ChangeBandwidthAllocation

FreeDmaEngine

HDAUDIO_BUS_INTERFACE

HDAUDIO_BUS_INTERFACE_BDL

HDAUDIO_BUS_INTERFACE_V2

HDAUDIO_CONVERTER_FORMAT

HDAUDIO_STREAM_FORMAT

IMiniportWavePci::NewStream