Fungsi SetupDiGetClassDevsW (setupapi.h)
Fungsi SetupDiGetClassDevs mengembalikan handel ke kumpulan informasi perangkat yang berisi elemen informasi perangkat yang diminta untuk komputer lokal.
Sintaks
WINSETUPAPI HDEVINFO SetupDiGetClassDevsW(
[in, optional] const GUID *ClassGuid,
[in, optional] PCWSTR Enumerator,
[in, optional] HWND hwndParent,
[in] DWORD Flags
);
Parameter
[in, optional] ClassGuid
Pointer ke GUID untuk kelas penyiapan perangkat atau kelas antarmuka perangkat. Penunjuk ini bersifat opsional dan dapat berupa NULL. Untuk informasi selengkapnya tentang cara mengatur ClassGuid, lihat bagian Keterangan berikut ini.
[in, optional] Enumerator
Penunjuk ke string yang dihentikan NULL yang menentukan:
- Pengidentifikasi (ID) enumerator Plug and Play (PnP). ID ini dapat menjadi pengidentifikasi unik global (GUID) nilai atau nama simbolis. Misalnya, "PCI" dapat digunakan untuk menentukan nilai PnP PCI. Contoh lain dari nama simbolis untuk nilai PnP termasuk "USB," "PCMCIA," dan "SCSI".
- ID instans perangkat PnP. Saat menentukan ID instans perangkat PnP, DIGCF_DEVICEINTERFACE harus diatur dalam parameter Bendera.
Untuk informasi selengkapnya tentang cara mengatur nilai Enumerator , lihat bagian Keterangan berikut ini.
[in, optional] hwndParent
Handel ke jendela tingkat atas yang akan digunakan untuk antarmuka pengguna yang terkait dengan penginstalan instans perangkat di kumpulan informasi perangkat. Handel ini bersifat opsional dan dapat berupa NULL.
[in] Flags
Variabel jenis DWORD yang menentukan opsi kontrol yang memfilter elemen informasi perangkat yang ditambahkan ke kumpulan informasi perangkat. Parameter ini bisa menjadi bitwise OR dari nol atau lebih dari bendera berikut. Untuk informasi selengkapnya tentang menggabungkan bendera ini, lihat bagian Keterangan berikut.
DIGCF_ALLCLASSES
Mengembalikan daftar perangkat yang diinstal untuk semua kelas penyiapan perangkat atau semua kelas antarmuka perangkat.
DIGCF_DEVICEINTERFACE
Mengembalikan perangkat yang mendukung antarmuka perangkat untuk kelas antarmuka perangkat yang ditentukan. Bendera ini harus diatur dalam parameter Bendera jika parameter Enumerator menentukan ID instans perangkat.
DIGCF_DEFAULT
Kembalikan hanya perangkat yang terkait dengan antarmuka perangkat default sistem, jika satu diatur, untuk kelas antarmuka perangkat yang ditentukan.
DIGCF_PRESENT
Mengembalikan hanya perangkat yang saat ini ada dalam sistem.
DIGCF_PROFILE
Mengembalikan hanya perangkat yang merupakan bagian dari profil perangkat keras saat ini.
Nilai kembali
Jika operasi berhasil, SetupDiGetClassDevs mengembalikan handel ke kumpulan informasi perangkat yang berisi semua perangkat yang diinstal yang cocok dengan parameter yang disediakan. Jika operasi gagal, fungsi akan mengembalikan INVALID_HANDLE_VALUE. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Pemanggil SetupDiGetClassDevs harus menghapus informasi perangkat yang dikembalikan yang diatur ketika tidak lagi diperlukan dengan memanggil SetupDiDestroyDeviceInfoList.
Panggil SetupDiGetClassDevsEx untuk mengambil perangkat untuk kelas di komputer jarak jauh.
Opsi Kontrol Kelas Penyetelan Perangkat
Gunakan opsi pemfilteran berikut untuk mengontrol apakah SetupDiGetClassDevs mengembalikan perangkat untuk semua kelas penyiapan perangkat atau hanya untuk kelas penyiapan perangkat tertentu:- Untuk mengembalikan perangkat untuk semua kelas penyiapan perangkat, atur bendera DIGCF_ALLCLASSES, dan atur parameter ClassGuid ke NULL.
- Untuk mengembalikan perangkat hanya untuk kelas penyiapan perangkat tertentu, jangan atur DIGCF_ALLCLASSES, dan gunakan ClassGuid untuk menyediakan GUID kelas penyiapan perangkat.
- Untuk mengembalikan hanya perangkat yang ada dalam sistem, atur bendera DIGCF_PRESENT.
- Untuk mengembalikan hanya perangkat yang merupakan bagian dari profil perangkat keras saat ini, atur bendera DIGCF_PROFILE.
- Untuk mengembalikan perangkat hanya untuk enumerator PnP tertentu, gunakan parameter Enumerator untuk menyediakan GUID atau nama simbolis enumerator. Jika EnumeratorADALAH NULL, SetupDiGetClassDevs mengembalikan perangkat untuk semua enumerator PnP.
Opsi Kontrol Kelas Antarmuka Perangkat
Gunakan opsi pemfilteran berikut untuk mengontrol apakah SetupDiGetClassDevs mengembalikan perangkat yang mendukung kelas antarmuka perangkat apa pun atau hanya perangkat yang mendukung kelas antarmuka perangkat tertentu:- Untuk mengembalikan perangkat yang mendukung antarmuka perangkat dari kelas apa pun, atur bendera DIGCF_DEVICEINTERFACE, atur bendera DIGCF_ALLCLASSES, dan atur ClassGuid ke NULL. Fungsi ini menambahkan ke informasi perangkat yang mengatur elemen informasi perangkat yang mewakili perangkat tersebut dan kemudian menambahkan ke elemen informasi perangkat daftar antarmuka perangkat yang berisi semua antarmuka perangkat yang didukung perangkat.
- Untuk mengembalikan hanya perangkat yang mendukung antarmuka perangkat dari kelas tertentu, atur bendera DIGCF_DEVICEINTERFACE dan gunakan parameter ClassGuid untuk menyediakan GUID kelas dari kelas antarmuka perangkat. Fungsi ini menambahkan ke informasi perangkat yang mengatur elemen informasi perangkat yang mewakili perangkat tersebut lalu menambahkan antarmuka perangkat dari kelas yang ditentukan ke daftar antarmuka perangkat untuk elemen informasi perangkat tersebut.
- Untuk mengembalikan hanya perangkat yang mendukung antarmuka default sistem, jika satu diatur, untuk kelas antarmuka perangkat tertentu, atur bendera DIGCF_DEVICEINTERFACE, atur bendera DIGCF_DEFAULT, dan gunakan ClassGuid untuk menyediakan GUID kelas dari kelas antarmuka perangkat. Fungsi ini menambahkan ke informasi perangkat yang mengatur elemen informasi perangkat yang mewakili perangkat tersebut lalu menambahkan antarmuka default sistem ke daftar antarmuka perangkat untuk elemen informasi perangkat tersebut.
- Untuk mengembalikan perangkat yang mendukung antarmuka default sistem untuk kelas antarmuka perangkat yang tidak ditentukan, atur bendera DIGCF_DEVICEINTERFACE, atur bendera DIGCF_ALLCLASSES, atur bendera DIGCF_DEFAULT, dan atur ClassGuid ke NULL. Fungsi ini menambahkan ke informasi perangkat yang mengatur elemen informasi perangkat yang mewakili perangkat tersebut lalu menambahkan antarmuka default sistem ke daftar antarmuka perangkat untuk elemen informasi perangkat tersebut.
- Untuk mengembalikan hanya perangkat yang ada dalam sistem, atur bendera DIGCF_PRESENT.
- Untuk mengembalikan hanya perangkat yang merupakan bagian dari profil perangkat keras saat ini, atur bendera DIGCF_PROFILE.
- Untuk mengembalikan hanya perangkat tertentu, atur bendera DIGCF_DEVICEINTERFACE dan gunakan parameter Enumerator untuk menyediakan ID instans perangkat perangkat. Untuk menyertakan semua perangkat yang mungkin, atur Enumerator ke NULL.
Contoh
Berikut ini adalah beberapa contoh cara menggunakan fungsi SetupDiGetClassDevs .
Contoh 1: Buat daftar semua perangkat dalam sistem, termasuk perangkat yang saat ini tidak ada.
Handle = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_ALLCLASSES);
Contoh 2: Buat daftar semua perangkat yang ada dalam sistem.
Handle = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_ALLCLASSES | DIGCF_PRESENT);
Contoh 3: Buat daftar semua perangkat yang ada dalam sistem yang berasal dari kelas penyiapan perangkat adaptor jaringan.
Handle = SetupDiGetClassDevs(&GUID_DEVCLASS_NET, NULL, NULL, DIGCF_PRESENT);
Contoh 4: Buat daftar semua perangkat yang ada dalam sistem yang telah mengaktifkan antarmuka dari kelas antarmuka perangkat volume penyimpanan.
Handle = SetupDiGetClassDevs(&GUID_DEVINTERFACE_VOLUME, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
Contoh 5: Buat daftar semua perangkat yang ada dalam sistem tetapi bukan milik kelas penyiapan perangkat yang diketahui (Windows Vista dan versi Windows yang lebih baru).
DeviceInfoSet = SetupDiGetClassDevs(
NULL,
NULL,
NULL,
DIGCF_ALLCLASSES | DIGCF_PRESENT);
ZeroMemory(&DeviceInfoData, sizeof(SP_DEVINFO_DATA));
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
DeviceIndex = 0;
while (SetupDiEnumDeviceInfo(
DeviceInfoSet,
DeviceIndex,
&DeviceInfoData)) {
DeviceIndex++;
if (!SetupDiGetDeviceProperty(
DeviceInfoSet,
&DeviceInfoData,
&DEVPKEY_Device_Class,
&PropType,
(PBYTE)&DevGuid,
sizeof(GUID),
&Size,
0) || PropType != DEVPROP_TYPE_GUID) {
Error = GetLastError();
if (Error == ERROR_NOT_FOUND) {
\\
\\ This device has an unknown device setup class.
\\
}
}
}
if (DeviceInfoSet) {
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
}
Catatan
Header setupapi.h mendefinisikan SetupDiGetClassDevs sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praproscesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia di Microsoft Windows 2000 dan versi Windows yang lebih baru. |
Target Platform | DesktopUntuk universal, panggil CM_Get_Device_ID_ListFor universal, panggil CM_Get_Device_Interface_List |
Header | setupapi.h (termasuk SetupAPI.h) |
Pustaka | SetupAPI.lib |
DLL | SetupAPI.dll |
Set API | ext-ms-win-setupapi-classinstallers-l1-1-0 (diperkenalkan dalam Windows 8) |