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

В 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 указатель на строку, завершающуюся нулевым символом, которая указывает идентификатор экземпляра устройства, для которого требуется получить информацию о связях.

  • Установите Buffer как указатель на буфер, который принимает список идентификаторов экземпляра устройства, который завершается значением NULL. Список завершается дополнительным символом NULL. Требуемый размер буфера можно получить, вызвав функцию CM_Get_Device_ID_List_Size .

  • Установите BufferLen на размер буфера Buffer в символах.

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

  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.