Bagikan melalui


Enumerasi Statis

Enumerasi statis adalah kemampuan driver untuk mendeteksi dan melaporkan keberadaan perangkat selama inisialisasi sistem, dengan kemampuan terbatas untuk melaporkan perubahan berikutnya pada konfigurasi sistem.

Driver bus dapat menggunakan enumerasi statis jika jumlah dan jenis perangkat atau subunit fungsional telah ditentukan dan permanen, dan tidak bergantung pada konfigurasi sistem tempat driver berjalan.

Misalnya, driver kartu suara mungkin bertindak sebagai driver bus dan membuat objek perangkat fisik (PDO) terpisah untuk setiap kemampuan kartu, seperti MIDI, audio, dan joystick.

Daftar Turunan Statis

Kerangka kerja memungkinkan driver untuk mendukung enumerasi statis dengan menyediakan daftar anak statis. Setiap daftar turunan statis mewakili daftar perangkat anak yang tersambung ke perangkat induk. Driver bus untuk perangkat induk harus mengidentifikasi perangkat anak induk, menambahkannya ke daftar turunan statis perangkat induk, dan membuat PDO untuk setiap perangkat anak.

Membuat Daftar Turunan Statis

Setiap kali driver membuat objek perangkat kerangka kerja yang mewakili objek perangkat fungsi (FDO) untuk perangkat, kerangka kerja membuat daftar anak statis kosong untuk perangkat.

Saat kerangka kerja memanggil fungsi panggilan balik EvtDriverDeviceAdd driver bus, fungsi panggilan balik harus memanggil WdfDeviceCreate untuk membuat FDO untuk perangkat induk. Untuk informasi selengkapnya tentang membuat FDO, lihat Membuat Objek Perangkat di Driver Fungsi.

Driver kemudian harus menghitung anak perangkat induk, membuat PDO untuk anak-anak, dan menambahkan anak ke daftar anak.

Secara opsional, driver dapat memanggil WdfDeviceSetBusInformationForChildren untuk memberikan kerangka kerja dengan informasi tentang bus. Melakukannya disarankan karena memudahkan perangkat dan aplikasi anak untuk mengidentifikasi bus.

Untuk membuat PDO untuk perangkat anak yang terdeteksi, driver bus harus:

  1. Panggil WdfPdoInitAllocate untuk mendapatkan struktur WDFDEVICE_INIT .

  2. Menginisialisasi struktur WDFDEVICE_INIT.

  3. Panggil WdfDeviceCreate untuk membuat objek perangkat kerangka kerja yang mewakili PDO.

Untuk informasi selengkapnya tentang membuat PDO, lihat Membuat Objek Perangkat di Driver Bus.

Setelah memanggil WdfDeviceCreate, driver harus memanggil WdfFdoAddStaticChild untuk menambahkan perangkat anak ke daftar anak.

Memodifikasi Daftar Turunan Statis

Karena driver hanya boleh menggunakan daftar anak statis untuk konfigurasi perangkat yang telah ditentukan dan permanen, ada sedikit kebutuhan bagi driver untuk memodifikasi daftar anak statis setelah membuatnya. Jika driver menentukan bahwa perangkat anak menjadi tidak dapat diakses, driver dapat memanggil WdfPdoMarkMissing. (Jika perangkat anak tetap dapat diakses tetapi menjadi tidak responsif dan tidak dapat digunakan, driver harus mengatur anggota Gagal dari struktur WDF_DEVICE_STATE ke WdfTrue dan kemudian memanggil WdfDeviceSetDeviceState.)

Melintas Daftar Anak Statis

Jika Anda perlu mengambil konten daftar anak statis, driver dapat melintasi daftar dengan melakukan hal berikut:

  1. Memanggil WdfFdoLockStaticChildListForIteration.

  2. Memanggil WdfFdoRetrieveNextStaticChild sebanyak yang diperlukan.

  3. Memanggil WdfFdoUnlockStaticChildListFromIteration.