ufxFdoInit 函数 (ufxclient.h)

初始化客户端驱动程序随后在调用 WdfDeviceCreate 时提供的WDFDEVICE_INIT结构。

语法

NTSTATUS UfxFdoInit(
  [in]      WDFDRIVER              WdfDriver,
  [in, out] PWDFDEVICE_INIT        DeviceInit,
  [in, out] PWDF_OBJECT_ATTRIBUTES FdoAttributes
);

参数

[in] WdfDriver

驱动程序的 WDF 驱动程序对象的句柄,该句柄是驱动程序从以前调用 WdfDriverCreateWdfGetDriver 时获取的。

[in, out] DeviceInit

指向 WDFDEVICE_INIT 结构的指针。

[in, out] FdoAttributes

指向调用方分配 WDF_OBJECT_ATTRIBUTES 结构的指针,该结构描述 的对象属性

返回值

如果操作成功,该方法将返回STATUS_SUCCESS或NT_SUCCESS (状态) 等于 TRUE 的另一个状态值。 否则,它将返回一个状态值,NT_SUCCESS (状态) 等于 FALSE。

注解

客户端驱动程序在其 EvtDriverDeviceAdd 回调函数中接收指向框架分配WDFDEVICE_INIT结构的指针。 然后,它使用此指针调用 UfxFdoInit ,然后调用 WdfDeviceCreate 来创建 WDFDEVICE 对象。

默认情况下,对于 WDF 驱动程序,设备的功能驱动程序是电源策略所有者。

以下代码片段演示如何调用 UfxFdoInit

NTSTATUS
UfxClientDeviceCreate(
    _In_ WDFDRIVER Driver,
    _In_ PWDFDEVICE_INIT DeviceInit
    )
/*++

Routine Description:

    Worker routine called to create a device and its software resources.

Arguments:

    Driver - WDF driver object

    DeviceInit - Pointer to an opaque init structure. Memory for this
                 structure will be freed by the framework when WdfDeviceCreate
                 succeeds. So don't access the structure after that point.

Return Value:

    Appropriate NTSTATUS value

--*/
{
    WDF_OBJECT_ATTRIBUTES DeviceAttributes;
    WDFDEVICE WdfDevice;

    PAGED_CODE();

    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&DeviceAttributes, CONTROLLER_CONTEXT);

    //
    // Do UFX-specific initialization
    //
    Status = UfxFdoInit(Driver, DeviceInit, &DeviceAttributes);

    //
    // Proceed to WdfDeviceCreate
    //
    
    ...

}

要求

要求
最低受支持的客户端 Windows 10
目标平台 Windows
标头 ufxclient.h
Library ufxstub.lib
IRQL PASSIVE_LEVEL