структура 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) |