Получение отношений устройств
В Windows Vista и более поздних версиях Windows унифицированная модель свойств устройства включает свойства отношений устройств. Унифицированная модель свойств устройства использует ключи свойств для представления этих свойств. Список связей, представленных в модели унифицированных свойств устройства:
- DEVPKEY_Device_BusRelations
- DEVPKEY_Device_EjectionRelations
- DEVPKEY_Device_PowerRelations
- DEVPKEY_Device_RemovalRelations
- DEVPKEY_Device_Parent
- DEVPKEY_Device_Children
- DEVPKEY_Device_Siblings
Windows Server 2003, Windows XP и Windows 2000 не поддерживают ключи свойств унифицированной модели свойств. Однако вы можете получить соответствующие сведения, вызвав функции диспетчера конфигурации Plug and Play (PnP). Для обеспечения совместимости с более ранними версиями Windows Windows Vista и более поздние версии также поддерживают вызов функций диспетчера конфигурации PnP для получения свойств отношений устройств. Однако для доступа к свойствам отношения устройства следует использовать ключи свойств унифицированной модели свойств устройства. Сведения об использовании ключей свойств для доступа к свойствам драйвера устройства см. в разделе Доступ к свойствам экземпляра устройства (Windows Vista и более поздних версий).
Сведения о доступе к свойствам отношений устройств в Windows Server 2003, Windows XP и Windows 2000 см. в следующих разделах:
Получение отношений выброса, отношений удаления и отношений власти, а также отношений шины
Получение родительского элемента экземпляра устройства
Получение дочерних элементов экземпляра устройства
Получение одноуровневых элементов экземпляра устройства
Получение отношений выброса, отношений удаления и отношений власти, а также отношений шины
Чтобы получить сведения об отношениях устройств в Windows Server 2003, Windows XP и Windows 2000, вызовите CM_Get_Device_ID_List и укажите следующие значения параметров:
Присвойте pszFilter указатель на строку, завершающуюся значением NULL, которая указывает идентификатор экземпляра устройства, для которого требуется извлечь сведения о связях.
Установите параметр Buffer в качестве указателя на буфер, который получает список идентификаторов экземпляров устройств, завершаемых null. Список завершается дополнительным символом NULL. Требуемый размер буфера можно получить, вызвав функцию CM_Get_Device_ID_List_Size .
Задайте для BufferLen размер буфера (в символах).
Задайте для ulFlags один из следующих флагов, чтобы получить соответствующие сведения о связях:
CM_GETIDLIST_FILTER_EJECTIONRELATIONS
Флаг CM_GETIDLIST_FILTER_EJECTIONRELATIONS извлекает связи выброса, то есть те же сведения, которые предоставляются свойством устройства DEVPKEY_Device_EjectionRelations в Windows Vista и более поздних версиях.
CM_GETIDLIST_FILTER_REMOVALRELATIONS
Флаг CM_GETIDLIST_FILTER_REMOVALRELATIONS извлекает связи удаления, то есть те же сведения, которые предоставляются свойством устройства DEVPKEY_Device_RemovalRelations в Windows Vista и более поздних версиях.
CM_GETIDLIST_FILTER_POWERRELATIONS
Флаг CM_GETIDLIST_FILTER_POWERRELATIONS извлекает отношения власти, то есть те же сведения, которые предоставляются свойством устройства DEVPKEY_Device_PowerRelations в Windows Vista и более поздних версиях.
CM_GETIDLIST_FILTER_BUSRELATIONS
Флаг CM_GETIDLIST_FILTER_BUSRELATIONS извлекает связи между шинами, то есть те же сведения, которые предоставляются свойством устройства DEVPKEY_Device_BusRelations в Windows Vista и более поздних версиях.
Если вызов CM_Get_Device_ID_List выполнен успешно, CM_Get_Device_ID_List извлекает сведения о запрошенных отношениях и возвращает CR_SUCCESS. В противном случае CM_Get_Device_ID_List возвращает один из кодов ошибок с префиксом "CR_", определенных в Cfgmgr32.h.
Получение родительского элемента экземпляра устройства
Чтобы получить идентификатор экземпляра родительского устройства в Windows Server 2003, Windows XP и Windows 2000, выполните следующие действия.
Вызовите функцию CM_Get_Parent , чтобы получить дескриптор экземпляра устройства на родительское устройство экземпляра устройства.
Вызовите CM_Get_Device_ID , чтобы получить идентификатор экземпляра устройства, связанный с дескриптором экземпляра устройства, на родительском устройстве, полученном при предыдущем вызове CM_Get_Parent.
Эта информация, полученная с помощью этой процедуры, аналогична той, которая представлена свойством DEVPKEY_Device_Parent в унифицированной модели свойств устройства Windows Vista и более поздних версий.
Получение дочерних элементов экземпляра устройства
Чтобы получить идентификаторы экземпляров дочерних устройств экземпляра устройства в Windows Server 2003, Windows XP и Windows 2000, выполните следующие действия:
Вызовите функцию CM_Get_Child , чтобы получить дескриптор экземпляра устройства первому дочернему устройству, связанному с экземпляром устройства.
Вызов CM_Get_Sibling столько раз, сколько необходимо, чтобы перечислить все одноуровневые устройства первого дочернего устройства, полученного при вызове CM_Get_Child.
Вызовите CM_Get_Device_ID , чтобы получить идентификаторы экземпляров устройства, связанные с дескрипторами экземпляров устройства, возвращенными вызовами CM_Get_Child и CM_Get_Sibling.
Эти сведения, полученные с помощью этой процедуры, совпадают с данными, представленными свойством DEVPKEY_Device_Children в унифицированной модели свойств устройств Windows Vista и более поздних версий.
Получение одноуровневых элементов экземпляра устройства
Чтобы получить идентификаторы экземпляров устройств одного уровня экземпляра устройства Abc в Windows Server 2003, Windows XP и Windows 2000, выполните следующие действия:
Вызовите функцию CM_Get_Parent , чтобы получить дескриптор экземпляра устройства на родительское устройство экземпляра устройства Abc.
Вызовите функцию CM_Get_Child , чтобы получить дескриптор экземпляра устройства к первому дочернему устройству родительского устройства экземпляра устройства Abc.
Вызовите CM_Get_Sibling столько раз, сколько необходимо, чтобы перечислить все одноуровневые устройства первого дочернего устройства родительского устройства. Это перечисление также вернет дескриптор экземпляру устройства Abc.
Вызовите CM_Get_Device_ID , чтобы получить идентификаторы экземпляров устройства, связанные с дескрипторами экземпляров устройства, возвращенными предыдущими вызовами CM_Get_Sibling. Удалите дескриптор экземпляра устройства Abc из списка одноуровневых устройств первого дочернего устройства родительского устройства.
Сведения, полученные с помощью этой процедуры, совпадают с данными, представленными свойством DEVPKEY_Device_Siblings в единой модели свойств устройства Windows Vista и более поздних версий. Если вызов функции CM_Xxx, указанный в этом разделе, завершается успешно, функция CM_Xxx извлекает запрошенные сведения и возвращает CR_SUCCESS. В противном случае функция CM_Xxx возвращает один из кодов ошибок с префиксом "CR_", определенных в Cfgmgr32.h.