WdfFdoInitAllocAndQueryProperty 函数 (wdffdo.h)

[适用于 KMDF 和 UMDF]

WdfFdoInitAllocAndQueryProperty 方法分配缓冲区并检索指定的设备属性。

语法

NTSTATUS WdfFdoInitAllocAndQueryProperty(
  [in]           PWDFDEVICE_INIT          DeviceInit,
  [in]           DEVICE_REGISTRY_PROPERTY DeviceProperty,
  [in]           POOL_TYPE                PoolType,
  [in, optional] PWDF_OBJECT_ATTRIBUTES   PropertyMemoryAttributes,
  [out]          WDFMEMORY                *PropertyMemory
);

参数

[in] DeviceInit

指向驱动程序从其 EvtDriverDeviceAdd 回调函数获取的 WDFDEVICE_INIT 结构的指针。

[in] DeviceProperty

用于标识要检索的设备属性的 DEVICE_REGISTRY_PROPERTY类型枚举器值。

[in] PoolType

指定要分配的内存类型的 POOL_TYPE类型枚举器值。

[in, optional] PropertyMemoryAttributes

指向调用方分配 WDF_OBJECT_ATTRIBUTES 结构的指针,该结构描述将分配 WdfFdoInitAllocAndQueryProperty 内存对象的对象属性。 此参数是可选的,可以WDF_NO_OBJECT_ATTRIBUTES。

[out] PropertyMemory

指向 WDFMEMORY 类型位置的指针,该位置接收框架内存对象的句柄。

返回值

如果作成功,该方法将返回STATUS_SUCCESS。 其他返回值包括:

返回代码 说明
STATUS_INVALID_PARAMETER 或STATUS_INVALID_PARAMETER_2
指定的 DeviceProperty 值无效。
STATUS_INVALID_DEVICE_REQUEST
WDFDEVICE_INIT 结构不是从驱动程序的 EvtDriverDeviceAdd 回调函数获取的。
 

此方法还可以返回其他 NTSTATUS 值

注解

驱动程序必须在调用 WdfDeviceCreate之前调用 WdfFdoInitAllocAndQueryProperty。 有关调用 WdfDeviceCreate的详细信息,请参阅 创建框架设备对象

调用 WdfDeviceCreate后,驱动程序可以通过调用 WdfDeviceAllocAndQueryProperty来获取设备属性信息。

有关 WdfFdoInitAllocAndQueryProperty 方法的详细信息,请参阅 在函数驱动程序中创建设备对象。

或者,可以使用 WdfFdoInitAllocAndQueryPropertyEx 访问通过统一属性模型公开的设备属性。

例子

下面的代码示例调用 WdfFdoInitAllocAndQueryProperty 以获取包含设备设置类名称的框架内存对象的句柄。 然后,该示例调用 WdfMemoryGetBuffer 以获取指向包含安装程序类名称的 Unicode 字符串的缓冲区的指针。

NTSTATUS  status = STATUS_SUCCESS;
PVOID  pMemoryBuffer = NULL;
WDFMEMORY  memory = NULL;

status = WdfFdoInitAllocAndQueryProperty(
                                         DeviceInit,
                                         DevicePropertyClassName, 
                                         NonPagedPool,
                                         WDF_NO_OBJECT_ATTRIBUTES,
                                         &memory
                                         );
if(NT_SUCCESS(status)){
 pMemoryBuffer = WdfMemoryGetBuffer(
                                    memory,
                                    NULL
                                    );
}

要求

要求 价值
目标平台 普遍
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
标头 wdffdo.h (包括 Wdf.h)
图书馆 Wdf01000.sys(KMDF):WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
DDI 符合性规则 DeviceInitAPI(kmdf)DriverCreate(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

另请参阅

WdfDeviceAllocAndQueryProperty

WdfFdoInitQueryProperty