структура DEVICE_CAPABILITIES (wdm.h)

Структура DEVICE_CAPABILITIES описывает возможности PnP и питания устройства. Эта структура возвращается в ответ на IRP_MN_QUERY_CAPABILITIES IRP.

Синтаксис

typedef struct _DEVICE_CAPABILITIES {
  USHORT             Size;
  USHORT             Version;
  ULONG              DeviceD1 : 1;
  ULONG              DeviceD2 : 1;
  ULONG              LockSupported : 1;
  ULONG              EjectSupported : 1;
  ULONG              Removable : 1;
  ULONG              DockDevice : 1;
  ULONG              UniqueID : 1;
  ULONG              SilentInstall : 1;
  ULONG              RawDeviceOK : 1;
  ULONG              SurpriseRemovalOK : 1;
  ULONG              WakeFromD0 : 1;
  ULONG              WakeFromD1 : 1;
  ULONG              WakeFromD2 : 1;
  ULONG              WakeFromD3 : 1;
  ULONG              HardwareDisabled : 1;
  ULONG              NonDynamic : 1;
  ULONG              WarmEjectSupported : 1;
  ULONG              NoDisplayInUI : 1;
  ULONG              Reserved1 : 1;
  ULONG              WakeFromInterrupt : 1;
  ULONG              SecureDevice : 1;
  ULONG              ChildOfVgaEnabledBridge : 1;
  ULONG              DecodeIoOnBoot : 1;
  ULONG              Reserved : 9;
  ULONG              Address;
  ULONG              UINumber;
  DEVICE_POWER_STATE DeviceState[POWER_SYSTEM_MAXIMUM];
  SYSTEM_POWER_STATE SystemWake;
  DEVICE_POWER_STATE DeviceWake;
  ULONG              D1Latency;
  ULONG              D2Latency;
  ULONG              D3Latency;
} DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;

Члены

Size

Задает размер структуры в байтах. Это поле задается компонентом, отправляющим запрос IRP_MN_QUERY_CAPABILITIES .

Version

Указывает версию структуры, в настоящее время — версию 1. Это поле задается компонентом, отправляющим запрос IRP_MN_QUERY_CAPABILITIES .

DeviceD1

Указывает, поддерживает ли оборудование устройства состояние питания D1. Драйверы не должны изменять это значение.

DeviceD2

Указывает, поддерживает ли оборудование устройства состояние питания D2. Драйверы не должны изменять это значение.

LockSupported

Указывает, поддерживает ли устройство блокировку физического устройства, которая предотвращает извлечение устройства. Этот элемент относится к извлечению устройства из его слота, а не к извлечению части съемного носителя из устройства.

EjectSupported

Указывает, поддерживает ли устройство извлечение устройства с программным управлением, когда система находится в состоянии PowerSystemWorking . Этот элемент относится к извлечению устройства из его слота, а не к извлечению части съемного носителя из устройства.

Removable

Указывает, можно ли динамически удалить устройство из его непосредственного родительского элемента. Если для свойства Removable задано значение TRUE, устройство не принадлежит к тому же физическому объекту, что и его родительский объект.

Например, если для составного USB-устройства в многофункциональном принтере установлено значение "Съемный", то составное устройство не принадлежит физическому объекту его непосредственного родителя, например USB-концентратору на компьютере с записной книжкой.

В большинстве случаев драйвер шины, а не драйвер функции, должен определять значение параметра Removable устройства. Для USB-устройств драйвер USB-концентратора задает параметр Съемный . Драйвер функции не должен изменять его.

Если для свойства Removable задано значение TRUE, устройство отображается в программе Отключить или Извлечь оборудование , если для SurpriseRemovalOK также не задано значение TRUE.

DockDevice

Указывает, является ли устройство периферийным устройством для закрепления.

UniqueID

Указывает, является ли идентификатор экземпляра устройства уникальным для всей системы. Этот бит ясно, если идентификатор экземпляра уникален только в пределах область шины. Дополнительные сведения см. в разделе Строки идентификации устройств.

SilentInstall

Указывает, должны ли диспетчер устройств подавлять все диалоговые окна установки, за исключением обязательных диалоговых окон, таких как "совместимые драйверы не найдены".

RawDeviceOK

Указывает, может ли драйвер базовой шины управлять устройством, если отсутствует драйвер-функция (например, устройства SCSI в режиме сквозной передачи). Этот режим работы называется необработанным режимом.

SurpriseRemovalOK

Указывает, может ли драйвер-функция устройства обрабатывать ситуацию, когда устройство удаляется до того, как Windows сможет отправить ему IRP_MN_QUERY_REMOVE_DEVICE . Если для свойства SurpriseRemovalOK задано значение TRUE, устройство можно безопасно удалить из его непосредственного родительского элемента независимо от состояния, в которое находится его драйвер.

Например, стандартная USB-мышь не поддерживает состояние оборудования, поэтому ее можно безопасно удалить в любое время. Однако внешний жесткий диск, кэши драйверов которого записываются в память, невозможно безопасно удалить без предварительного сброса кэша драйвера на оборудование.

Драйверы ДЛЯ USB-устройств, поддерживающих неожиданное удаление, должны устанавливать значение TRUE только в том случае, если IRP передается в стек драйверов.

WakeFromD0

Указывает, может ли устройство реагировать на внешний сигнал пробуждения в состоянии D0. Драйверы не должны изменять это значение.

WakeFromD1

Указывает, может ли устройство реагировать на внешний сигнал пробуждения, находясь в состоянии D1. Драйверы не должны изменять это значение.

WakeFromD2

Указывает, может ли устройство реагировать на внешний сигнал пробуждения, находясь в состоянии D2. Драйверы не должны изменять это значение.

WakeFromD3

Указывает, может ли устройство реагировать на внешний сигнал пробуждения в состоянии D3. Драйверы не должны изменять это значение.

HardwareDisabled

Этот флаг указывает, что оборудование устройства отключено.

Драйвер родительской шины устройства или драйвер фильтра шины устанавливает этот флаг, когда такой драйвер определяет, что оборудование устройства отключено.

Диспетчер PnP отправляет один IRP_MN_QUERY_CAPABILITIES IRP сразу после перечисления устройства, а другой — после запуска устройства. Диспетчер PnP проверяет этот бит только после перечисления устройства. После запуска устройства этот бит игнорируется.

NonDynamic

Зарезервировано для будущего использования.

WarmEjectSupported

Зарезервировано для будущего использования.

NoDisplayInUI

Не отображать устройство в пользовательском интерфейсе. Если этот бит задан, устройство никогда не отображается в пользовательском интерфейсе, даже если устройство присутствует, но не запускается. Только водители автобусов и связанные водители фильтров шины должны устанавливать этот бит. (Также см. флаг PNP_DEVICE_DONT_DISPLAY_IN_UI в структуре PNP_DEVICE_STATE .)

Reserved1

Зарезервировано для системного использования.

WakeFromInterrupt

Указывает, отвечает ли драйвер или ACPI за обработку события пробуждения. Если задано значение , драйвер отвечает за обработку события пробуждения. ACPI активирует устройство, когда оно получает IRP_MN_WAIT_WAKE IRP, но не подключает прерывание. Завершите IRP, чтобы уведомить стек устройства о событии пробуждения.

SecureDevice

Указывает, является ли устройство безопасным.

ChildOfVgaEnabledBridge

Для устройства VGA указывает, задан ли бит декодирования VGA для родительского моста.

DecodeIoOnBoot

Определяет, включено ли декодирование ввода-вывода на устройстве при загрузке.

Reserved

Зарезервировано для системного использования.

Address

Указывает адрес, указывающий, где находится устройство в его базовой шине.

Интерпретация этого числа зависит от шины. Если адрес неизвестен или водитель автобуса не поддерживает адрес, водитель автобуса оставляет этот элемент со значением по умолчанию 0xFFFFFFFF.

В следующем списке описаны сведения, которые некоторые водители автобусов хранят в поле Адрес для своих дочерних устройств.

