共用方式為


FsRtlInitPerStreamContext 宏 (ntifs.h)

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

語法

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

參數

_fc

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

_owner

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

_inst

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

_cb

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

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

緩衝區

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

傳回值

備註

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

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

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

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

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

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

規格需求

需求
最低支援的用戶端 Windowsxp;Windows 2000 Service Pack 4 的更新匯總 (SP4)
目標平台 桌面
標頭 ntifs.h (包含 Ntifs.h)
IRQL 任何層級

另請參閱

ExAllocatePoolWithTag

ExFreePool

FSRTL_PER_STREAM_CONTEXT

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlSetupAdvancedHeader

FsRtlSupportsPerStreamContexts

FsRtlTeardownPerStreamContexts