IOCTL_ACPI_ASYNC_EVAL_METHOD_EX IOCTL (acpiioct.h)
Драйвер для устройства может использовать IOCTL_ACPI_ASYNC_EVAL_METHOD_EX запрос на управление устройством для асинхронной оценки метода управления ACPI, поддерживаемого дочерним устройством устройства. Драйвер должен вызвать IoBuildDeviceIoControlRequest и передать следующие входные и выходные параметры для построения этого запроса.
Основной код
Входной буфер
Задайте входные параметры IoBuildDeviceIoControlRequest следующим образом:
- IoControlCode имеет значение IOCTL_ACPI_ASYNC_EVAL_METHOD_EX.
- DeviceObject — это указатель на физический объект устройства (PDO).
- InputBuffer имеет указатель на структуру входного буфера, которая зависит от типа входных аргументов, передаваемых методу элемента управления. Дополнительные сведения о входных аргументах типа, поддерживаемых этим IOCTL, см. в разделе Примечания далее в этом разделе.
- InputBufferLength устанавливается в размере входного буфера в байтах, предоставляемого InputBuffer.
- OutputBufferLength предоставляет размер выходного буфера в байтах, предоставляемый OutputBuffer.
- Параметр InternalDeviceIoControl имеет значение FALSE.
- Для события задано значение NULL.
Длина входного буфера
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_ASYNC_EVAL_METHOD_EX для асинхронной оценки метода управления, поддерживаемого дочерним объектом в пространстве имен устройства. Путь и имя метода управления, предоставленные этим запросом, должны быть либо полным путем и именем метода в пространстве имен ACPI, либо путем и именем метода относительно устройства, на которое отправляется запрос. Например, предположим, что устройство с именем "ABCD" является непосредственным дочерним элементом корня пространства имен ACPI, что устройство ABCD поддерживает дочернее устройство с именем "CHLD", а устройство "CHLD" поддерживает метод с именем "_FOO". В этом случае для оценки метода "_FOO" драйвер отправляет запрос на оценку устройству "ABCD" и предоставляет путь и имя "\ABCD". CHLD._FOO," — это полный путь и имя в пространстве имен ACPI, или путь и имя "CHLD._FOO", то есть путь и имя относительно устройства "ABCD" в пространстве имен ACPI.
IOCTL_ACPI_ASYNC_EVAL_METHOD_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, IOCTL_ACPI_EVAL_METHOD_EX и Синхронная оценка методов управления ACPI.
IOCTL_ACPI_ASYNC_EVAL_METHOD_EX можно использовать только в IRQL <= DISPATCH_LEVEL.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista и более поздние версии Windows. |
Верхняя часть | acpiioct.h (включая Acpiioct.h) |
См. также раздел
ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по