IOCTL_ACPI_ASYNC_EVAL_METHOD IOCTL (acpiioct.h)
Ein Treiber für ein Gerät kann die IOCTL_ACPI_ASYNC_EVAL_METHOD Gerätesteuerungsanforderung verwenden, um eine vom Gerät unterstützte ACPI-Steuerungsmethode asynchron auszuwerten. Der Treiber sollte IoBuildDeviceIoControlRequest aufrufen und die folgenden Eingabe- und Ausgabeparameter übergeben, um diese Anforderung zu erstellen.
Hauptcode
Eingabepuffer
Legen Sie die IoBuildDeviceIoControlRequest-Eingabeparameter wie folgt fest:
- IoControlCode ist auf IOCTL_ACPI_ASYNC_EVAL_METHOD festgelegt.
- DeviceObject ist auf einen Zeiger auf das objekt des physischen Geräts (PDO) des Geräts festgelegt.
- InputBuffer ist auf einen Zeiger auf eine Eingabepufferstruktur festgelegt, die vom Typ der Eingabeargumente abhängt, die an die Steuerelementmethode übergeben werden sollen. Weitere Informationen zum Typ der Eingabeargumente, die von dieser IOCTL unterstützt werden, finden Sie im Abschnitt Hinweise weiter unten in diesem Thema.
- InputBufferLength wird auf die Größe des Eingabepuffers in Bytes festgelegt, der von InputBuffer bereitgestellt wird.
- OutputBufferLength stellt die Größe des von OutputBuffer bereitgestellten Ausgabepuffers in Bytes bereit.
- InternalDeviceIoControl ist auf FALSE festgelegt.
- Das Ereignis ist auf NULL festgelegt.
Länge des Eingabepuffers
InputBufferLength wird auf die Größe des Eingabepuffers in Bytes festgelegt, der von InputBuffer bereitgestellt wird.
Ausgabepuffer
Legen Sie die IoBuildDeviceIoControlRequest-Ausgabeparameter wie folgt fest:
- OutputBuffer stellt einen Zeiger auf eine ACPI_EVAL_OUTPUT_BUFFER-Struktur bereit, die die Ausgabeargumente der Steuerelementmethode enthält.
- IoStatusBlock ist auf eine IO_STATUS_BLOCK-Struktur festgelegt.
Länge des Ausgabepuffers
OutputBufferLength stellt die Größe des von OutputBuffer bereitgestellten Ausgabepuffers in Bytes bereit.
Statusblock
Wenn die Anforderung erfolgreich ist, wird IoStatusBlock-Status> auf STATUS_SUCCESS festgelegt. Andernfalls wird der Status-Member auf einen Fehlercode festgelegt. Wenn der Ausgabepuffer nicht groß genug ist, um den Ausgabepufferheader zu enthalten, wird der Status-Member auf STATUS_BUFFER_TOO_SMALL festgelegt. Wenn der Ausgabepuffer groß genug ist, um den Ausgabepufferheader zu enthalten, aber nicht groß genug ist, um alle Ausgabeargumente der Steuerelementmethode zu enthalten, wird der Status-Member auf STATUS_BUFFER_OVERFLOW und OutputBuffer-Length> auf die erforderliche Länge des Ausgabepuffers festgelegt.
Wenn die Anforderung erfolgreich ist, wird der IoStatusBlock-Information-Member> auf die Anzahl der Bytes festgelegt, die im Ausgabepuffer zurückgegeben werden. Andernfalls wird der Information-Member auf 0 (null) festgelegt.
Hinweise
Ein Treiber für ein Gerät kann IOCTL_ACPI_ASYNC_EVAL_METHOD verwenden, um eine vom Gerät unterstützte Steuerungsmethode asynchron auszuwerten. Wenn das Gerät beispielsweise in einem ACPI-Namespace den Namen "ABCD" trägt und das "ABCD"-Gerät eine Methode namens "_FOO" unterstützt, kann diese IOCTL verwendet werden, um die Steuerungsmethode "_FOO" auszuwerten, indem die Anforderung an das "ABCD"-Gerät gesendet und der Name der Steuerungsmethode "_FOO" angegeben wird.
IOCTL_ACPI_ASYNC_EVAL_METHOD unterstützt die folgenden Typen von Eingabepufferstrukturen:
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER
ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING
ACPI_EVAL_INPUT_BUFFER_COMPLEX
Die Ausgabeargumente der Steuerelementmethode werden in der strukturvariablen ACPI_EVAL_OUTPUT_BUFFER zurückgegeben, die vom OutBuffer-Zeiger bereitgestellt wird. Die ACPI_EVAL_OUTPUT_BUFFER enthält ein Array von strukturen mit variabler Länge ACPI_METHOD_ARGUMENT, von denen jede ein Ausgabeargument zurückgibt.
Informationen zum synchronen Auswerten von ACPI-Steuerungsmethoden finden Sie unter IOCTL_ACPI_EVAL_METHOD, IOCTL_ACPI_EVAL_METHOD_EX und Synchrones Auswerten von ACPI-Steuerungsmethoden.
IOCTL_ACPI_ASYNC_EVAL_METHOD kann nur unter IRQL <= DISPATCH_LEVEL verwendet werden.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista und höhere Versionen von Windows. |
Kopfzeile | acpiioct.h (include Acpiioct.h) |
Weitere Informationen
ACPI_EVAL_INPUT_BUFFER_COMPLEX
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER