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-allocated 變數的指標,可唯一識別每個檔案對象內容結構的擁有篩選。 此變數的格式為 filter-driver-specific。 篩選寫入器應該選擇有意義且方便的值,例如篩選裝置對象的位址或驅動程序物件。 請注意,這個成員的值不能是 NULL。
InstanceId
filter-driver-allocated 變數的指標,可用來區分相同篩選驅動程式所建立的每個檔案對象內容結構。 此變數的格式為 filter-driver-specific。 篩選寫入器應該選擇一個既有意義又方便的值,例如檔案物件本身的位址。 請注意,這個成員的值可以是 NULL。
言論
檔系統篩選驅動程式可以使用不透明 FSRTL_PER_FILEOBJECT_CONTEXT 結構來維護檔案對象的內容資訊。 此結構可用於 as-is 或內嵌在驅動程式定義的每個檔案物件內容結構中。
每個檔案物件都可以有一個與它相關聯的每個檔案對象內容結構清單。 此清單的每個成員(也就是特定個別檔案物件內容結構)都是由篩選驅動程式所擁有。 從篩選驅動程序的觀點來看,每個篩選驅動程式都可以讓相同檔案物件的多個每個檔案對象內容結構產生關聯。
每個篩選定義的每個 file-object 內容結構都必須包含初始化的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 函式。 相反地,小型篩選程式可以使用 FltXxxContext 函式,將內容資訊與檔案對象產生關聯。 如需完整清單,請參閱 FSRTL_PER_FILEOBJECT_CONTEXT 主題。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Vista |
標頭 | ntifs.h (include Fltkernel.h, Ntifs.h) |
另請參閱
FsRtlInsertPerFileObjectContext