FsRtlAllocateExtraCreateParameterList 函式 (ntifs.h)
FsRtlAllocateExtraCreateParameterList 例程會為ECP_LIST結構配置分頁集區內存,併產生該結構的指標。
語法
NTSTATUS FsRtlAllocateExtraCreateParameterList(
[in] FSRTL_ALLOCATE_ECPLIST_FLAGS Flags,
[out] PECP_LIST *EcpList
);
參數
[in] Flags
定義集區配置選項。 如果FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA旗標與 Flags 參數搭配使用位 OR 運算, 則 FsRtlAllocateExtraCreateParameterList 配置的任何集區都會根據目前的進程記憶體配額收費。
[out] EcpList
接收已初始化ECP清單結構的指標。 如果 FsRtlAllocateExtraCreateParameterList 無法配置足夠的集區,*EcpList 會是 NULL, 而 FsRtlAllocateExtraCreateParameterList 將會傳回狀態代碼STATUS_INSUFFICIENT_RESOURCES。
傳回值
FsRtlAllocateExtraCreateParameterList 可以傳回下列其中一個值:
傳回碼 | Description |
---|---|
STATUS_INSUFFICIENT_RESOURCES | FsRtlAllocateExtraCreateParameterList 無法為 ECP 清單結構配置足夠的記憶體。 在此情況下,*EcpList 會是 NULL。 |
STATUS_SUCCESS | 已成功配置和初始化 ECP_LIST 結構的記憶體。 在此情況下, 會在 EcpList 參數中傳回初始化清單結構的指標。 |
備註
操作系統是否會自動釋放 FsRtlAllocateExtraCreateParameterList 配置的記憶體,取決於 呼叫 FsRtlAllocateExtraCreateParameterList 時,如下列情況所示:
呼叫端可以叫用 FsRtlAllocateExtraCreateParameterList 來配置ECP_LIST,並在呼叫端叫用 IoCreateFileEx 例程之前新增一或多個 ECP 內容結構。 在此情況下,操作系統不會釋放任何 ECP 內容結構。 因此,呼叫端可以使用相同的 ECP 集對 IoCreateFileEx 進行多個呼叫。 當呼叫端使用ECP_LIST完成時,呼叫端必須呼叫 FltFreeExtraCreateParameter 例程以釋放ECP_LIST。
文件系統或文件系統篩選驅動程式處理 IRP_MJ_CREATE 要求時,文件系統或文件系統篩選驅動程式可以呼叫 FltInsertExtraCreateParameter ,將 ECP 附加至現有的ECP_LIST。 如果ECP_LIST不存在,呼叫端必須呼叫 FsRtlAllocateExtraCreateParameterList 來建立ECP_LIST。 在此情況下,建立作業完成時,I/O 管理員會自動清除ECP_LIST和 ECP 內容結構。 這可讓文件系統或篩選驅動程式的ECP在重新分析點的處理中正確傳播。 此程式可能需要產生多個IRP_MJ_CREATE要求。
如果FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA旗標搭配 Flags 參數使用,則會配置可分頁集區。 否則,會使用內部外觀清單來配置可分頁的集區。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista |
目標平台 | Universal |
標頭 | ntifs.h (包含 Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
另請參閱
FltAllocateExtraCreateParameter
FltAllocateExtraCreateParameterFromLookasideList