FSRTL_PER_FILEOBJECT_CONTEXT 結構 (ntifs.h)
OS 會使用不透明 FSRTL_PER_FILEOBJECT_CONTEXT 結構來追蹤檔案物件的檔案系統篩選驅動程式定義內容信息結構。
語法
typedef struct _FSRTL_PER_FILEOBJECT_CONTEXT {
LIST_ENTRY Links;
PVOID OwnerId;
PVOID InstanceId;
} FSRTL_PER_FILEOBJECT_CONTEXT, *PFSRTL_PER_FILEOBJECT_CONTEXT;
成員
Links
此結構的連結位於與相同檔案對象相關聯之所有個別檔案對象內容結構清單中。 FsRtlInsertPerFileObjectContext 會將這個成員插入檔案物件的所有每個檔案對象內容結構清單中。
OwnerId
篩選驅動程式配置變數的指標,可唯一識別每個檔案對象內容結構的擁有篩選。 此變數的格式為 filter-driver-specific。 篩選寫入器應該選擇有意義且方便的值,例如篩選裝置對象的位址或驅動程序物件。 請注意,這個成員的值不能是 NULL。
InstanceId
篩選驅動程式配置變數的指標,可用來區分相同篩選驅動程式所建立的每個檔案對象內容結構。 此變數的格式為 filter-driver-specific。 篩選寫入器應該選擇有意義且方便的值,例如檔案物件本身的位址。 請注意,這個成員的值可以是 NULL。
備註
檔系統篩選驅動程式可以使用不透明 FSRTL_PER_FILEOBJECT_CONTEXT 結構來維護檔案對象的內容資訊。 這個結構可以依原樣使用,或內嵌在驅動程式定義的個別檔案對象內容結構中。
每個檔案物件可以有一個與其相關聯的每個檔案對象內容結構清單。 此清單的每個成員 (,也就是篩選驅動程式擁有特定個別檔案對象內容結構) 。 從篩選驅動程序的觀點來看,每個篩選驅動程式都可以為相同的檔案物件物件建立多個個別檔案對象內容結構的關聯。
每個篩選定義的每個檔案物件內容結構都必須包含初始化的FSRTL_PER_FILEOBJECT_CONTEXT結構。 FSRTL_PER_FILEOBJECT_CONTEXT 結構可以從分頁或非分頁集區配置,而且必須使用 FsRtlInitPerFileObjectContext 宏初始化。
若要將FSRTL_PER_FILEOBJECT_CONTEXT結構或篩選定義的個別檔案對象內容結構插入 (包含初始化FSRTL_PER_FILEOBJECT_CONTEXT結構) 檔案物件的所有內容結構清單中,請使用 FsRtlInsertPerFileObjectContext 函式。
在FSRTL_PER_FILEOBJECT_CONTEXT或個別檔案對象內容結構與檔案對象相關聯之後,可以藉由呼叫 FsRtlLookupPerFileObjectContext 來擷取,或藉由呼叫 FsRtlRemovePerFileObjectContext (根據 OwnerId 和 InstanceId) 的值來擷取它。
檔案系統迷你篩選驅動程式不得使用下列函式:
- FsRtlInitPerFileObjectContext
- FsRtlInsertPerFileObjectContext
- FsRtlLookupPerFileObjectContext
- FsRtlRemovePerFileObjectContext
相反地,迷你篩選可以使用下列函式,將內容資訊與檔案對象產生關聯:
- FltAllocateContext
- FltDeleteContext
- FltSetStreamHandleContext
- FltDeleteStreamHandleContext
- FltGetStreamHandleContext
- FltReleaseContext
文件系統迷你篩選驅動程式不得使用 FsRtlXxxPerFileObjectContext 函式。 相反地,迷你篩選可以使用 FltXxx 內容 函式,將內容資訊與檔案對象產生關聯。 如需完整清單,請參閱 FSRTL_PER_FILEOBJECT_CONTEXT 主題。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista |
標頭 | ntifs.h (包括 Fltkernel.h、Ntifs.h) |
另請參閱
FsRtlInsertPerFileObjectContext