FSRTL_PER_STREAM_CONTEXT 結構 (ntifs.h)

FSRTL_PER_STREAM_CONTEXT 結構包含檔案系統篩選驅動程式維護有關檔案數據流的內容資訊。

語法

typedef struct _FSRTL_PER_STREAM_CONTEXT {
  LIST_ENTRY     Links;
  PVOID          OwnerId;
  PVOID          InstanceId;
  PFREE_FUNCTION FreeCallback;
} FSRTL_PER_STREAM_CONTEXT, *PFSRTL_PER_STREAM_CONTEXT;

成員

Links

此結構的連結位於與相同檔案數據流相關聯的所有每個數據流內容結構清單中。 FsRtlInsertPerStreamContext 會將此成員插入檔案數據流的所有每個數據流內容結構清單中。 若要從檔案物件取得清單前端的指標,請使用 FsRtlGetPerStreamContextPointer 宏,並將結果轉換成 PFSRTL_ADVANCED_FCB_HEADER 指標。 清單指標是進階檔案控制區塊中的 FilterContexts 成員, (FCB) 檔數據流的標頭結構。

OwnerId

篩選驅動程式配置的變數指標,可唯一識別每個數據流內容結構的擁有者。 此變數的格式為 filter-driver-specific。 篩選寫入器應該選擇有意義且方便的值,例如驅動程式物件或裝置對象的位址。 篩選驅動程式必須將這個成員設定為非 NULL 值。

InstanceId

篩選驅動程式配置的變數指標,可用來區分相同篩選驅動程式所建立的每個數據流內容結構。 此變數的格式為 filter-driver-specific。 篩選寫入器應該選擇有意義且方便的值,例如檔案數據流的數據流內容對象的位址。 (若要從檔案物件取得此位址,請使用 FsRtlGetPerStreamContextPointer 宏.)

此成員是選擇性的,可以是 NULL

FreeCallback

釋放每個數據流內容結構的回呼例程指標。 此例程及其參數的定義如下:

VOID
(*PFREE_FUNCTION) (
     IN PVOID Buffer
     );

Buffer

要釋放 之FSRTL_PER_STREAM_CONTEXT 結構的指標。

備註

檔系統篩選驅動程式可以使用 FSRTL_PER_STREAM_CONTEXT 結構來維護檔案數據流的內容資訊。 此結構可以如同原樣使用,或內嵌在驅動程式定義的個別數據流內容結構中。

當文件系統卸除檔案數據流的數據流內容物件時,它必須呼叫 FsRtlTeardownPerStreamContexts,進而呼叫與檔案數據流相關聯的所有個別數據流內容結構的 FreeCallback 例程。

注意FreeCallback 例程無法以遞歸方式呼叫文件系統,或取得任何文件系統資源。 此外,此例程必須假設檔案數據流的檔案對象已經釋放。
 
FSRTL_PER_STREAM_CONTEXT 結構可以從分頁或非分頁集區配置。

FsRtlSupportsPerStreamContexts 宏會決定文件系統是否支援指定檔案數據流的個別數據流內容。

BOOLEAN FsRtlSupportsPerStreamContexts(
  [in] PFILE_OBJECT FileObject
);

參數

FileObject [in]

PFILE_OBJECT

檔案數據流之檔案物件的指標。

傳回值

布爾

如果文件系統支援檔案數據流的每個數據流內容, FsRtlSupportsPerStreamContexts 宏會傳回 TRUE ,否則為 FALSE

文件系統篩選驅動程式會呼叫 FsRtlSupportsPerStreamContexts ,以判斷基礎文件系統是否支援指定檔案物件所代表之檔案數據流的每個數據流內容。 請注意,檔案系統可能會針對某些類型的檔案支援個別數據流內容,但不支援其他類型的內容。 例如,NTFS 和 FAT 目前不支援分頁檔案的每個數據流內容。

如需詳細資訊,請參閱 追蹤舊版文件系統篩選驅動程式中的 Per-Stream 內容

規格需求

需求
最低支援的用戶端 此結構為 Windows XP
標頭 ntifs.h (包含 Ntifs.h)

另請參閱

FSRTL_ADVANCED_FCB_HEADER

FSRTL_COMMON_FCB_HEADER

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlTeardownPerStreamContexts

PFREE_FUNCTION

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