IOCTL_ACPI_GET_DEVICE_INFORMATION IOCTL (acpiioct.h)
裝置的驅動程式可以使用IOCTL_ACPI_GET_DEVICE_INFORMATION裝置控制要求,取得其裝置的精細識別資訊。 此 IOCTL 通常供支援多個裝置版本或修訂的驅動程式使用,且需要檢查組成裝置 HW 識別符字串的元件元件,以識別確切的裝置。 驅動程式應該呼叫 IoBuildDeviceIoControlRequest,並傳遞下列輸入和輸出參數來建置此要求。
主要程序代碼
輸入緩衝區
設定 IoBuildDeviceIoControlRequest 輸入參數,如下所示:
- IoControlCode 會設定為 IOCTL_ACPI_GET_DEVICE_INFORMATION。
- DeviceObject 會設定為裝置實體裝置物件 (PDO) 的指標。
- InputBuffer 會設定為輸入緩衝區結構的指標,該指標取決於要傳遞至控件方法的輸入自變數類型。 如需此 IOCTL 支援之輸入自變數類型的詳細資訊,請參閱本主題稍後的一節。
- InputBufferLength 會設定為輸入緩衝區的大小,以位元組為單位,InputBuffer。
- OutputBufferLength 提供 OutputBuffer所提供的輸出緩衝區大小,以位元組為單位。
- InternalDeviceIoControl 會設定為 FALSE。
- 事件 設定為 NULL。
輸入緩衝區長度
InputBufferLength 會設定為輸入緩衝區的大小,以位元組為單位,InputBuffer。
輸出緩衝區
設定 IoBuildDeviceIoControlRequest 輸出參數,如下所示:
- OutputBuffer 提供包含控件方法輸出自變數之 ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER 結構的指標。
- IoStatusBlock 會設定為 IO_STATUS_BLOCK 結構。
輸出緩衝區長度
OutputBufferLength 提供 OutputBuffer所提供的輸出緩衝區大小,以位元組為單位。
狀態區塊
如果要求成功,IoStatusBlock->Status 設定為 STATUS_SUCCESS;否則,狀態 成員會設定為錯誤碼。 如果輸出緩衝區不夠大而無法包含輸出緩衝區標頭,Status 成員會設定為 STATUS_BUFFER_TOO_SMALL。 如果輸出緩衝區夠大而足以包含輸出緩衝區標頭,但不足以包含控件方法的所有輸出自變數,Status 成員會設定為 STATUS_BUFFER_OVERFLOW,OutputBuffer->Length 設定為輸出緩衝區的必要長度。
如果要求成功,IoStatusBlock->Information 成員會設定為輸出緩衝區中傳回的位元組數目;否則,資訊 成員會設定為零。
言論
裝置的驅動程式可以使用IOCTL_ACPI_GET_DEVICE_INFORMATION來取得其裝置的精細識別資訊。 此 IOCTL 通常與支援多個硬體版本或裝置修訂的驅動程式搭配使用,且需要檢查構成裝置 HW 識別符字串的元件元件,以識別確切的裝置。 例如,驅動程式可能支援相同裝置的不同修訂,其中程式設計介面的某些層面或裝置的行為不同。 驅動程式可以確切識別其執行所在的修訂。
要求的輸出自變數會傳回 OutBuffer 指標所提供的可變長度 ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER 結構。 ACPI_DEVICE_INFORMATION_OUTPUT_BUFFER包含可變長度數位的陣列,每個數位都會分別傳回代表子系統標識符字串、廠商標識元字串和實例標識符字串的輸出自變數。
IOCTL_ACPI_GET_DEVICE_INFORMATION只能在 IRQL <= DISPATCH_LEVEL使用。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 8 和更新版本的 Windows。 |
標頭 | acpiioct.h (include Acpiioct.h) |