EVT_ACX_STREAM_RELEASE_HARDWARE fungsi panggilan balik (acxstreams.h)
Peristiwa EvtAcxStreamReleaseHardware memberi tahu driver untuk merilis perangkat keras apa pun yang dialokasikan untuk aliran dan memasukkan aliran ke status Stop.
Sintaks
EVT_ACX_STREAM_RELEASE_HARDWARE EvtAcxStreamReleaseHardware;
NTSTATUS EvtAcxStreamReleaseHardware(
ACXSTREAM Stream
)
{...}
Parameter
Stream
Objek ACXSTREAM mewakili aliran audio yang dibuat oleh sirkuit. Aliran terdiri dari daftar elemen yang dibuat berdasarkan elemen sirkuit induk. Untuk informasi selengkapnya, lihat ACX - Ringkasan Objek ACX.
Menampilkan nilai
Mengembalikan STATUS_SUCCESS
jika panggilan berhasil. Jika tidak, kode kesalahan akan menampilkan kode kesalahan yang sesuai. Untuk informasi selengkapnya, lihat Menggunakan Nilai NTSTATUS.
Keterangan
AcxStream mendukung status yang berbeda. Status ini menunjukkan ketika audio mengalir (status RUN), audio tidak mengalir tetapi perangkat keras audio disiapkan (status JEDA), atau audio tidak mengalir dan perangkat keras audio tidak disiapkan (status STOP).
Peristiwa EvtAcxStreamReleaseHardware akan mengalihkan status aliran dari status Jeda ke status Berhenti. Driver harus merilis sumber daya perangkat keras apa pun yang dialokasikan untuk streaming dalam peristiwa ini, seperti mesin DMA. Setelah aliran dalam status Berhenti, driver mungkin menerima peristiwa EvtAcxStreamPrepareHardware untuk transisi ke status Jeda atau objek ACXSTREAM dapat dihancurkan.
Peristiwa ACX dianalogikan dengan status KS seperti yang dijelaskan dalam tabel ini.
Status Mulai | Status Akhir | Peristiwa Driver ACX dipanggil | Catatan |
---|---|---|---|
HENTIKAN | MEMPEROLEH | PrepareHardware | Driver melakukan alokasi dan persiapan perangkat keras |
MEMPEROLEH | JEDA | (Tidak Ada Panggilan) | |
JEDA | RUN | jalankan | |
RUN | JEDA | Pause | |
JEDA | MEMPEROLEH | (Tidak ada panggilan) | |
MEMPEROLEH | HENTIKAN | ReleaseHardware | Driver merilis alokasi perangkat keras |
Ketika pekerjaan dengan aliran selesai, EvtAcxStreamFreeRtPackets dipanggil setelah EvtAcxStreamReleaseHardware. Ini memungkinkan fase perangkat keras rilis untuk menyelesaikan pembatalan alokasi bandwidth, membebaskan sumber daya DMA dan pembersihan terkait lainnya, terjadi sebelum buffer RT yang dialokasikan kemudian dibebaskan.
Pembersihan Memori
Pembuangan sumber daya aliran dapat dilakukan dalam pembersihan konteks aliran driver (tidak dihancurkan). Jangan pernah meletakkan pembuangan apa pun yang dibagikan dalam konteks objek menghancurkan panggilan balik. Panduan ini berlaku untuk semua objek ACX.
Panggilan balik penghancur dipanggil setelah ref terakhir hilang, ketika tidak diketahui.
Panggilan balik pembersihan aliran dipanggil saat handel ditutup. Salah satu pengecualian untuk ini adalah ketika driver membuat aliran dalam panggilan baliknya. Jika ACX gagal menambahkan aliran ini ke stream-bridge-nya tepat sebelum kembali dari operasi stream-create, aliran dibatalkan asinkron, dan utas saat ini mengembalikan kesalahan ke klien create-stream. Aliran tidak boleh memiliki alokasi memo yang dialokasikan pada saat ini.
Contoh
Contoh penggunaan ditunjukkan di bawah ini.
ACX_STREAM_CALLBACKS streamCallbacks;
ACX_STREAM_CALLBACKS_INIT(&streamCallbacks);
streamCallbacks.EvtAcxStreamReleaseHardware = EvtStreamReleaseHardware;
...
status = AcxStreamInitAssignAcxStreamCallbacks(StreamInit, &streamCallbacks);
PAGED_CODE_SEG
NTSTATUS
EvtStreamReleaseHardware(
_In_ ACXSTREAM Stream
)
{
PSTREAM_CONTEXT ctx;
NTSTATUS status;
PAGED_CODE();
ctx = GetStreamContext(Stream);
status = ReleaseStreamHardware(Stream);
ctx->StreamState = AcxStreamStateStop;
return status;
}
Persyaratan ACX
Versi ACX minimum: 1.0
Untuk informasi selengkapnya tentang versi ACX, lihat Gambaran umum versi ACX.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | acxstreams.h |
IRQL | PASSIVE_LEVEL |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk