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


структура 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-устройства в многофункциональном принтере установлено значение TRUE , составное устройство не принадлежит физическому объекту непосредственного родителя, например USB-концентратору на компьютере с записной книжкой.

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

Если параметр Съемный имеет значение 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 . Задайте нулевое значение, если устройство не поддерживает состояние D1.

D2Latency

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

D3Latency

Указывает приблизительную задержку устройства в наихудшем случае (в 100 микросекундах) для возврата устройства в состояние PowerDeviceD0 из состояния PowerDeviceD3 . Установите нулевое значение, если устройство не поддерживает состояние 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