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


IOCTL_ACPI_EVAL_METHOD_EX IOCTL (acpiioct.h)

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

Основной код

IRP_MJ_DEVICE_CONTROL

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

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

  • 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_SUCCESS; в противном случае элемент состояния имеет код ошибки. Если выходной буфер недостаточно велик, чтобы содержать заголовок выходного буфера, то для элемента состояния задано значение STATUS_BUFFER_TOO_SMALL. Если выходной буфер достаточно велик, чтобы содержать заголовок выходного буфера, но не достаточно велик, чтобы содержать все выходные аргументы из метода управления, элемент Status имеет значение STATUS_BUFFER_OVERFLOW, а OutputBuffer—>Длина задана для требуемой длины выходного буфера.

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

Замечания

Драйвер устройства может использовать 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 можно использовать только в IRQL < DISPATCH_LEVEL.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Vista и более поздних версий Windows.
заголовка acpiioct.h (include 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