Set Informasi Perangkat
Dalam mode pengguna, perangkat milik kelas penyiapan perangkat atau kelas antarmuka perangkat dikelola dengan menggunakan elemen informasi perangkat dan set informasi perangkat. Kumpulan informasi perangkat terdiri dari elemen informasi perangkat untuk semua perangkat yang termasuk dalam beberapa kelas penyiapan perangkat atau kelas antarmuka perangkat.
Setiap elemen informasi perangkat berisi handel ke devnode perangkat, dan pointer ke daftar tertaut dari semua antarmuka perangkat yang terkait dengan perangkat yang dijelaskan oleh elemen tersebut. Jika kumpulan informasi perangkat menjelaskan anggota kelas penyiapan, elemen mungkin tidak menunjuk ke antarmuka perangkat apa pun, karena anggota kelas penyiapan belum tentu dikaitkan dengan antarmuka.
Diagram berikut menunjukkan struktur internal kumpulan informasi perangkat.
Membuat Set Informasi Perangkat
Setelah membuat set informasi perangkat dengan SetupDiCreateDeviceInfoList, elemen informasi perangkat dapat dibuat dan ditambahkan ke daftar satu per satu menggunakan SetupDiCreateDeviceInfo. Atau, SetupDiGetClassDevs dapat dipanggil untuk membuat kumpulan informasi perangkat yang terdiri dari semua perangkat yang terkait dengan kelas penyiapan perangkat atau kelas antarmuka perangkat tertentu.
Menghitung Informasi Perangkat
Setelah set informasi perangkat dibuat, perangkat dan antarmuka perangkat milik set dapat dijumlahkan, tetapi operasi yang berbeda diperlukan untuk setiap jenis enumerasi. SetupDiEnumDeviceInfo menghitung semua perangkat yang termasuk dalam kumpulan informasi yang memenuhi kriteria tertentu. Setiap panggilan ke SetupDiEnumDeviceInfo mengekstrak struktur SP_DEVINFO_DATA yang kira-kira sesuai dengan elemen informasi perangkat. SP_DEVINFO_DATA berisi GUID kelas tempat perangkat berada dan instans perangkat menangani yang menunjuk ke devnode untuk perangkat. Perbedaan utama antara struktur SP_DEVINFO_DATA dan elemen perangkat lengkap adalah bahwa SP_DEVINFO_DATA tidak berisi daftar antarmuka yang ditautkan yang terkait dengan perangkat. Oleh karena itu, SetupDiEnumDeviceInfo tidak dapat digunakan untuk menghitung antarmuka dalam kumpulan informasi perangkat.
Untuk menghitung antarmuka perangkat dalam kumpulan informasi perangkat, panggil SetupDiEnumDeviceInterfaces. Langkah-langkah rutin ini melalui semua elemen informasi perangkat dalam kumpulan informasi perangkat, mengekstrak antarmuka dalam daftar antarmuka setiap elemen, dan mengembalikan satu antarmuka dengan setiap panggilan. Jika SetupDiEnumDeviceInterfaces melewati struktur SP_DEVINFO_DATA sebagai input dalam parameter kedua, itu membatasi enumerasi hanya ke antarmuka yang terkait dengan perangkat yang ditunjukkan oleh SP_DEVINFO_DATA.
SetupDiEnumDeviceInterfaces mengembalikan struktur SP_DEVICE_INTERFACE_DATA . SP_DEVICE_INTERFACE_DATA berisi GUID kelas antarmuka dan informasi lain tentang antarmuka, termasuk bidang cadangan yang memiliki informasi yang dikodekan yang dapat digunakan untuk mendapatkan nama antarmuka. Untuk mendapatkan nama antarmuka, diperlukan satu langkah lebih lanjut: SetupDiGetDeviceInterfaceDetail harus dipanggil. SetupDiGetDeviceInterfaceDetail mengembalikan struktur jenis SP_DEVICE_INTERFACE_DETAIL_DATA yang berisi jalur di pohon objek sistem yang menentukan antarmuka.