ExAllocateFromLookasideListEx 函数 (wdm.h)
ExAllocateFromLookasideListEx 例程从指定的 lookaside 列表中删除第一个条目,或者,如果该列表为空,则动态分配新条目的存储。
语法
PVOID ExAllocateFromLookasideListEx(
[in, out] PLOOKASIDE_LIST_EX Lookaside
);
参数
[in, out] Lookaside
指向描述旁 观列表的LOOKASIDE_LIST_EX 结构的指针。 此结构以前由 ExInitializeLookasideListEx 例程初始化。
返回值
ExAllocateFromLookasideListEx 返回指向 lookaside-list 条目的指针(如果某个条目在列表中可用或可以动态分配)。 否则,此例程返回 NULL。
备注
注意
从 Windows 11 版本 22H2 开始,此函数从内联更改为导出。 因此,如果你生成面向最新版本的 Windows 的驱动程序,它将无法在较旧的 OS 版本中加载。 若要在 Visual Studio 中更改目标 OS 版本,请选择“配置属性”->“驱动程序设置”->“常规”。
此例程从指定的旁视列表中删除第一个条目(如果某个条目可用),并返回指向此条目的指针。 如果列表为空,则例程为新条目分配存储,并返回指向此条目的指针。 如果此分配失败,例程将返回 NULL。
如果 lookaside 列表为空, ExAllocateFromLookasideListEx 会调用 LookasideListAllocateEx 例程来为新条目分配存储(如果驱动程序提供了此类例程)。 否则,将使用默认分配例程来分配条目。
调用方完成使用该条目后,应通过调用 ExFreeToLookasideListEx 例程释放该条目。
在当前实现中,旁观列表作为后进先出 (LIFO) 堆栈运行。 因此,要释放 (并推送到堆栈) 的最后一个条目是分配 (从列表中弹出) 的下一个条目。
有关 lookaside 列表的详细信息,请参阅 Using Lookaside Lists。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows Vista 和更高版本的 Windows 中可用。 |
目标平台 | 桌面 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |