共用方式為


FsRtlAllocatePoolWithQuotaTag 宏 (ntifs.h)

FsRtlAllocatePoolWithQuotaTag 例程會配置集區內存,並針對目前的進程收取配額。

語法

void FsRtlAllocatePoolWithQuotaTag(
  [in]  PoolType,
  [in]  NumberOfBytes,
  [in]  Tag
);

參數

[in] PoolType

要配置的集區類型。 下列其中之一:

  • NonPagedPool
  • PagedPool
  • NonPagedPoolCacheAligned
  • PagedPoolCacheAligned

NonPagedPoolMustSucceedNonPagedPoolCacheAlignedMustS 集區類型已過時,不應再使用。

[in] NumberOfBytes

要配置的位元元組數目。

[in] Tag

指定已配置記憶體的集區標籤。 驅動程式通常會將集區標記指定為一到四個 7 位 ASCII 字元的字串,以單引號分隔 (,例如 'abcd') 。 這個參數是必要的,而且不能是零。

傳回值

備註

如果集區配置失敗, FsRtlAllocatePoolWithQuotaTag 會引發STATUS_INSUFFICIENT_RESOURCES例外狀況。 若要控制此集區配置失敗的情況,驅動程式應該在 try-excepttry-finally 語句中包裝對 FsRtlAllocatePoolWithQuotaTag 的呼叫。

系統會將 Tag 參數指定的集區標籤與配置的緩衝區產生關聯。 Windows 調試程式 (WinDbg) 等程式設計工具,可以顯示與每個配置緩衝區相關聯的集區卷標。 集區標籤的值通常會以反向順序顯示。 例如,如果呼叫端傳遞 『Fred』 做為 Tag 參數的值,如果集區已傾印或追蹤調試程式中的集區使用量,這個值會顯示為 『derF』。

如需記憶體管理的詳細資訊,請參閱 記憶體管理

FsRtlAllocatePoolWithQuotaTag 配置的記憶體未初始化。 如果核心模式驅動程式要讓使用者模式軟體看見 (,以避免) 外泄潛在特殊許可權的內容,則核心模式驅動程式必須先將這個記憶體零。

FsRtlAllocatePoolWithQuotaTag 的呼叫端必須在 IRQL <= DISPATCH_LEVEL上執行。 在 DISPATCH_LEVEL 的呼叫端必須指定 NonPaged*/XxxPoolType。 否則,呼叫端必須在 IRQL < DISPATCH_LEVEL執行。

規格需求

需求
目標平台 Universal
標頭 ntifs.h (包含 Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (请参阅一节)

另請參閱

ExAllocatePoolWithQuotaTag

ExFreePool

FsRtlAllocatePoolWithQuota