FsRtlAllocatePoolWithTag 宏 (ntifs.h)
FsRtlAllocatePoolWithTag 例程配置集區內存。
語法
void FsRtlAllocatePoolWithTag(
[in] PoolType,
[in] NumberOfBytes,
[in] Tag
);
參數
[in] PoolType
要配置的集區類型。 下列其中一項:
- NonPagedPool
- PagedPool
- NonPagedPoolCacheAligned
- PagedPoolCacheAligned
NonPagedPoolMustSucceed 和 NonPagedPoolCacheAlignedMustS 集區類型已過時,不應再使用。
[in] NumberOfBytes
要配置的位元元組數目。 這是必要參數,不能為零。
[in] Tag
指定配置記憶體的集區標記。 驅動程式通常會將集區標記指定為一到四個 7 位 ASCII 字元的字串,並以單引號分隔(例如 'abcd')。 這是必要參數,不能為零。
傳回值
沒有
言論
如果集區配置失敗,FsRtlAllocatePoolWithTag 引發STATUS_INSUFFICIENT_RESOURCES例外狀況。 若要控制此集區配置失敗是否發生,驅動程式應該在 try- finally 語句
系統會將 Tag 參數所指定的集區標記與配置的緩衝區產生關聯。 Windows 調試程式 (WinDbg) 等程式設計工具可以顯示與每個已配置緩衝區相關聯的集區標記。 集區標籤的值通常會以反向順序顯示。 例如,如果呼叫端傳遞 『Fred』 做為 Tag 參數的值,則如果傾印集區,或追蹤調試程式中的集區使用量時,這個值會顯示為 『derF』。
如需記憶體管理的詳細資訊,請參閱 記憶體管理。
FsRtlAllocatePoolWithTag 配置的記憶體未初始化。 如果核心模式驅動程式要讓使用者模式軟體看到記憶體,則核心模式驅動程序必須先將這個記憶體設為零(以避免洩漏潛在的特殊許可權內容)。
FsRtlAllocatePoolWithTag 的呼叫端必須在 IRQL <= DISPATCH_LEVEL執行。 DISPATCH_LEVEL的呼叫端必須指定 NonPagedXxxPoolType。 否則,呼叫端必須在 IRQL <= APC_LEVEL執行。
要求
要求 | 價值 |
---|---|
目標平臺 | 普遍 |
標頭 | ntifs.h (include Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (請參閱一節) |