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.
Ini bukan offset dari sampel yang saat ini dibaca oleh mesin DMA di perangkat audio atau menulis ke buffer audio.

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

IMiniportWavePciStream

KSPROPERTY_AUDIO_POSITION

KSSTATE