Bagikan melalui


Mengakses model properti perangkat terpadu

Topik ini menjelaskan bagaimana driver Windows Driver Frameworks (WDF) mengambil atau memodifikasi properti yang diekspos melalui model properti perangkat terpadu. Metode yang tercantum tersedia mulai dari User-Mode Driver Framework (UMDF) versi 2.0 dan Kernel-Mode Driver Framework (KMDF) versi 1.13.

Driver KMDF dan UMDF dapat memanggil metode berikut:

Driver KMDF dan UMDF dapat memanggil metode berikut hanya sebelum memanggil WdfDeviceCreate. Untuk informasi selengkapnya tentang memanggil WdfDeviceCreate, lihat Membuat Objek Perangkat Kerangka Kerja.

Setelah memanggil WdfDeviceCreate, driver dapat memperoleh informasi properti perangkat dengan memanggil metode Properti WdfDeviceXxx yang sesuai.

Metode -Ex di atas berbeda dari rekan non-Ex mereka karena memungkinkan Anda menentukan properti menggunakan struktur WDF_DEVICE_PROPERTY_DATA, alih-alih subset yang dapat Anda tentukan menggunakan DEVICE_REGISTRY_PROPERTY.

Sebelum menerima data properti perangkat, driver biasanya memanggil WdfXxxQueryProperty hanya untuk mendapatkan ukuran buffer yang diperlukan. Untuk beberapa properti, ukuran data dapat berubah antara ketika ukuran yang diperlukan dikembalikan dan ketika driver memanggil WdfXxxQueryProperty lagi. Oleh karena itu, driver harus memanggil WdfXxxQueryProperty di dalam perulangan yang dijalankan hingga status pengembalian tidak STATUS_BUFFER_TOO_SMALL.

Yang terbaik adalah menggunakan WdfXxxQueryProperty hanya jika ukuran buffer yang diperlukan diketahui dan tidak berubah, karena dalam hal ini driver harus memanggil WdfXxxQueryProperty hanya sekali. Jika ukuran buffer yang diperlukan tidak diketahui atau bervariasi, driver harus memanggil WdfXxxAllocAndQueryProperty.

Mengakses properti antarmuka perangkat

Driver UMDF dapat menggunakan metode berikut untuk mengambil atau memodifikasi properti antarmuka perangkat yang diekspos melalui model properti terpadu:

Untuk mengambil atau mengubah properti antarmuka perangkat, driver KMDF harus memanggil IoGetDeviceInterfacePropertyData atau IoSetDeviceInterfacePropertyData secara langsung.