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 differenzierte Identifikationsinformationen zu seinem Gerät abzurufen. Diese IOCTL wird in der Regel von Treibern verwendet, die mehrere Versionen 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. 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_GET_DEVICE_INFORMATION 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 zum Typ von Eingabeargumenten, die von dieser IOCTL unterstützt werden, 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 ist auf NULL 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:
- OutputBuffer stellt einen Zeiger auf eine ACPI_DEVICE_INFORMATION_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 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_GET_DEVICE_INFORMATION verwenden, um differenzierte Identifikationsinformationen zu seinem Gerät zu erhalten. Diese IOCTL wird in der Regel mit Treibern verwendet, die mehrere Hardwareversionen oder Revisionen eines Geräts unterstützen, und muss die Komponententeile untersuchen, aus denen die HW-ID-Zeichenfolge des Geräts besteht, um das genaue Gerät zu identifizieren. Beispielsweise kann ein Treiber verschiedene Revisionen desselben Geräts unterstützen, bei denen sich einige Aspekte der Programmierschnittstelle oder das Verhalten des Geräts unterscheiden. Der Treiber kann genau identifizieren, auf welcher Revision er ausgeführt wird.
Die Ausgabeargumente der Anforderung werden in der ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER Struktur mit variabler Länge zurückgegeben, die vom OutBuffer-Zeiger bereitgestellt wird. Die ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER enthält ein Array von Arrays mit variabler Länge, von denen jedes ein Ausgabeargument zurückgibt, das die Zeichenfolge der Untersystem-ID, die Anbieter-ID und instance ID-Zeichenfolge darstellt.
IOCTL_ACPI_GET_DEVICE_INFORMATION können nur bei IRQL <= DISPATCH_LEVEL verwendet werden.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 8 und höheren Versionen von Windows. |
Kopfzeile | acpiioct.h (include Acpiioct.h) |