Freigeben über


IOCTL_ACPI_ENUM_CHILDREN IOCTL (acpiioct.h)

Die IOCTL_ACPI_ENUM_CHILDREN Gerätesteuerungsanforderung kann zum Aufzählen des Pfads und des Namens von Geräten oder benannten untergeordneten Objekten im ACPI-Namespace des Geräts verwendet werden, an das diese Anforderung gesendet wird. Ein 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- auf IOCTL_ACPI_ENUM_CHILDREN festgelegt ist.
  • DeviceObject- auf einen Zeiger auf das physische Geräteobjekt (PDO) des Geräts festgelegt ist.
  • InputBuffer- wird auf einen Zeiger auf eine variable Länge ACPI_ENUM_CHILDREN_INPUT_BUFFER Struktur festgelegt.
  • 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 variable Länge ACPI_ENUM_CHILDREN_OUTPUT_BUFFER Struktur bereit, in der der ACPI-Treiber den Pfad und den Namen der aufgezählten untergeordneten Geräte zurückgibt.
  • IoStatusBlock- 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 Pufferheader 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 die Pfade und Namen aller aufgezählten untergeordneten Objekte zu enthalten, wird der Status Member auf STATUS_BUFFER_OVERFLOW und OutputBuffer-festgelegt –>NumberOfChildren 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

IOCTL_ACPI_ENUM_CHILDREN gibt eine Struktur mit variabler Länge ACPI_ENUM_CHILDREN_OUTPUT_BUFFER zurück, die ein Array variabler Länge ACPI_ENUM_CHILD Strukturen enthält, von denen jeder den vollqualifizierten Pfad und den Namen eines Objekts im ACPI-Namespace des Geräts zurückgibt, an das die Anforderung gesendet wurde. Die Objekte, die diese Anforderung aufzählt, hängt von der Einstellung des Flags Member der bereitgestellten Eingabestruktur ACPI_ENUM_CHILDREN_INPUT_BUFFER wie folgt ab:

Wenn der vom Treiber zugewiesene Ausgabepuffer nicht groß genug ist, um alle angeforderten untergeordneten Namen zurückzugeben, gibt der ACPI-Treiber keine untergeordneten Namen zurück und legt den Status Member der IO_STATUS_BLOCK für die Anforderung auf STATUS_BUFFER_OVERFLOW fest. Wenn die Größe des Ausgabepuffers in Byte mindestens Größe(ACPI_ENUM_CHILDREN_OUTPUT_BUFFER_SIGNATURE) aufweist, legt der ACPI-Treiber auch NumberOfChildren- auf die Größe in Byte fest, die zum Abrufen der angeforderten Pfade und Namen erforderlich ist.

Ein Treiber verwendet in der Regel eine Sequenz von zwei IOCTL_ACPI_ENUM_CHILDREN Anforderungen zum Aufzählen der untergeordneten Objekte von Interesse. Der Treiber sendet die erste Anforderung, um die Größe des Ausgabepuffers abzurufen, der erforderlich ist, um den Pfad und den Namen aller angeforderten Objekte zu enthalten. Der Treiber sendet die zweite Anforderung, um den Pfad und den Namen der Objekte im Ausgabepuffer zurückzugeben.

Weitere Informationen zum Aufzählen untergeordneter Geräte eines Geräts finden Sie unter Enumerating Child Devices and Control Methods.

IOCTL_ACPI_ENUM_CHILDREN können 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_ENUM_CHILD

ACPI_ENUM_CHILDREN_INPUT_BUFFER

ACPI_ENUM_CHILDREN_OUTPUT_BUFFER