FsRtlAllocateAePushLock 函数 (ntifs.h)

FsRtlAllocateAePushLock 分配并初始化自动扩展推送锁。

语法

PVOID FsRtlAllocateAePushLock(
  [in] POOL_TYPE PoolType,
  [in] ULONG     Tag
);

参数

[in] PoolType

要为自动扩展推送锁分配的池内存类型。 有关可用池内存类型的说明,请参阅 POOL_TYPE 。 可以通过使用 POOL_RAISE_IF_ALLOCATION_FAILURE 标志按位 ORing 它来修改 PoolType 值。 如果无法满足分配请求,则此标志会导致引发异常。

[in] Tag

要用于已分配内存的池标记。 将池标记指定为由单引号分隔的 1 到 4 个字符的非零字符文本, (例如“Tag1”) 。 字符串通常按反向顺序指定, (例如,“1gaT”) 。 标记中的每个 ASCII 字符必须是) 0x7E (平铺) 0x20 (空间范围内的值。 每个分配代码路径都应使用唯一的池标记来帮助调试器和验证程序识别代码路径。

返回值

如果可用池中内存不足,无法满足请求,FsRtlAllocateAePushLock 将返回 NULL。 否则,例程返回指向已分配和初始化的自动扩展推送锁的指针。

注解

FsRtlAllocateAePushLock 用于为自动扩展推送锁分配池内存。 有关自动展开推送锁的详细信息 ,请参阅FSRTL_ADVANCED_FCB_HEADER

系统将池标记与分配的内存相关联。 WinDbg 等编程工具可以显示与每个分配的缓冲区关联的池标记。 GflagsWindows 调试工具中包含的工具,可打开从 特定池标记请求从特殊池 分配的系统功能。 WDK 中包含的 Poolmon 按池标记跟踪内存。

FsRtlAllocateAePushLock 的调用方随后必须调用 FsRtlFreeAePushLock 以释放分配的自动扩展推送锁。

当池 (分页或非分页) 量高或低时,系统会自动设置某些标准事件对象。 驱动程序可以等待这些事件来优化其池使用情况。 有关详细信息,请参阅 标准事件对象

要求

要求
最低受支持的客户端 Windows 10 版本 20H2
标头 ntifs.h
IRQL <= APC_LEVEL

另请参阅

FSRTL_ADVANCED_FCB_HEADER

FsRtlFreeAePushLock

FsRtlSetupAdvancedHeaderEx2