Udostępnij przez


Zestawy informacji o urządzeniu

W trybie użytkownika urządzenia należące do klas konfiguracji urządzeń lub klas interfejsów urządzeń są zarządzane przy użyciu elementów informacji o urządzeniu i zestawów informacji o urządzeniu. Zestaw informacji o urządzeniu składa się z elementów informacji o urządzeniu dla wszystkich urządzeń należących do klasy konfiguracji urządzenia lub klasy interfejsu urządzenia.

Każdy element informacji o urządzeniu zawiera uchwyt do węzła devnode urządzenia i wskaźnik do połączonej listy wszystkich interfejsów urządzeń skojarzonych z urządzeniem opisanym przez ten element. Jeśli zestaw informacji o urządzeniu opisuje elementy członkowskie klasy konfiguracji, element może nie wskazywać żadnych interfejsów urządzeń, ponieważ składowe klasy konfiguracji nie muszą być skojarzone z interfejsem.

Na poniższym diagramie przedstawiono wewnętrzną strukturę zestawu informacji o urządzeniu.

diagram ilustrujący zestaw informacji o urządzeniu.

Tworzenie zestawu informacji o urządzeniu

Po utworzeniu zestawu informacji o urządzeniu za pomocą setupDiCreateDeviceInfoList można utworzyć i dodać elementy informacji o urządzeniu do listy pojedynczo przy użyciu SetupDiCreateDeviceInfo. Alternatywnie można wywołać metodę SetupDiGetClassDevs w celu utworzenia zestawu informacji o urządzeniu składającego się ze wszystkich urządzeń skojarzonych z określoną klasą konfiguracji urządzenia lub klasą interfejsu urządzenia.

Wyliczanie informacji o urządzeniu

Po utworzeniu zestawu informacji o urządzeniu można wyliczyć zarówno urządzenia, jak i interfejsy urządzeń należących do zestawu, ale dla każdego typu wyliczenia wymagane są różne operacje. SetupDiEnumDeviceInfo wylicza wszystkie urządzenia należące do zestawu informacji spełniające określone kryteria. Każde wywołanie elementu SetupDiEnumDeviceInfo wyodrębnia strukturę SP_DEVINFO_DATA , która w przybliżeniu odpowiada elementowi informacji o urządzeniu. SP_DEVINFO_DATA zawiera identyfikator GUID klasy, do której należy urządzenie, oraz uchwyt wystąpienia urządzenia, który wskazuje węzeł devnode dla urządzenia. Główną różnicą między strukturą SP_DEVINFO_DATA a kompletnym elementem urządzenia jest to, że SP_DEVINFO_DATA nie zawiera połączonej listy interfejsów skojarzonych z urządzeniem. W związku z tym setupDiEnumDeviceInfo nie można użyć do wyliczenia interfejsów w zestawie informacji o urządzeniu.

Aby wyliczyć interfejsy urządzeń w zestawie informacji o urządzeniu, wywołaj metodę SetupDiEnumDeviceInterfaces. Ta procedura obejmuje wszystkie elementy informacji o urządzeniu w zestawie informacji o urządzeniu, wyodrębnia interfejsy na liście interfejsów każdego elementu i zwraca jeden interfejs z każdym wywołaniem. Jeśli SetupDiEnumDeviceInterfaces jest przekazywana struktura SP_DEVINFO_DATA jako dane wejściowe w drugim parametrze, ogranicza enumerację tylko do tych interfejsów, które są skojarzone z urządzeniem wskazywanym przez SP_DEVINFO_DATA.

SetupDiEnumDeviceInterfaces zwraca strukturę SP_DEVICE_INTERFACE_DATA . SP_DEVICE_INTERFACE_DATA zawiera identyfikator GUID klasy interfejsu i inne informacje o interfejsie, w tym pole zarezerwowane zawierające zakodowane informacje, których można użyć do uzyskania nazwy interfejsu. Aby uzyskać nazwę interfejsu, wymagany jest jeden kolejny krok: SetupDiGetDeviceInterfaceDetail musi być wywoływany. SetupDiGetDeviceInterfaceDetail zwraca strukturę typu SP_DEVICE_INTERFACE_DETAIL_DATA zawierającą ścieżkę w drzewie obiektów systemowych definiujących interfejs.