Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Драйвер для устройства может использовать запрос IOCTL_ACPI_EVAL_METHOD управления устройствами для синхронной оценки метода управления ACPI, поддерживаемого устройством. Драйвер должен вызывать IoBuildDeviceIoControlRequest и передавать следующие входные и выходные параметры для сборки этого запроса.
Основной код
Входной буфер
Задайте входные параметры 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_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_COMPLEX
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER
ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING