IOCTL_ACPI_EVAL_METHOD_EX IOCTL (acpiioct.h)

Драйвер для устройства может использовать запрос IOCTL_ACPI_EVAL_METHOD_EX управления устройством для синхронной оценки метода управления ACPI, который поддерживается дочерним устройством в пространстве имен устройства. Драйвер должен вызвать IoBuildDeviceIoControlRequest и передать следующие входные и выходные параметры для сборки этого запроса.

Основной код

IRP_MJ_DEVICE_CONTROL

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

Задайте входные параметры IoBuildDeviceIoControlRequest следующим образом:

  • IoControlCode имеет значение IOCTL_ACPI_EVAL_METHOD_EX.
  • DeviceObject имеет указатель на объект физического устройства (PDO) устройства.
  • InputBuffer задает указатель на структуру входного буфера, которая зависит от типа входных аргументов, передаваемых методу элемента управления. Дополнительные сведения о входных аргументах типа, поддерживаемых этим IOCTL, см. в разделе Примечания далее в этом разделе.
  • InputBufferLength имеет размер (в байтах) входного буфера, предоставляемого InputBuffer.
  • OutputBufferLength предоставляет размер выходного буфера в байтах, предоставляемый OutputBuffer.
  • Параметр InternalDeviceIoControl имеет значение FALSE.
  • Событие задается в качестве указателя на выделенный вызывающим и инициализированный объект события.

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

InputBufferLength имеет размер (в байтах) входного буфера, предоставляемого InputBuffer.

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

Задайте выходные параметры IoBuildDeviceIoControlRequest следующим образом:

  • OutputBuffer предоставляет указатель на ACPI_EVAL_OUTPUT_BUFFER структуру, содержащую выходные аргументы из метода элемента управления.
  • IoStatusBlock имеет указатель на структуру IO_STATUS_BLOCK .

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

OutputBufferLength предоставляет размер выходного буфера в байтах, предоставляемый OutputBuffer.

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

Если запрос выполнен успешно, ioStatusBlock-Status> имеет значение STATUS_SUCCESS; в противном случае члену Status присваивается код ошибки. Если выходной буфер недостаточно велик, чтобы содержать заголовок выходного буфера, для элемента Status устанавливается значение STATUS_BUFFER_TOO_SMALL. Если выходной буфер достаточно велик, чтобы содержать заголовок выходного буфера, но не достаточно велик, чтобы содержать все выходные аргументы из метода управления, члену Status присваивается значение STATUS_BUFFER_OVERFLOW, а OutputBuffer-Length> — необходимая длина выходного буфера.

Если запрос выполнен успешно, для элемента IoStatusBlock-Information> устанавливается число байтов, возвращаемых в выходном буфере; в противном случае элементу Information присваивается значение 0.

Комментарии

Драйвер для устройства может использовать IOCTL_ACPI_EVAL_METHOD_EX для синхронной оценки метода управления, поддерживаемого дочерним объектом в пространстве имен устройства. Путь и имя метода управления, предоставляемые этим запросом, должны быть либо полным путем и именем метода в пространстве имен ACPI, либо путем и именем метода относительно устройства, на которое отправляется запрос. Например, предположим, что устройство с именем "ABCD" является непосредственным дочерним элементом корня пространства имен ACPI, что устройство "ABCD" поддерживает дочернее устройство с именем "CHLD", а устройство CHLD поддерживает метод с именем "_FOO". В этом случае для оценки метода "_FOO" драйвер отправляет запрос на оценку устройству "ABCD" и предоставляет путь и имя "\ABCD". CHLD._FOO, то есть полный путь и имя в пространстве имен ACPI, или путь и имя "CHLD._FOO", то есть путь и имя относительно устройства "ABCD" в пространстве имен ACPI.

IOCTL_ACPI_EVAL_METHOD_EX поддерживает следующие типы структур входных буферов:

ACPI_EVAL_INPUT_BUFFER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX

ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX

Выходные аргументы из метода управления возвращаются в структуре ACPI_EVAL_OUTPUT_BUFFER переменной длины, предоставленной указателем OutBuffer . ACPI_EVAL_OUTPUT_BUFFER включает массив ACPI_METHOD_ARGUMENT структур переменной длины, каждая из которых возвращает выходной аргумент.

Дополнительные сведения о синхронной оценке методов управления см. в статье Синхронная оценка методов управления ACPI.

Драйвер также может использовать запрос IOCTL_ACPI_EVAL_METHOD для синхронной оценки метода управления, который является непосредственным дочерним объектом устройства.

Сведения об асинхронной оценке метода управления ACPI, начиная с Windows Server 2008 и Windows Vista, см. в разделе IOCTL_ACPI_ASYNC_EVAL_METHOD и IOCTL_ACPI_ASYNC_EVAL_METHOD_EX.

IOCTL_ACPI_EVAL_METHOD_EX можно использовать только на DISPATCH_LEVEL IRQL < .

Требования

Требование Значение
Минимальная версия клиента Windows Vista и более поздние версии Windows.
Верхняя часть acpiioct.h (включая Acpiioct.h)

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

ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX

ACPI_EVAL_INPUT_BUFFER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX

ACPI_EVAL_OUTPUT_BUFFER

IOCTL_ACPI_ASYNC_EVAL_METHOD

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX

IOCTL_ACPI_EVAL_METHOD