評估 ACPI 控制項方法

進階設定和電源介面 (ACPI) 控制方法是宣告和定義查詢和設定系統硬體作業的軟體。 ACPI 相容的系統提供一組最少的控制方法。 控制方法是以 ACPI 來來源語言 (ASL) 撰寫,由 ASL 編譯器編譯成 ACPI Machine Language (AML) 、從系統韌體載入 ACPI 命名空間,並由 ACPI 驅動程式解譯。

符合核心模式驅動程式架構需求的核心模式設備磁碟機 (KMDF) Windows 驅動程式模型 (WDM) 可以使用裝置控制要求來評估 ACPI 控制方法。 從Windows 8開始,符合使用者模式驅動程式架構需求的使用者模式驅動程式 (UMDF) 可以使用裝置控制要求來評估 ACPI 控制方法。 一般而言,驅動程式會評估 ACPI 控制方法,以啟動或設定平臺特定函式。 驅動程式可以在載入實體裝置物件的命名空間內評估 ACPI 控制方法 , (PDO) 。 針對在 ACPI 列舉裝置的裝置堆疊中載入的驅動程式,ACPI 驅動程式一律是建立並操作裝置堆疊中 PDO 的匯流排驅動程式。 這項功能包括評估父裝置子系子系所支援的控制項方法。

驅動程式會藉由將下列其中一個 IRP_MJ_DEVICE_CONTROL 要求傳送至裝置來評估控制方法。

  • IOCTL_ACPI_EVAL_METHOD

    此要求會同步評估傳送要求之裝置所支援的控制項方法。 若要使用此 IOCTL,裝置的驅動程式會提供輸入和輸出方法引數緩衝區、方法的名稱,以及等候要求完成的事件物件。 方法必須是傳送要求之裝置 ACPI 命名空間中的立即子物件。

  • IOCTL_ACPI_ASYNC_EVAL_METHOD

    此要求會以非同步方式評估傳送要求之裝置所支援的控制項方法。 若要使用此 IOCTL,裝置的驅動程式會提供輸入和輸出方法引數緩衝區、方法的名稱,以及 I/O 管理員在所有較低層級驅動程式完成要求之後呼叫的 IoCompletion 常式。 方法必須是傳送要求之裝置 ACPI 命名空間中的立即子物件。

  • IOCTL_ACPI_EVAL_METHOD_EX

    此要求會同步評估裝置所支援的控制項方法,或傳送要求之裝置的子系子物件。 若要使用此 IOCTL,裝置的驅動程式會提供輸入和輸出方法引數緩衝區、裝置 ACPI 命名空間中控制項方法的路徑和名稱,以及等候要求完成的事件物件。

  • IOCTL_ACPI_ASYNC_EVAL_METHOD_EX

    此要求會以非同步方式評估裝置或傳送要求之裝置的子系子物件所支援的控制項方法。 若要使用此 IOCTL,裝置的驅動程式會提供輸入和輸出方法引數緩衝區、裝置 ACPI 命名空間中控制方法的路徑和名稱,以及 I/O 管理員在所有較低層級驅動程式完成要求之後呼叫的 IoCompletion 常式。

如需如何同步評估 ACPI 控制方法的詳細資訊,請參閱 同步評估 ACPI 控制項方法。 如需如何以非同步方式評估 ACPI 控制項方法的詳細資訊,請參閱 IOCTL_ACPI_ASYNC_EVAL_METHODIOCTL_ACPI_ASYNC_EVAL_METHOD_EX

若要讓裝置的驅動程式評估不是裝置立即子物件的控制項方法,驅動程式必須在裝置的 ACPI 命名空間中提供方法的路徑和名稱。 為了協助取得裝置子物件的路徑和名稱,Windows 支援 IOCTL_ACPI_ENUM_CHILDREN 要求,裝置的驅動程式可用來列舉下列專案:

  • 裝置及其立即子裝置。

  • 裝置及其所有子系子裝置。

  • 裝置 ACPI 命名空間中提供名稱的子系子物件,特別是控制方法。

如需如何在裝置命名空間中列舉裝置和方法的相關資訊,請參閱 列舉子裝置和控制方法

如需驅動程式可用來協助評估控制項方法之系統提供宏的相關資訊,請參閱 Control Method Macros

如需 ACPI 裝置、控制方法和命名空間的詳細資訊,請參閱 進階設定和電源介面規格