IOCTL_ACPI_GET_DEVICE_INFORMATION IOCTL (acpiioct.h)
Ein Treiber für ein Gerät kann die IOCTL_ACPI_GET_DEVICE_INFORMATION Gerätesteuerungsanforderung verwenden, um detaillierte Identifikationsinformationen über sein Gerät zu erhalten. Diese IOCTL wird in der Regel von Treibern verwendet, die mehrere Versionen oder Überarbeitungen eines Geräts unterstützen, und die Komponententeile untersuchen müssen, aus denen die HW-ID-Zeichenfolge des Geräts besteht, um das genaue Gerät zu identifizieren. 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- wird auf IOCTL_ACPI_GET_DEVICE_INFORMATION festgelegt.
- 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 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 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 NULL-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_DEVICE_INFORMATION_OUTPUT_BUFFER Struktur bereit, die die Ausgabeargumente aus der Steuerelementmethode enthält.
- 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 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_GET_DEVICE_INFORMATION verwenden, um detaillierte Identifikationsinformationen über sein Gerät zu erhalten. Diese IOCTL wird in der Regel mit Treibern verwendet, die mehrere Hardwareversionen oder Revisionen eines Geräts unterstützen, und müssen die Komponententeile untersuchen, aus denen die HW-ID-Zeichenfolge des Geräts besteht, um das genaue Gerät zu identifizieren. Beispielsweise kann ein Treiber unterschiedliche Überarbeitungen desselben Geräts unterstützen, bei denen ein Aspekt der Programmierschnittstelle oder das Verhalten des Geräts unterschiedlich ist. Der Treiber kann genau erkennen, auf welcher Revision es ausgeführt wird.
Die Ausgabeargumente aus der Anforderung werden in der Struktur mit variabler Länge ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER zurückgegeben, die vom OutBuffer Zeiger bereitgestellt wird. Die ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER enthält ein Array mit Arrays mit variabler Länge, von denen jedes ein Ausgabeargument zurückgibt, das die Zeichenfolge der Untersystem-ID, die Anbieter-ID-Zeichenfolge und die Instanz-ID-Zeichenfolge darstellt.
IOCTL_ACPI_GET_DEVICE_INFORMATION können nur bei IRQL-<= DISPATCH_LEVEL verwendet werden.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 8 und höhere Versionen von Windows. |
Header- | acpiioct.h (include Acpiioct.h) |