共用方式為


FsRtlInitPerStreamContext 巨集 (ntifs.h)

FsRtlInitPerStreamContext 巨集會初始化篩選驅動程式內容結構。

語法

void FsRtlInitPerStreamContext(
   _fc,
   _owner,
   _inst,
   _cb
);

參數

_fc

呼叫端配置的FSRTL_PER_STREAM_CONTEXT結構的指標,用來維護檔案數據流的內容資訊。 此結構可以和目前一樣使用,或內嵌在驅動程式定義的個別數據流內容結構中。 這兩種結構類型通常會藉由呼叫exAllocatePoolWithTag 來配置。

_owner

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

_inst

篩選驅動程式的指標 • 配置的變數,可用來區分相同篩選驅動程式所建立的每個數據流內容結構。 此變數的格式為篩選驅動程式 \ 特定。 篩選寫入器應該選擇有意義且方便的值,例如檔案數據流的數據流內容對象的位址。 (若要從檔案物件取得此位址,請使用 FsRtlGetPerStreamContextPointer 巨集。這個參數是選擇性參數,而且可以 NULL

_cb

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

typedef
VOID (*PFREE_FUNCTION) (
          IN PVOID Buffer
          );

緩衝區

要釋放之每個數據流內容結構的指標。 FreeCallback 例程通常會將此指標轉換成適當的結構指標類型,並藉由呼叫 exFreePool 來釋放它。

傳回值

沒有

言論

文件系統篩選驅動程式會使用 FsRtlInitPerStreamContext 巨集,先初始化新配置的個別數據流內容結構,再將它與檔案數據流產生關聯。 初始化的內容結構可以當做參數傳遞至 FsRtlInsertPerStreamContext

FsRtlInitPerStreamContext 會將 FreeCallback 例程的位址儲存在FSRTL_PER_STREAM_CONTEXT結構的 FreeCallback 成員中。

在 IRQL <= APC_LEVEL 呼叫 FreeCallback 例程。 通常,它會在 IRQL PASSIVE_LEVEL呼叫。

NoteFreeCallback 例程無法遞歸地呼叫文件系統或取得任何文件系統資源。 此外,這個例程必須假設檔案數據流的檔案對象已經釋放。
 
若要將初始化的每個數據流內容結構與檔案數據流產生關聯,請呼叫 FsRtlInsertPerStreamContext FsRtlInsertPerStreamContext 。

在內容結構與檔案數據流相關聯之後,可以藉由呼叫 FsRtlLookupPerStreamContext 或藉由呼叫 FsRtlRemovePerStreamContext來擷取。

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

要求

要求 價值
最低支援的用戶端 Windows XP;Windows 2000 Service Pack 4 的更新匯總 (SP4)
目標平臺 桌面
標頭 ntifs.h (include Ntifs.h)
IRQL 任何層級

另請參閱

ExAllocatePoolWithTag

ExFreePool

FSRTL_PER_STREAM_CONTEXT

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlSetupAdvancedHeader

FsRtlSupportsPerStreamContexts

FsRtlTeardownPerStreamContexts