IOCTL_ACPI_EVAL_METHOD_EX IOCTL (acpiioct.h)
Ein Treiber für ein Gerät kann die IOCTL_ACPI_EVAL_METHOD_EX Gerätesteuerungsanforderung verwenden, um eine ACPI-Steuerelementmethode synchron auszuwerten, die von einem untergeordneten Gerät im Namespace des Geräts unterstützt wird. 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- auf IOCTL_ACPI_EVAL_METHOD_EX festgelegt ist.
- DeviceObject- auf einen Zeiger auf das physische Geräteobjekt (PDO) des Geräts festgelegt ist.
- InputBuffer- auf einen Zeiger auf eine Eingabepufferstruktur festgelegt ist, die vom Typ der Eingabeargumente abhängt, die an die Steuerelementmethode übergeben werden sollen. Weitere Informationen zu den von dieser IOCTL unterstützten Typeingabeargumenten finden Sie im Abschnitt "Hinweise" weiter unten in diesem Thema.
- InputBufferLength- wird auf die Größe des Eingabepuffers in Byte festgelegt, der von InputBufferbereitgestellt wird.
- OutputBufferLength liefert die Größe des Ausgabepuffers in Bytes, der von OutputBufferbereitgestellt wird.
- InternalDeviceIoControl auf FALSEfestgelegt ist.
- Ereignis- wird auf einen Zeiger auf ein vom Aufrufer zugewiesenes und initialisiertes Ereignisobjekt festgelegt.
Eingabepufferlänge
InputBufferLength- wird auf die Größe des Eingabepuffers in Byte festgelegt, der von InputBufferbereitgestellt 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 aus der Steuerelementmethode enthält.
- IoStatusBlock- auf einen Zeiger auf eine IO_STATUS_BLOCK-Struktur festgelegt ist.
Länge des Ausgabepuffers
OutputBufferLength liefert die Größe des Ausgabepuffers in Bytes, der von OutputBufferbereitgestellt wird.
Statusblock
Wenn die Anforderung erfolgreich ist, IoStatusBlock-–>Status ist 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 aus der Steuerelementmethode zu enthalten, wird der Status Member auf STATUS_BUFFER_OVERFLOW festgelegt, und OutputBuffer-->Length wird auf die erforderliche Länge des Ausgabepuffers festgelegt.
Wenn die Anforderung erfolgreich ist, wird die IoStatusBlock-->Information Member auf die Anzahl der Bytes festgelegt, die im Ausgabepuffer zurückgegeben werden; andernfalls wird der Information Member auf Null festgelegt.
Bemerkungen
Ein Treiber für ein Gerät kann IOCTL_ACPI_EVAL_METHOD_EX verwenden, um eine Steuerelementmethode synchron auszuwerten, die von einem untergeordneten Objekt im Namespace des Geräts unterstützt wird. Der Pfad und der Name der Steuerelementmethode, die von dieser Anforderung bereitgestellt wird, muss entweder der vollqualifizierte Pfad und der Name der Methode im ACPI-Namespace oder der Pfad und der Name der Methode relativ zum Gerät sein, an das die Anforderung gesendet wird. Angenommen, ein Gerät mit dem Namen "ABCD" ist ein unmittelbares untergeordnetes Element des Stamms eines ACPI-Namespaces, dass das "ABCD"-Gerät ein untergeordnetes Gerät namens "CHLD" unterstützt und dass das "CHLD"-Gerät eine Methode mit dem Namen "_FOO" unterstützt. In diesem Fall sendet ein Treiber zum Auswerten der Methode "_FOO" eine Auswertungsanforderung an das "ABCD"-Gerät und stellt entweder den Pfad und den Namen "\ABCD" bereit. CHLD._FOO" ist der vollqualifizierte Pfad und Name im ACPI-Namespace oder der Pfad und der Name "CHLD._FOO", der der Pfad und name relativ zum "ABCD"-Gerät im ACPI-Namespace ist.
IOCTL_ACPI_EVAL_METHOD_EX unterstützt die folgenden Typen von Eingabepufferstrukturen:
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX
ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX
ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX
Die Ausgabeargumente aus der Steuerelementmethode werden in der Struktur mit variabler Länge ACPI_EVAL_OUTPUT_BUFFER zurückgegeben, die vom OutBuffer Zeiger bereitgestellt wird. Die ACPI_EVAL_OUTPUT_BUFFER enthält ein Array mit variabler Länge ACPI_METHOD_ARGUMENT Strukturen, von denen jedes ein Ausgabeargument zurückgibt.
Weitere Informationen zum synchronen Auswerten von Steuerelementmethoden finden Sie unter Auswerten von ACPI-Steuerelementmethoden synchron.
Ein Treiber kann auch eine IOCTL_ACPI_EVAL_METHOD Anforderung verwenden, um eine Steuerelementmethode synchron auszuwerten, die ein unmittelbares untergeordnetes Objekt eines Geräts ist.
Informationen zum Auswerten einer ACPI-Steuerelementmethode ab Windows Server 2008 und Windows Vista finden Sie unter IOCTL_ACPI_ASYNC_EVAL_METHOD und IOCTL_ACPI_ASYNC_EVAL_METHOD_EX.
IOCTL_ACPI_EVAL_METHOD_EX kann nur bei IRQL-< DISPATCH_LEVEL verwendet werden.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows Vista und höhere Versionen von Windows. |
Header- | acpiioct.h (include Acpiioct.h) |
Siehe auch
ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX
ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX