IMiniportWavePciStream::Metode GetPosition (portcls.h)
Metode GetPosition
ini mendapatkan posisi aliran saat ini.
Sintaks
NTSTATUS GetPosition(
[out] PULONGLONG Position
);
Parameter
[out] Position
Penunjuk output untuk nilai posisi. Parameter ini menunjuk ke variabel ULONGLONG yang dialokasikan pemanggil tempat metode menulis posisi byte aliran saat ini.
Nilai kembali
GetPosition
mengembalikan STATUS_SUCCESS jika panggilan berhasil. Jika tidak, metode mengembalikan kode kesalahan yang sesuai.
Keterangan
Posisi yang ditunjukkan GetPosition
oleh metode dinyatakan sebagai offset byte dari awal aliran. Ini mewakili perkiraan terbaik driver miniport dari posisi byte data yang saat ini berada di DAC atau ADC. Objek miniport diperlukan untuk mempertahankan posisi stream berdasarkan pemetaan yang diperolehnya, terlepas dari apakah pemetaan dirilis atau dicabut.
Posisinya nol segera setelah inisialisasi aliran. Transisi ke status KSSTATE_STOP (lihat KSSTATE) mengatur ulang posisi ke nol. Saat aliran dihentikan oleh transisi dari KSSTATE_RUN ke KSSTATE_PAUSE atau KSSTATE_ACQUIRE, posisi membeku. Ini tidak bertempur ketika aliran beralih dari KSSTATE_PAUSE atau KSSTATE_ACQUIRE kembali ke KSSTATE_RUN.
Posisi yang dilaporkan oleh GetPosition
bukan offset ke dalam satu buffer fisik yang telah dialokasikan oleh driver Anda atau klien telah dialokasikan. Sebaliknya, offset relatif aliran dan dapat dianggap sebagai offset ke dalam buffer ideal yang berisi seluruh aliran dan berdampingan dari awal hingga akhir. Setiap offset internal yang menunjuk ke buffer fisik aktual yang berisi data perlu dipertahankan secara terpisah.
Perhatikan bahwa nilai offset yang GetPosition
diambil oleh panggilan adalah salah satu hal berikut:
-
Untuk aliran render,
GetPosition
metode mengambil posisi putar, yang merupakan offset byte dari sampel yang saat ini sedang dimainkan melalui DAC dan ditransmisikan melalui jack speaker. -
Untuk aliran pengambilan,
GetPosition
metode mengambil posisi rekaman, yang merupakan offset byte dari sampel terbaru yang akan diterima melalui jack mikrofon dan ditangkap oleh ADC.
Beberapa perangkat keras audio berisi register posisi untuk melacak offset byte sampel yang saat ini ada di setiap DAC atau ADC, dalam hal ini GetPosition
metode hanya mengambil konten register posisi untuk aliran yang sesuai. Perangkat keras audio lainnya hanya dapat menyediakan driver dengan penunjuk DMA ke dalam buffer audio, dalam hal ini GetPosition
metode harus memberikan perkiraan terbaik offset byte di DAC atau ADC berdasarkan posisi DMA saat ini dan penundaan buffering internal ke perangkat.
Perangkat keras audio yang secara internal menyangga sebagian dari pemutaran atau aliran pengambilan mungkin membuat posisi pembacaan yang tepat lebih sulit diperoleh. Dalam hal ini, driver harus memperkirakan posisi saat ini seakurat mungkin. Misalnya, jika perangkat audio mengambil aliran pemutaran terlebih dahulu ke buffer internal, driver mungkin perlu mempertimbangkan ukuran buffer dan informasi pengaturan waktu untuk memperkirakan posisi pemutaran dengan benar.
Driver port WavePci mengimplementasikan handler properti untuk KSPROPERTY_AUDIO_POSITION. Handler properti ini memanggil GetPosition
metode untuk mendapatkan posisi putar atau rekam saat ini dari driver miniport. Untuk informasi selengkapnya, lihat Properti Posisi Audio.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Header | portcls.h (termasuk Portcls.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