FSRTL_PER_FILE_CONTEXT結構 (ntifs.h)
舊版文件系統篩選驅動程式可以使用 FSRTL_PER_FILE_CONTEXT 結構,將驅動程式特定內容資訊與開啟的檔案產生關聯。
語法
typedef struct _FSRTL_PER_FILE_CONTEXT {
LIST_ENTRY Links;
PVOID OwnerId;
PVOID InstanceId;
PFREE_FUNCTION FreeCallback;
} FSRTL_PER_FILE_CONTEXT, *PFSRTL_PER_FILE_CONTEXT;
成員
Links
此結構的鏈接,位於與相同檔案相關聯的所有個別檔案內容結構清單中。 FsRtlInsertPerFileContext 會將這個成員插入檔案的所有個別檔案內容結構清單中。
OwnerId
篩選驅動程式配置緩衝區的指標,可唯一識別每個檔案內容結構的擁有者。 此變數的格式為 filter-driver-specific。 篩選驅動程序必須將此成員設定為非 NULL 值。
InstanceId
篩選驅動程式配置緩衝區的指標,可用來區別相同篩選驅動程式所建立的每個檔案內容結構。 此變數的格式為 filter-driver-specific。 篩選驅動程式可以將此成員設定為 NULL。
FreeCallback
釋放個別檔案內容結構的 回呼例程 指標。 篩選驅動程序必須將此成員設定為非 NULL 值。
備註
為了將內容資訊與檔案產生關聯,舊版篩選驅動程式會先配置 FSRTL_PER_FILE_CONTEXT 結構,並使用 FsRtlInsertPerFileContext 將其初始化。 驅動程式接著會使用 FsRtlInsertPerFileContext ,將該 FSRTL_PER_FILE_CONTEXT 對象與檔案產生關聯。 當系統卸除檔案的檔案內容物件時,它會呼叫 FsRtlTeardownPerFileContexts,它會呼叫 FSRTL_PER_FILE_CONTEXT 物件中指定的 FreeCallback 例程。 該回呼必須釋放驅動程式特定的內容物件。
篩選寫入器應該選擇具有意義且方便的 OwnerID 值,例如驅動程式物件或裝置對象的位址。
篩選寫入器應該選擇具意義且方便的 InstanceID 值,例如檔案的檔案內容對象的位址。 使用 FsRtlGetPerFileContextPointer 宏,從檔案物件擷取該位址。
FSRTL_PER_FILE_CONTEXT結構可以依原狀使用,或內嵌在驅動程式定義的個別檔案內容結構中。
FSRTL_PER_FILE_CONTEXT結構可以從分頁或非分頁集區配置。
FsRtlInitPerFileContext 宏會初始化FSRTL_PER_FILE_CONTEXT結構。
參數
FileContext
FSRTL_PER_FILE_CONTEXT
要初始化FSRTL_PER_FILE_CONTEXT物件。
OwnerId
PVOID
篩選驅動程式配置變數的指標,可唯一識別個別檔案內容結構的擁有者。 格式為篩選驅動程式特定。 此參數必須有非 NULL 值。
InstanceId
PVOID
篩選驅動程式配置變數的指標,可唯一識別個別檔案內容結構的擁有者。 格式為篩選驅動程式特定。 此參數必須有非 NULL 值。
FreeCallback
PFREE_FUNCTION
釋放個別檔案內容結構的 回呼例程 指標。
傳回值
無效
無。
呼叫 FsRtlInsertPerFileContext 之前,必須先使用此宏。
篩選寫入器應該選擇具有意義且方便的 OwnerID 值,例如驅動程式物件或裝置對象的位址。
篩選寫入器應該使用具意義且方便的 InstanceID 值,例如檔案的檔案內容對象的位址。 使用 FsRtlGetPerFileContextPointer 宏,從檔案物件擷取該位址。
如需如何使用和建立內容對象的詳細資訊,請參閱 在舊版文件系統篩選驅動程式中追蹤 Per-File 內容。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows Vista 開始提供。 |
標頭 | ntifs.h (包含 Fltkernel.h、Ntifs.h) |