FsRtlAllocatePoolWithQuotaTag 宏 (ntifs.h)
FsRtlAllocatePoolWithQuotaTag 例程會配置集區內存,並針對目前的進程收取配額。
語法
void FsRtlAllocatePoolWithQuotaTag(
[in] PoolType,
[in] NumberOfBytes,
[in] Tag
);
參數
[in] PoolType
要配置的集區類型。 下列其中之一:
- NonPagedPool
- PagedPool
- NonPagedPoolCacheAligned
- PagedPoolCacheAligned
NonPagedPoolMustSucceed 和 NonPagedPoolCacheAlignedMustS 集區類型已過時,不應再使用。
[in] NumberOfBytes
要配置的位元元組數目。
[in] Tag
指定已配置記憶體的集區標籤。 驅動程式通常會將集區標記指定為一到四個 7 位 ASCII 字元的字串,以單引號分隔 (,例如 'abcd') 。 這個參數是必要的,而且不能是零。
傳回值
無
備註
如果集區配置失敗, FsRtlAllocatePoolWithQuotaTag 會引發STATUS_INSUFFICIENT_RESOURCES例外狀況。 若要控制此集區配置失敗的情況,驅動程式應該在 try-except 或 try-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 (请参阅一节) |