共用方式為


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)

另請參閱

FsRtlGetPerFileContextPointer

FsRtlInitPerFileContext

FsRtlInsertPerFileContext

FsRtlTeardownPerFileContexts

PFREE_FUNCTION

在舊版文件系統篩選驅動程式中追蹤 Per-File 內容