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

另请参阅

ExFreeToLookasideListEx

ExInitializeLookasideListEx

LOOKASIDE_LIST_EX

LookasideListAllocateEx