EVT_ACX_STREAM_GET_CAPTURE_PACKET fungsi panggilan balik (acxstreams.h)
EvtAcxStreamGetCapturePacket memberi tahu driver untuk menunjukkan paket mana (berbasis 0) yang benar-benar diisi baru-baru ini, termasuk nilai QPC pada saat driver mulai mengisi paket.
Sintaks
EVT_ACX_STREAM_GET_CAPTURE_PACKET EvtAcxStreamGetCapturePacket;
NTSTATUS EvtAcxStreamGetCapturePacket(
ACXSTREAM Stream,
PULONG LastCapturePacket,
PULONGLONG QPCPacketStart,
PBOOLEAN MoreData
)
{...}
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.
LastCapturePacket
Nilai yang menunjukkan posisi paket terakhir yang ditangkap. Ini adalah indeks berbasis 0 yang menunjukkan berapa banyak paket lengkap data yang telah diambil.
QPCPacketStart
Nilai yang menunjukkan waktu mulai paket terakhir yang diambil.
MoreData
Mengembalikan TRUE jika ada lebih banyak data yang siap segera. OS dapat secara opsional segera memanggil rutinitas ini lagi setelah memproses paket untuk mendapatkan informasi paket berikutnya. Jika driver mengembalikan FALSE, maka pengambilan beroperasi secara real time.
Menampilkan nilai
Mengembalikan STATUS_SUCCESS
jika panggilan berhasil. Jika tidak, ia mengembalikan kode kesalahan yang sesuai. Untuk informasi selengkapnya, lihat Menggunakan Nilai NTSTATUS.
Keterangan
Sebelum membaca data audio yang diambil dari buffer audio, OS memanggil rutinitas ini untuk mendapatkan informasi tentang data yang tersedia.
Nomor paket mengidentifikasi paket dalam aliran. Ini direset ke nol ketika EVT_ACX_STREAM_RELEASEHARDWARE telah dipanggil untuk aliran. Angka tersebut maju dengan setiap buffer yang ditangkap. Dari nomor paket OS dapat memperoleh lokasi paket dalam buffer audio dan juga dapat memperoleh posisi aliran paket relatif terhadap awal streaming.
OS dapat memanggil rutinitas ini kapan saja. Dalam operasi normal, OS memanggil rutinitas ini setelah driver memanggil AcxRtStreamNotifyPacketComplete atau setelah panggilan sebelumnya mengembalikan true untuk MoreData. Ketika OS memanggil rutinitas ini, driver dapat berasumsi bahwa OS telah selesai membaca semua paket sebelumnya. Jika perangkat keras telah mengambil data yang cukup, driver dapat segera meledakkan paket lengkap berikutnya ke buffer audio dan memanggil AcxRtStreamNotifyPacketComplete lagi. Dalam kasus penangkapan luapan (ketika OS tidak membaca data dengan cukup cepat) driver audio dapat menjatuhkan atau menimpa beberapa data audio. Driver audio menghilangkan atau menimpa data terlama terlebih dahulu. Driver audio dapat terus memajukan penghitung paket internalnya meskipun OS mungkin belum membaca data.
Contoh
Contoh penggunaan ditunjukkan di bawah ini.
#pragma code_seg("PAGE")
NTSTATUS
CodecC_EvtStreamGetCapturePacket(
_In_ ACXSTREAM Stream,
_Out_ ULONG * LastCapturePacket,
_Out_ ULONGLONG * QPCPacketStart,
_Out_ BOOLEAN * MoreData
)
{
PCODEC_STREAM_CONTEXT ctx;
CCaptureStreamEngine* streamEngine = nullptr;
ULONG currentPacket;
LONGLONG qpcPacketStart;
PAGED_CODE();
ctx = GetCodecStreamContext(Stream);
// Retrieve the current packet that is being written to by the audio hardware
currentPacket = (ULONG)InterlockedCompareExchange((LONG*)&ctx->CurrentPacket, -1, -1);
qpcPacketStart = InterlockedCompareExchange64(&ctx->LastPacketStart.QuadPart, -1, -1);
// The Last capture packet is the packet before the current packet.
*LastCapturePacket = currentPacket - 1;
*QPCPacketStart = (ULONGLONG)qpcPacketStart;
*MoreData = FALSE;
return STATUS_SUCCESS;
}
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