EVT_ACX_FACTORY_CIRCUIT_PREPARE_HARDWARE回调函数 (acxcircuit.h)
当线路工厂处于准备硬件阶段时,驱动程序使用 EVT_ACX_FACTORY_CIRCUIT_PREPARE_HARDWARE 回调来添加功能。
语法
EVT_ACX_FACTORY_CIRCUIT_PREPARE_HARDWARE EvtAcxFactoryCircuitPrepareHardware;
NTSTATUS EvtAcxFactoryCircuitPrepareHardware(
WDFDEVICE Device,
ACXFACTORYCIRCUIT Factory,
WDFCMRESLIST ResourcesRaw,
WDFCMRESLIST ResourcesTranslated
)
{...}
参数
Device
与 ACX 线路关联的 WDFDEVICE 对象(Framework 对象摘要中所述)。
Factory
现有线路工厂 ACXFACTORYCIRCUIT 对象。 有关 ACX 对象的详细信息,请参阅 ACX 对象的摘要。
ResourcesRaw
一个 WDF 资源列表,描述要用于准备硬件阶段的原始资源。 这是一个 WDF 框架资源列表对象,该对象表示设备的硬件资源列表。 有关原始资源的详细信息,请参阅 Framework-Based 驱动程序 硬件资源。
ResourcesTranslated
一个 WDF 资源列表,描述要用于准备硬件阶段的已转换资源。 这是一个 WDF 框架资源列表对象,该对象表示设备的硬件资源列表。 有关已翻译的资源列表的详细信息,请参阅 原始和已翻译的资源。
返回值
如果调用成功,则返回 STATUS_SUCCESS
。 否则,它将返回适当的错误代码。 有关详细信息,请参阅 使用 NTSTATUS 值。
言论
若要注册 EvtAcxFactoryCircuitPrepareHardware 回调函数,驱动程序必须调用 AcxFactoryCircuitInitSetAcxCircuitPnpPowerCallbacks 方法。
如果驱动程序为 ACXFACTORYCIRCUIT 注册了 EvtAcxFactoryCircuitPrepareHardware 回调函数,则 ACX 框架在 WDF 框架调用驱动程序的 EvtDevicePrepareHardware 回调函数后调用该函数。
EvtAcxFactoryCircuitPrepareHardware 回调函数使用接收的 ResourcesRaw 和 ResourcesTranslated 句柄访问设备的原始和已转换的硬件资源。 回调函数可以调用 WdfCmResourceListGetCount,WdfCmResourceListGetDescriptor 遍历资源列表。 此回调函数无法修改资源列表。
有关资源列表以及资源显示顺序的详细信息,请参阅 原始和已翻译的资源。
通常,驱动程序的 EvtAcxFactoryCircuitPrepareHardware 回调函数在必要时执行以下作:
- 将物理内存地址映射到 ACXFACTORYCIRCUIT 的虚拟地址,以便驱动程序可以访问分配给设备的内存。
- (可选)驱动程序的 EvtAcxFactoryCircuitPrepareHardware 回调函数可能会将工作项排队以完成任何其他时间密集型配置任务。 对此类作使用工作项有助于确保设备的启动时间不会增加系统启动时间。 有关详细信息,请参阅 使用框架工作项。
- 通常,所有其他硬件初始化作(包括加载固件)应在设备进入其工作状态(D0)时进行,因此应在驱动程序的 EvtDeviceD0Entry 回调函数中发生。
在驱动程序的 EvtDeviceReleaseHardware 回调函数返回之前,EvtAcxCircuitPrepareHardware/EvtDevicePrepareHardware 回调函数接收的 ResourcesRaw 和 ResourcesTranslated 句柄保持有效。
如果驱动程序失败,EvtAcxFactoryCircuitPrepareHardware 回调,ACXFACTORYCIRCUIT 对象将置于删除挂起状态。
有关硬件资源的详细信息,请参阅 硬件资源简介。
有关 ACX 和 WDF 框架何时调用这些回调函数的详细信息,请参阅 PnP 和电源管理方案。
有关提供此回调函数的驱动程序的详细信息,请参阅函数驱动程序 支持 PnP 和电源管理。
ACX 要求
最低 ACX 版本: 1.0
有关 ACX 版本的详细信息,请参阅 ACX 版本概述。
要求
要求 | 价值 |
---|---|
标头 | acxcircuit.h |
IRQL | PASSIVE_LEVEL |