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


IOCTL_PMI_GET_CAPABILITIES IOCTL (pmi.h)

Запрос IOCTL_PMI_GET_CAPABILITIES получает сведения о возможностях и ресурсах счетчика электроэнергии.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Элемент AssociatedIrp.SystemBuffer пакета запроса ввода-вывода (IRP) указывает на буфер, выделенный инициатором, который используется как входной и выходной буфер для запроса. Во входных данных этот буфер содержит структуру PMI_CAPABILITIES , в которой для элементов Version и CapabilityType заданы допустимые значения. Элемент CapabilitiesType содержит значение перечисления PMI_CAPABILITIES_TYPE , указывающее тип сведений о возможностях PMI, извлекаемых из счетчика мощности. Это значение также определяет размер выходного буфера, необходимого для хранения этих сведений.

Длина входного буфера

Элемент Parameters.DeviceIoControl.InputBufferLength текущего расположения стека ввода-вывода IRP (IO_STACK_LOCATION) имеет размер буфера в байтах, на который указывает элемент AssociatedIrp.SystemBuffer . Этот размер должен быть больше или равен sizeof(PMI_CAPABILITIES), иначе запрос завершится ошибкой с состоянием STATUS_INVALID_PARAMETER.

Выходной буфер

Если запрос завершается успешно, буфер, на который указывает элемент AssociatedIrp.SystemBuffer , содержит запрошенные сведения о возможностях PMI. В начале буфера находится PMI_CAPABILITIES структура, которая указывает тип и размер сведений в буфере.

Длина выходного буфера

Элемент Parameters.DeviceIoControl.OutputBufferLength текущего расположения стека ввода-вывода IRP имеет размер в байтах буфера, на который указывает элемент AssociatedIrp.SystemBuffer . Для успешного выполнения запроса этот размер должен быть достаточно большим, чтобы содержать сведения о возможностях PMI, указанные в значении входного параметра PMI_CAPABILITIES_TYPE . В противном случае запрос завершится ошибкой с состоянием ошибки STATUS_BUFFER_TOO_SMALL.

Блок состояния

Для элемента Information задается размер в байтах структуры PMI_CAPABILITIES и ее данных переменной длины.

Для элемента Status задано одно из следующих значений:

STATUS_BUFFER_TOO_SMALL

Элемент Parameters.DeviceIoControl.OutputBufferLengthIRP меньше размера в байтах структуры PMI_CAPABILITIES и ее данных переменной длины.

STATUS_INVALID_PARAMETER

Выделенный инициатором входной буфер содержит недопустимое значение PMI_CAPABILITIES_TYPE .

STATUS_SUCCESS

Драйвер WDM, поддерживающий интерфейс PMI, успешно завершил запрос IOCTL.

Комментарии

Запрос IOCTL_PMI_GET_CAPABILITIES запрашивает возможности PMI или сведения об активах счетчика электроэнергии. Значение перечисления входных PMI_CAPABILITIES указывает тип возвращаемых сведений о возможностях. Тип данных и содержимое выходного буфера зависят от запрошенных данных.

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

значение PMI_CAPABILITIES_TYPE Описание
PmiMeteredHardware Структура PMI_METERED_HARDWARE_INFORMATION , указывающая аппаратные устройства, отслеживаемые счетчиком питания.
PmiReportedCapabilities Структура PMI_REPORTED_CAPABILITIES , указывающая типы возможностей PMI, поддерживаемых счетчиком электроэнергии.
Примечание Структура PMI_REPORTED_CAPABILITIES имеет переменную длину. Драйвер должен завершить выполнение этого запроса IOCTL, если выходной буфер (на который ссылается член MdlAddress IRP) слишком мал.
 

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows 7, Windows Server 2008 R2 и более поздних версиях операционных систем Windows.
Верхняя часть pmi.h (включая Pmi.h)

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

IO_STACK_LOCATION

IRP

PMI_CAPABILITIES

PMI_CAPABILITIES_TYPE

PMI_METERED_HARDWARE_INFORMATION

PMI_REPORTED_CAPABILITIES