EVT_ACX_CIRCUIT_RELEASE_HARDWARE回呼函式 (acxcircuit.h)

當 ACXCIRCUIT 處於發行硬體階段時,驅動程式會使用 EVT_ACX_CIRCUIT_RELEASE_HARDWARE 回呼來新增功能。

語法

EVT_ACX_CIRCUIT_RELEASE_HARDWARE EvtAcxCircuitReleaseHardware;

NTSTATUS EvtAcxCircuitReleaseHardware(
  WDFDEVICE Device,
  ACXCIRCUIT Circuit,
  WDFCMRESLIST ResourcesTranslated
)
{...}

參數

Device

WDFDEVICE 物件 (WDF - 與 指定 ACXCIRCUIT 相關聯的架構物件摘要) 。

Circuit

ACXCIRCUIT 物件 (在準備硬體階段的 ACX 物件 摘要) 中所述。

ResourcesTranslated

WDFCMRESLIST 架構資源清單物件的句柄,可識別 隨插即用 管理員指派給裝置的已轉譯硬體資源。 如需翻譯資源的詳細資訊,請參閱 原始和翻譯的資源

傳回值

如果呼叫成功,則傳 STATUS_SUCCESS 回 。 否則,它會傳回適當的錯誤碼。 如需詳細資訊,請參閱 使用NTSTATUS值

備註

若要註冊 EvtAcxCircuitReleaseHardware 回呼函式,您的驅動程式必須呼叫 AcxCircuitInitSetAcxCircuitPnpPowerCallbacks

如果驅動程式已註冊 EvtAcxCircuitReleaseHardware 回呼函式,架構會在下列轉換期間呼叫它:

  • 資源重新平衡
  • 依序移除
  • 意外移除

ACX 架構會在 WDF 架構停止傳送 I/O 要求給裝置之後呼叫 EvtAcxCircuitReleaseHardware 回呼函式、指派給裝置的任何中斷都已停用和中斷連線,且裝置已關閉。

ACX 架構會在 WDF 架構呼叫驅動程式的 EvtDeviceReleaseHardware 回呼函式之前,先呼叫 EvtAcxCircuitReleaseHardware 回呼函式。

當架構呼叫 EvtAcxCircuitReleaseHardware 時,裝置的 PDO 仍然存在,而且可以查詢處於關閉電源狀態的裝置資訊,例如 PCI 設定狀態。

此外,架構提供給 EvtDeviceReleaseHardware 的已轉譯硬體資源仍會指派給裝置。 此回呼函式的主要目的是釋放這些資源,特別是取消對應驅動程式 EvtAcxCircuitPrepareHardware 回呼函式所對應的任何記憶體資源。 驅動程式也可以使用此回呼來執行任何其他可能處於關閉電源狀態的 ACXCIRCUIT 管理活動。 通常,所有其他硬體關機作業都應該在驅動程式的 EvtDeviceD0Exit 回呼函式中進行。

如果已呼叫驅動程式的 EvtAcxCircuitReleaseHardware 回呼函式,ACX 架構一律會呼叫驅動程式的 EvtAcxCircuitPrepareHardware 回呼函式,除非 EvtAcxCircuitPrepareHardware 傳回失敗碼。

如需 ACX 和 WDF 架構何時呼叫這些回呼函式的詳細資訊,請參閱 PnP 和電源管理案例

如需硬體資源的詳細資訊,請參閱 硬體資源簡介

如需提供此回呼函式之驅動程式的詳細資訊,請參閱 函式驅動程式中的支援 PnP 和電源管理

範例

範例使用方式如下所示。

EVT_ACX_CIRCUIT_RELEASE_HARDWARE    EvtCircuitReleaseHardware;

NTSTATUS
EvtCircuitReleaseHardware(
    _In_ WDFDEVICE      Device,
    _In_ ACXCIRCUIT     Circuit,
    _In_ WDFCMRESLIST   ResourcesTranslated
    )
{
    PCIRCUIT_CONTEXT    circuitCtx  = GetCircuitContext(Circuit);
    CIpcEventReader *   eventReader = circuitCtx->EventReader;

    PAGED_CODE();

    UNREFERENCED_PARAMETER(Device);
    UNREFERENCED_PARAMETER(ResourcesTranslated);

    //
    // Disable 'remote' circuit notifications.
    //
    ASSERT(eventReader);
    eventReader->DisableEvents();

    // This should always succeed.
    return STATUS_SUCCESS;
}

ACX 需求

最低 ACX 版本: 1.0

如需 ACX 版本的詳細資訊,請參閱 ACX 版本概觀

規格需求

需求
標頭 acxcircuit.h
IRQL PASSIVE_LEVEL

另請參閱