IOCTL_ACPI_EVAL_METHOD IOCTL (acpiioct.h)

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

Основной код

IRP_MJ_DEVICE_CONTROL

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

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

  • IoControlCode имеет значение IOCTL_ACPI_EVAL_METHOD.
  • 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 для синхронной оценки метода управления, который поддерживает устройство. Например, если устройство называется ABCD в пространстве имен ACPI, а устройство ABCD поддерживает метод с именем "_FOO", этот IOCTL можно использовать для оценки метода управления "_FOO", отправив запрос на устройство ABCD и указав имя метода управления "_FOO".

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

ACPI_EVAL_INPUT_BUFFER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING

ACPI_EVAL_INPUT_BUFFER_COMPLEX

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

Дополнительные сведения о синхронном вычислении методов управления см. в разделе Вычисление методов управления ACPI синхронно.

Начиная с Windows Server 2008 и Windows Vista драйвер также может использовать запрос IOCTL_ACPI_EVAL_METHOD_EX для синхронной оценки метода управления, который не является непосредственным дочерним объектом устройства.

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 и более поздних версий Windows.
заголовка acpiioct.h (include Acpiioct.h)

См. также

ACPI_EVAL_INPUT_BUFFER

ACPI_EVAL_INPUT_BUFFER_COMPLEX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING

ACPI_EVAL_OUTPUT_BUFFER

ACPI_METHOD_ARGUMENT

IOCTL_ACPI_ASYNC_EVAL_METHOD

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX

IOCTL_ACPI_EVAL_METHOD_EX