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 方法可能返回的其他返回值的列表,请参阅 Framework 对象创建错误

此方法还可以 返回其他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)
图书馆 Wdf01000.sys(请参阅框架库版本控制。
IRQL 请参阅“备注”部分。
DDI 符合性规则 DriverCreate(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf),KmdfIrqlExplicit(kmdf)

另请参阅

WDF_OBJECT_ATTRIBUTES

WdfDriverCreate

WdfMemoryCreateFromLookaside