Шина Описание
1394 Не предоставляет адрес, так как адреса являются непостоянными. Значение по умолчанию — 0xFFFFFFFF.
EISA Номер слота (0–F).
IDE Для устройства интегрированной среды разработки адрес содержит целевой идентификатор и LUN. Для канала интегрированной среды разработки адрес равен нулю или одному (0 = основной канал и 1 = дополнительный канал).
ISApnp Не предоставляет адрес. Значение по умолчанию — 0xFFFFFFFF.
PC Card (PCMCIA) Номер сокета (обычно 0x00 или 0x40).
PCI Номер устройства в высоком слове и номер функции в нижнем слове.
SCSI Идентификатор целевого объекта.
USB номер порта.

UINumber

Указывает номер, связанный с устройством, который может отображаться в пользовательском интерфейсе.

Обычно это номер слота, который воспринимается пользователем, например номер, напечатанный рядом с слотом на доске, или другое число, которое упрощает поиск физического устройства для пользователя. Для автобусов без такого соглашения или когда значение UINumber неизвестно, водитель автобуса оставляет этот элемент со значением по умолчанию 0xFFFFFFFF.

DeviceState[POWER_SYSTEM_MAXIMUM]

Массив значений, указывающий наиболее активное состояние питания устройства, которое устройство может поддерживать для каждого состояния питания системы. Элемент DeviceState[PowerSystemWorking] массива соответствует состоянию системы S0. Запись для PowerSystemUnspecified зарезервирована для использования системой.

Записи в этом массиве основаны на возможностях родительского devnode. Как правило, драйвер не должен изменять эти значения. Однако при необходимости драйвер может понизить значение, например, с PowerDeviceD1 до PowerDeviceD2.

Если драйвер шины не может определить соответствующее состояние питания для устройства с корневым перечислением, он устанавливает для DeviceState[PowerSystemWorking] значение PowerDeviceD0, а для всех остальных записей — PowerDeviceD3.

SystemWake

Указывает состояние питания системы с наименьшим энергопотреблением, из которого устройство может сигнализировать о событии пробуждения. Значение PowerSystemUnspecified указывает, что устройство не может разбудить систему.

Водитель автобуса может получить эти сведения со своего родительского devnode.

Как правило, драйвер не должен изменять это значение. Однако при необходимости драйвер может повысить состояние питания, например, из PowerSystemHibernate в PowerSystemS1, чтобы указать, что его устройство не может вывести систему из состояния гибернации, но может переходить из спящего режима с более высоким энергопотреблением.

DeviceWake

Указывает состояние питания устройства с наименьшим энергопотреблением, из которого устройство может сигнализировать о событии пробуждения. Значение PowerDeviceUnspecified указывает, что устройство не может сообщить о событии пробуждения.

D1Latency

Указывает приблизительную задержку устройства в худшем случае в 100 микросекундах для возврата устройства в состояние PowerDeviceD0 из состояния PowerDeviceD1 . Установите значение 0, если устройство не поддерживает состояние D1.

D2Latency

Указывает приблизительную задержку устройства в наихудшем случае (в 100 микросекунд) для возврата устройства в состояние PowerDeviceD0 из состояния PowerDeviceD2 . Установите значение 0, если устройство не поддерживает состояние D2.

D3Latency

Указывает приблизительную задержку устройства в наихудшем случае (в единицах 100 микросекунд) для возврата устройства в состояние PowerDeviceD0 из состояния PowerDeviceD3 . Установите значение 0, если устройство не поддерживает состояние D3.

Комментарии

Водители автобуса задают соответствующие значения в этой структуре в ответ на IRP_MN_QUERY_CAPABILITIES IRP. Драйверы фильтра шины, драйверы функций и драйверы фильтров могут изменять возможности, заданные водителем шины.

Драйверы, отправляющие запрос IRP_MN_QUERY_CAPABILITIES , должны инициализировать элементы size, version, Address и UINumber этой структуры перед отправкой IRP.

Дополнительные сведения об использовании структуры DEVICE_CAPABILITIES для описания возможностей питания устройства см. в разделе Возможности создания отчетов об использовании питания устройства.

Требования

Требование Значение
Заголовок wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)

См. также раздел

IRP_MN_QUERY_CAPABILITIES

PNP_DEVICE_STATE