WdfLookasideListCreate 函数 (wdfmemory.h)

[仅适用于 KMDF]

WdfLookasideListCreate 方法创建一个 lookaside-list 对象,驱动程序可以从该对象获取内存对象。

语法

NTSTATUS WdfLookasideListCreate(
  [in, optional] PWDF_OBJECT_ATTRIBUTES LookasideAttributes,
  [in]           size_t                 BufferSize,
  [in]           POOL_TYPE              PoolType,
  [in, optional] PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
  [in, optional] ULONG                  PoolTag,
  [out]          WDFLOOKASIDE           *Lookaside
);

参数

[in, optional] LookasideAttributes

指向包含新 lookaside-list 对象的对象属性 的WDF_OBJECT_ATTRIBUTES 结构的指针。 此参数是可选的,可以WDF_NO_OBJECT_ATTRIBUTES。

[in] BufferSize

框架将为每个内存对象分配的缓冲区的非零大小(以字节为单位)。

[in] PoolType

一个POOL_TYPE类型的值,用于指定要分配的内存类型。

[in, optional] MemoryAttributes

指向 WDF_OBJECT_ATTRIBUTES 结构的指针,该结构包含驱动程序从 lookaside 列表中获取的每个内存对象的对象属性。 此参数是可选的,可以WDF_NO_OBJECT_ATTRIBUTES。

[in, optional] PoolTag

每个内存对象的缓冲区的驱动程序定义的池标记。 调试器显示此标记。 驱动程序通常指定最多四个字符的字符串,由单引号分隔, (例如“dcba”) 。 标记中每个字符的 ASCII 值必须介于 0 和 127 之间。 如果每个池标记是唯一的,则调试驱动程序会更容易。

如果 PoolTag 为零,框架会提供默认池标记,该标记使用驱动程序内核模式服务名称的前四个字符。 如果服务名称以“WDF”开头 (名称不区分大小写且不包含引号) ,则使用接下来的四个字符。 如果可用字符少于 4 个字符,则使用“FxDr”。

对于 KMDF 1.5 及更高版本,驱动程序可以使用 WDF_DRIVER_CONFIG 结构的 DriverPoolTag 成员来指定默认池标记。

[out] Lookaside

指向接收新 lookaside-list 对象的句柄的位置的指针。

返回值

如果操作成功,WdfLookasideListCreate 将返回STATUS_SUCCESS。 否则,此方法可能会返回以下值之一:

返回代码 说明
STATUS_INVALID_PARAMETER
检测到无效的参数。
STATUS_INSUFFICIENT_RESOURCES
内存不足。
 

有关 WdfLookasideListCreate 方法可能返回的其他返回值的列表,请参阅 框架对象创建错误

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

注解

驱动程序调用 WdfLookasideListCreate 以创建 lookaside-list 对象后,驱动程序可以调用 WdfMemoryCreateFromLookaside 以从 lookaside 列表中获取缓冲区。

默认情况下,新的 lookaside-list 对象的父对象是 WdfDriverCreate 方法创建的框架驱动程序对象。 可以使用 WDF_OBJECT_ATTRIBUTES 结构的 ParentObject 成员来指定不同的父级。 框架在删除父对象时删除 lookaside-list 对象。 如果驱动程序未更改默认父级,则驱动程序应在使用完该对象后删除 lookaside-list 对象;否则,lookaside-list 对象将一直保留,直到 I/O 管理器卸载驱动程序。

如果驱动程序同时为 LookasideAttributesMemoryAttributes 参数提供WDF_OBJECT_ATTRIBUTES结构,并且这两个结构都指定一个设备对象作为父对象,则设备对象句柄必须相同。

有关框架内存对象和查看列表的详细信息,请参阅 使用内存缓冲区

如果驱动程序为 PoolType 参数指定 PagedPool,则必须在 IRQL <= APC_LEVEL 调用 WdfLookasideListCreate 方法。 否则,可以在 IRQL <= DISPATCH_LEVEL 调用 方法。

示例

有关使用 WdfLookasideListCreate 的代码示例,请参阅 WdfMemoryCreateFromLookaside

要求

要求
目标平台 通用
最低 KMDF 版本 1.0
标头 wdfmemory.h (包括 Wdf.h)
Library Wdf01000.sys (请参阅框架库版本控制.)
IRQL 请参见“备注”部分。
DDI 符合性规则 DriverCreate (kmdf) KmdfIrql (kmdf) KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf)

另请参阅

WDF_OBJECT_ATTRIBUTES

WdfDriverCreate

WdfMemoryCreateFromLookaside