IAudioClock2::GetDevicePosition method (audioclient.h)

Metode GetDevicePosition mendapatkan posisi perangkat saat ini, dalam bingkai, langsung dari perangkat keras.

Sintaks

HRESULT GetDevicePosition(
  [out] UINT64 *DevicePosition,
  [out] UINT64 *QPCPosition
);

Parameter

[out] DevicePosition

Menerima posisi perangkat, dalam bingkai. Posisi yang diterima adalah nilai yang tidak diolah yang diperoleh metode langsung dari perangkat keras. Untuk informasi selengkapnya, lihat Keterangan.

[out] QPCPosition

Menerima nilai penghitung kinerja pada saat perangkat titik akhir audio membaca posisi perangkat yang diambil dalam parameter DevicePosition sebagai respons terhadap panggilan GetDevicePosition .
GetDevicePosition mengonversi nilai penghitung menjadi unit waktu 100 nanodetik sebelum menulisnya ke QPCPosition. QPCPosition dapat berupa NULL jika klien tidak memerlukan nilai penghitung kinerja. Untuk informasi selengkapnya, lihat Keterangan.

Mengembalikan nilai

Jika metode berhasil, metode akan mengembalikan S_OK.

Menampilkan kode Deskripsi
E_POINTER
Parameter DevicePosition adalah NULL.
AUDCLNT_E_DEVICE_INVALIDATED
Titik akhir audio telah terputus.
AUDCLNT_S_POSITION_STALLED
Metode IAudioClient::Start belum dipanggil untuk aliran ini.

Keterangan

Metode ini hanya berlaku untuk aliran mode bersama.

Metode ini mengambil dua nilai posisi aliran yang berkorelasi:

  • Posisi perangkat. Klien mengambil posisi perangkat yang tidak diolah di DevicePosition. Ini adalah posisi aliran sampel yang saat ini diputar melalui speaker (untuk aliran penyajian) atau direkam melalui mikrofon (untuk aliran pengambilan). Laju pengambilan sampel titik akhir perangkat mungkin berbeda dari laju pengambilan sampel format campuran yang digunakan oleh klien. Untuk mengambil posisi perangkat dari klien, panggil IAudioClock::GetPosition.
  • Penghitung kinerja. Klien mengambil penghitung kinerja di QPCPosition. GetDevicePosition mendapatkan nilai penghitung dengan memanggil fungsi QueryPerformanceCounter pada saat perangkat titik akhir audio menyimpan posisi aliran dalam parameter DevicePosition dari metode GetDevicePosition . GetDevicePosition mengonversi nilai penghitung menjadi 100 unit waktu nanodetik. Untuk informasi selengkapnya tentang QueryPerformanceCounter dan QueryPerformanceFrequency, lihat dokumentasi Windows SDK.
Mengingat posisi perangkat dan penghitung kinerja pada saat panggilan GetDevicePosition , klien bisa mendapatkan perkiraan posisi perangkat yang lebih tepat waktu di lain waktu dengan memanggil QueryPerformanceCounter untuk mendapatkan penghitung kinerja saat ini, dan mengekstrapolasi posisi perangkat berdasarkan seberapa jauh penghitung telah maju sejak posisi perangkat asli direkam. Klien dapat memanggil fungsi QueryPerformanceCounter untuk mendapatkan frekuensi jam yang menambah penghitung. Sebelum membandingkan nilai penghitung mentah yang diperoleh dari QueryPerformanceCounter dengan nilai yang diambil oleh GetDevicePosition, konversikan nilai penghitung mentah menjadi unit waktu 100 nanodetik sebagai berikut:
  1. Kalikan nilai penghitung mentah dengan 10.000.000.
  2. Bagi hasil dengan frekuensi penghitung yang diperoleh dari QueryPerformanceFrequency.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 R2 [hanya aplikasi desktop]
Target Platform Windows
Header audioclient.h

Lihat juga

IAudioClock2