IOCTL_PMI_GET_CAPABILITIES IOCTL (pmi.h)
Запрос IOCTL_PMI_GET_CAPABILITIES получает сведения о возможностях и ресурсах счетчика электроэнергии.
Основной код
Входной буфер
Элемент 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) |