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 回调函数,框架会在以下转换期间调用它:

  • 资源再平衡
  • 有序删除
  • 意外删除

在 WDF 框架停止向设备发送 I/O 请求、已禁用分配给设备的任何中断并断开连接且设备已关闭之后,ACX 框架调用 EvtAcxCircuitReleaseHardware 回调函数。

ACX 框架在 WDF 框架调用驱动程序的 EvtDeviceReleaseHardware 回调函数之前调用 EvtAcxCircuitReleaseHardware 回调函数。

当框架调用 EvtAcxCircuitReleaseHardware 时,设备的 PDO 仍然存在,并且可以查询处于关闭状态的设备信息,例如 PCI 配置状态。

此外,框架提供给 EvtDeviceReleaseHardware 的已转换硬件资源仍分配给设备。 此回调函数的主要目的是释放这些资源,特别是取消映射驱动程序的 EvtAcxCircuitPrepareHardware 回调函数映射的任何内存资源。 驱动程序还可以使用此回调来执行在关闭状态下可能需要的任何其他 ACXCIRCUIT 管理活动。 通常,所有其他硬件关闭操作应在驱动程序的 EvtDeviceD0Exit 回调函数中发生。

如果已调用驱动程序的 EvtAcxCircuitPrepareHardware 回调函数,则 ACX 框架始终调用驱动程序的 EvtAcxCircuitReleaseHardware 回调函数,除非 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 版本概述

要求

要求
Header acxcircuit.h
IRQL PASSIVE_LEVEL

另请参阅