同步評估 ACPI 控制方法
設備磁碟機可以使用下列裝置控制要求來同步評估裝置 ACPI 命名空間中定義的控制方法:
-
此要求會評估控制項方法,這是傳送要求之裝置 ACPI 命名空間中的立即子物件。
-
此要求會同步評估裝置所支援的控制項方法,或傳送要求之裝置的子系子物件。
Windows ACPI 驅動程式Acpi.sys代表ACPI BIOS中系統描述資料表中指定的裝置處理這些要求。 這些要求可由核心模式設備磁碟機使用,這些驅動程式符合 核心模式驅動程式架構 (KMDF) 或 Windows 驅動程式模型 (WDM) 的需求。 從Windows 8開始,符合使用者模式驅動程式架構 (UMDF) 需求的使用者模式設備磁碟機可以使用這些要求。
例如,WDM 驅動程式會執行下列一連串的作業,以使用下列其中一個 IOCTLs:
呼叫 IoBuildDeviceIoControlRequest 來建置要求。
呼叫 IoCallDriver 以將要求向下傳送到裝置堆疊。
等候 I/O 管理員向驅動程式發出訊號,指出較低層級的驅動程式已完成要求。
檢查要求的狀態。
檢查輸出引數的有效性。
處理傳回給驅動程式的輸出引數。
完成要求。
若要建置要求,驅動程式會呼叫 IoBuildDeviceIoControlRequest 並提供下列參數:
IoControlCode 設定為 IOCTL_ACPI_EVAL_METHOD 或 IOCTL_ACPI_EVAL_METHOD_EX。
DeviceObject 設定為實體裝置物件的指標, (裝置的 PDO) 。
InputBuffer 會設定為輸入緩衝區結構的指標,視要傳遞至控制方法的輸入引數類型而定。 ACPI 驅動程式支援不採用任何輸入引數、採用單一整數、採用 ASCII 字串或採用自訂輸入引數陣列的方法。 如需所支援輸入緩衝區結構的詳細資訊,請參閱 控制方法輸入緩衝區結構。
InputBufferLength 會設定為 InputBuffer所提供輸入緩衝區的大小,以位元組為單位。
OutputBufferLength 會提供 OutputBuffer所提供輸出緩衝區的大小,以位元組為單位。
InternalDeviceIoControl 設定為 FALSE。
事件 會設定為呼叫端配置和初始化事件物件的指標。 驅動程式會等到 I/O 管理員發出此事件的訊號,這表示較低層級的驅動程式已完成要求。
OutputBuffer 提供 ACPI_EVAL_OUTPUT_BUFFER結構的指標 ,其中包含控制項方法的輸出引數。 輸出引數專屬於指定的控制項方法。 若要讓驅動程式傳回任何輸出,它必須配置足以保存所有輸出引數的緩衝區。
IoStatusBlock 設定為 IO_STATUS_BLOCK 結構。 這會傳回較低層級驅動程式所設定之要求的狀態。
如需如何評估不接受輸入引數之控制項方法的程式碼範例,請參閱 評估沒有輸入引數的控制項方法。
如需如何評估接受輸入引數的控制項方法的程式碼範例,請參閱 評估採用輸入引數的 Control 方法。