Bagikan melalui


IMediaControl::Metode GetState (control.h)

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine dan Audio/Video Capture di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Metode mengambil GetState status grafik filter—dijeda, berjalan, atau dihentikan.

Transisi status belum tentu sinkron. Oleh karena itu, ketika Anda memanggil metode ini, grafik filter mungkin dalam transisi ke status baru. Dalam hal ini, metode memblokir hingga transisi selesai atau sampai waktu habis yang ditentukan berlalu.

Sintaks

HRESULT GetState(
  [in]  LONG          msTimeout,
  [out] OAFilterState *pfs
);

Parameter

[in] msTimeout

Durasi waktu habis, dalam milidetik, atau INFINITE untuk menentukan batas waktu tak terbatas.

[out] pfs

Menerima anggota enumerasi FILTER_STATE .

Nilai kembali

Mengembalikan nilai HRESULT . Nilai yang mungkin termasuk yang berikut ini.

Menampilkan kode Deskripsi
S_OK
Berhasil.
VFW_S_STATE_INTERMEDIATE
Grafik filter masih dalam transisi ke status yang ditunjukkan.
VFW_S_CANT_CUE
Grafik filter dijeda, tetapi tidak dapat memisahkan data.
E_FAIL
Kegagalan.

Keterangan

Aplikasi dapat menggunakan metode ini untuk menentukan apakah pemutaran telah dimulai setelah panggilan ke IMediaControl::Run. Umumnya, aplikasi harus memiliki mekanisme sendiri untuk melacak status mana yang telah mereka masukkan ke dalam grafik filter. Aplikasi biasanya menggunakan status saat ini untuk menentukan kontrol antarmuka pengguna mana yang diaktifkan atau dinonaktifkan. Misalnya, setelah grafik masuk ke status berjalan, aplikasi mungkin menonaktifkan tombol "Putar" dan mengaktifkan tombol "Hentikan" dan "Jeda".

Jika grafik filter dalam transisi ke status baru, status yang dikembalikan adalah status baru, bukan status sebelumnya.

Metode ini mengembalikan kesalahan jika ada panggilan pada utas lain untuk mengubah status saat metode ini diblokir.

Hindari menentukan batas waktu INFINITE, karena utas tidak dapat memproses pesan saat menunggu di GetState. Jika Anda memanggil GetState dari utas yang memproses pesan Windows, tentukan waktu tunggu kecil pada panggilan agar tetap responsif terhadap input pengguna. Ini sangat penting ketika sumber mengalir melalui jaringan atau dari Internet karena transisi status di lingkungan ini dapat memakan waktu lebih lama untuk diselesaikan secara signifikan.

Enumerasi FILTER_STATE . Anda dapat melemparkan variabel sebagai berikut:


FILTER_STATE fs;
hr = pControl->GetState(msTimeOut, (OAFilterState*)&fs);

Untuk informasi selengkapnya tentang status grafik filter, lihat Status Filter.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header control.h (termasuk Dshow.h)
Pustaka Strmiids.lib

Lihat juga

Kode Kesalahan dan Keberhasilan

Antarmuka IMediaControl