PFREE_FUNCTION函式指標
文件系統舊版篩選驅動程式可以將 PFREE_FUNCTION 型別例程註冊為篩選條件的 FreeCallback回 呼例程。 當文件系統使用 FsRtlTeardownPerFileContexts 移除檔案內容物件,或使用 FsRtlTeardownPerStreamContexts 移除數據流內容物件時,文件系統會呼叫 FreeCallback。
您必須使用 FREE_FUNCTION 類型來宣告回呼例程。 如需詳細資訊,請參閱一節中的範例。
語法
typedef VOID ( *FreeCallback)(
_In_ PVOID Buffer
);
參數
- 緩衝區 [in]: 要釋放之FSRTL_PER_FILE_CONTEXT 或 FSRTL_PER_STREAM_CONTEXT 結構的指標。
傳回值
無
備註
當文件系統卸除檔案的每個檔案內容物件時,它必須呼叫 FsRtlTeardownPerFileContexts。 這個例程會呼叫與檔案相關聯之所有個別檔案內容結構的 FreeCallback 例程。 這個回呼例程必須釋放用於 FSRTL_PER_FILE_CONTEXT 物件和任何相關內容資訊的任何記憶體。 呼叫 FsRtlTeardownPerStreamContexts 時,這也是每個數據流內容的情況, 而且 FreeCallback 會釋放用於 FSRTL_PER_STREAM_CONTEXT 對象的記憶體。
如需在呼叫 FreeCallback 期間同步處理個別檔案內容物件的存取權或每個數據流內容對象的備註,請參閱 FsRtlTeardownPerFileContexts 和 FsRtlTeardownPerStreamContexts。
注意
FreeCallback 例程無法以遞歸方式呼叫文件系統,或取得任何文件系統資源。
若要定義名為 MyFreeFunction 的FreeCallback 回呼函式,您必須先提供靜態驅動程式驗證程式 (SDV) 和其他驗證工具所需的函式宣告,如下所示:
FREE_FUNCTION MyFreeFunction;
然後實作回呼函式,如下所示:
VOID
MyFreeFunction (
__in PVOID Buffer
)
{...}
規格需求
需求類型 | 需求 |
---|---|
最低支援的用戶端 | Windows Vista |
標頭 | Wdm.h (包含 Wdm.h 或 Ntddk.h) |
IRQL | <= APC_LEVEL |