Freigeben über


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-Steuerungsmethode 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

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Legen Sie die IoBuildDeviceIoControlRequest-Eingabeparameter wie folgt fest:

  • IoControlCode ist auf IOCTL_ACPI_EVAL_METHOD_EX festgelegt.
  • DeviceObject ist auf einen Zeiger auf das physische Geräteobjekt (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 zu den Typeingabeargumenten, die dieses IOCTL unterstützt, finden Sie im Abschnitt Hinweise weiter unten in diesem Thema.
  • InputBufferLength ist auf die Größe des Eingabepuffers in Bytes festgelegt, die von InputBuffer bereitgestellt wird.
  • OutputBufferLength stellt die Größe des Ausgabepuffers in Bytes bereit, der von OutputBuffer bereitgestellt wird.
  • InternalDeviceIoControl ist auf FALSE festgelegt.
  • Ereignis wird auf einen Zeiger auf ein vom Aufrufer zugewiesenes und initialisiertes Ereignisobjekt festgelegt.

Eingabepufferlänge

InputBufferLength ist auf die Größe des Eingabepuffers in Bytes festgelegt, die von InputBuffer bereitgestellt wird.

Ausgabepuffer

Legen Sie die IoBuildDeviceIoControlRequest-Ausgabeparameter wie folgt fest:

Länge des Ausgabepuffers

OutputBufferLength stellt die Größe des Ausgabepuffers in Bytes bereit, der von OutputBuffer bereitgestellt wird.

Statusblock

Wenn die Anforderung erfolgreich ist, wird IoStatusBlock-Status> auf STATUS_SUCCESS festgelegt, andernfalls wird das Statuselement auf einen Fehlercode festgelegt. Wenn der Ausgabepuffer nicht groß genug ist, um den Ausgabepufferheader zu enthalten, wird das Statuselement 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 Steuerungsmethode zu enthalten, wird der Statusmember 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 Member Information auf 0 festgelegt.

Hinweise

Ein Treiber für ein Gerät kann IOCTL_ACPI_EVAL_METHOD_EX verwenden, um eine Steuerungsmethode synchron auszuwerten, die von einem untergeordneten Objekt im Namespace des Geräts unterstützt wird. Der Pfad und Name der Von dieser Anforderung bereitgestellten Steuerungsmethode müssen 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 Stammes eines ACPI-Namespace, 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 "_FOO"-Methode eine Auswertungsanforderung an das "ABCD"-Gerät und gibt entweder den Pfad und den Namen "\ABCD" an. CHLD._FOO", wobei es sich um den vollqualifizierten Pfad und Namen im ACPI-Namespace handelt, oder um den Pfad und Namen "CHLD._FOO", wobei es sich um den Pfad und den Namen relativ zum "ABCD"-Gerät im ACPI-Namespace handelt.

IOCTL_ACPI_EVAL_METHOD_EX unterstützt die folgenden Typen von Eingabepufferstrukturen:

ACPI_EVAL_INPUT_BUFFER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX

ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX

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 ACPI_METHOD_ARGUMENT Strukturen mit variabler Länge, von denen jede ein Ausgabeargument zurückgibt.

Weitere Informationen zum synchronen Auswerten von Steuerungsmethoden finden Sie unter Synchrones Auswerten von ACPI-Steuerungsmethoden.

Ein Treiber kann auch eine IOCTL_ACPI_EVAL_METHOD-Anforderung verwenden, um eine Steuerungsmethode synchron auszuwerten, die ein unmittelbares untergeordnetes Objekt eines Geräts ist.

Informationen zum Asynchronen Auswerten einer ACPI-Steuerungsmethode unter 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 können nur am 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_EX

ACPI_EVAL_INPUT_BUFFER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX

ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX

ACPI_EVAL_OUTPUT_BUFFER

IOCTL_ACPI_ASYNC_EVAL_METHOD

IOCTL_ACPI_ASYNC_EVAL_METHOD_EX

IOCTL_ACPI_EVAL_METHOD