ExAllocateFromLookasideListEx 函数 (wdm.h)

ExAllocateFromLookasideListEx 例程从指定的望边列表中删除第一个条目,或者,如果该列表为空,则动态分配新条目的存储。

语法

PVOID ExAllocateFromLookasideListEx(
  [in, out] PLOOKASIDE_LIST_EX Lookaside
);

参数

[in, out] Lookaside

指向描述外观列表的 LOOKASIDE_LIST_EX 结构的指针。 此结构以前由 ExInitializeLookasideListEx 例程初始化。

返回值

ExAllocateFromLookasideListEx 返回指向 lookaside 列表条目的指针,前提是列表中的条目可用或可以动态分配。 否则,此例程返回 NULL

言论

注意

从 Windows 11 版本 22H2 开始,此函数从内联更改为导出。 因此,如果生成面向最新版本 Windows 的驱动程序,它将无法在较旧的 OS 版本中加载。 若要在 Visual Studio 中更改目标 OS 版本,请选择“配置属性->驱动程序设置->常规”。

此例程从指定的外观列表中删除第一个条目(如果条目可用),并返回指向此条目的指针。 如果列表为空,则例程会为新条目分配存储,并返回指向此条目的指针。 如果此分配失败,则例程返回 NULL

如果 lookaside 列表为空,ExAllocateFromLookasideListEx 调用 LookasideListAllocateEx 例程来为新条目分配存储(如果驱动程序提供了此类例程)。 否则,将使用默认分配例程来分配条目。

调用方使用该条目后,应通过调用 ExFreeToLookasideListEx 例程来释放条目。

在当前实现中,外观列表作为最后一出(LIFO)堆栈运行。 因此,要释放的最后一个条目(并推送到堆栈上)是从列表中分配的下一个条目(弹出)。

有关外观列表的详细信息,请参阅 使用 Lookaside 列表

要求

要求 价值
最低支持的客户端 在 Windows Vista 和更高版本的 Windows 中可用。
目标平台 桌面
标头 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

另请参阅

ExFreeToLookasideListEx

ExInitializeLookasideListEx

LOOKASIDE_LIST_EX

LookasideListAllocateEx