структура 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) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по