Поделиться через


Получение отношений устройств

В Windows Vista и более поздних версиях Windows унифицированная модель свойств устройства включает свойства отношений устройств. Унифицированная модель свойств устройства использует ключи свойств для представления этих свойств. Список связей, представленных в модели унифицированных свойств устройства:

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_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, выполните следующие действия.

  1. Вызовите функцию CM_Get_Parent , чтобы получить дескриптор экземпляра устройства на родительское устройство экземпляра устройства.

  2. Вызовите CM_Get_Device_ID , чтобы получить идентификатор экземпляра устройства, связанный с дескриптором экземпляра устройства, на родительском устройстве, полученном при предыдущем вызове CM_Get_Parent.

Эта информация, полученная с помощью этой процедуры, аналогична той, которая представлена свойством DEVPKEY_Device_Parent в унифицированной модели свойств устройства Windows Vista и более поздних версий.

Получение дочерних элементов экземпляра устройства

Чтобы получить идентификаторы экземпляров дочерних устройств экземпляра устройства в Windows Server 2003, Windows XP и Windows 2000, выполните следующие действия:

  1. Вызовите функцию CM_Get_Child , чтобы получить дескриптор экземпляра устройства первому дочернему устройству, связанному с экземпляром устройства.

  2. Вызов CM_Get_Sibling столько раз, сколько необходимо, чтобы перечислить все одноуровневые устройства первого дочернего устройства, полученного при вызове CM_Get_Child.

  3. Вызовите CM_Get_Device_ID , чтобы получить идентификаторы экземпляров устройства, связанные с дескрипторами экземпляров устройства, возвращенными вызовами CM_Get_Child и CM_Get_Sibling.

Эти сведения, полученные с помощью этой процедуры, совпадают с данными, представленными свойством DEVPKEY_Device_Children в унифицированной модели свойств устройств Windows Vista и более поздних версий.

Получение одноуровневых элементов экземпляра устройства

Чтобы получить идентификаторы экземпляров устройств одного уровня экземпляра устройства Abc в Windows Server 2003, Windows XP и Windows 2000, выполните следующие действия:

  1. Вызовите функцию CM_Get_Parent , чтобы получить дескриптор экземпляра устройства на родительское устройство экземпляра устройства Abc.

  2. Вызовите функцию CM_Get_Child , чтобы получить дескриптор экземпляра устройства к первому дочернему устройству родительского устройства экземпляра устройства Abc.

  3. Вызовите CM_Get_Sibling столько раз, сколько необходимо, чтобы перечислить все одноуровневые устройства первого дочернего устройства родительского устройства. Это перечисление также вернет дескриптор экземпляру устройства Abc.

  4. Вызовите CM_Get_Device_ID , чтобы получить идентификаторы экземпляров устройства, связанные с дескрипторами экземпляров устройства, возвращенными предыдущими вызовами CM_Get_Sibling. Удалите дескриптор экземпляра устройства Abc из списка одноуровневых устройств первого дочернего устройства родительского устройства.

Сведения, полученные с помощью этой процедуры, совпадают с данными, представленными свойством DEVPKEY_Device_Siblings в единой модели свойств устройства Windows Vista и более поздних версий. Если вызов функции CM_Xxx, указанный в этом разделе, завершается успешно, функция CM_Xxx извлекает запрошенные сведения и возвращает CR_SUCCESS. В противном случае функция CM_Xxx возвращает один из кодов ошибок с префиксом "CR_", определенных в Cfgmgr32.h.