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。 否则,此方法可能会返回以下值之一:
返回代码 | 说明 |
---|---|
|
检测到无效的参数。 |
|
内存不足。 |
有关 WdfLookasideListCreate 方法可能返回的其他返回值的列表,请参阅 框架对象创建错误。
此方法还可能返回其他 NTSTATUS 值。
注解
驱动程序调用 WdfLookasideListCreate 以创建 lookaside-list 对象后,驱动程序可以调用 WdfMemoryCreateFromLookaside 以从 lookaside 列表中获取缓冲区。
默认情况下,新的 lookaside-list 对象的父对象是 WdfDriverCreate 方法创建的框架驱动程序对象。 可以使用 WDF_OBJECT_ATTRIBUTES 结构的 ParentObject 成员来指定不同的父级。 框架在删除父对象时删除 lookaside-list 对象。 如果驱动程序未更改默认父级,则驱动程序应在使用完该对象后删除 lookaside-list 对象;否则,lookaside-list 对象将一直保留,直到 I/O 管理器卸载驱动程序。
如果驱动程序同时为 LookasideAttributes 和 MemoryAttributes 参数提供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) |