共用方式為


FsRtlRemovePerFileObjectContext 函式 (ntifs.h)

針對「舊版」文件系統篩選驅動程式,FsRtlRemovePerFileObjectContext 函式會從先前與檔案對象相關聯的每個檔案對象內容清單中取消連結每個檔案對象內容信息結構。

語法

PFSRTL_PER_FILEOBJECT_CONTEXT FsRtlRemovePerFileObjectContext(
  [in]           PFILE_OBJECT FileObject,
  [in, optional] PVOID        OwnerId,
  [in, optional] PVOID        InstanceId
);

參數

[in] FileObject

要移除內容資訊的檔案物件的指標。

[in, optional] OwnerId

呼叫端配置的變數指標,可唯一識別每個檔案對象內容結構的擁有篩選。 此變數的格式為 filter-driver-specific。

[in, optional] InstanceId

呼叫端配置的變數指標,可用來區分相同篩選驅動程式所建立的每個檔案對象內容結構。 此變數的格式為 filter-driver-specific。 這個參數是選擇性的,而且可以 NULL

傳回值

FsRtlRemovePerFileObjectContext 取消連結,並傳回找到之第一個符合每個檔案對象內容的指標。 如果找不到相符專案,FsRtlRemovePerFileObjectContext 會傳回 NULL

言論

「舊版」文件系統篩選驅動程式會呼叫 FsRtlRemovePerFileObjectContext ,將自己的個別檔案對象內容結構與與檔案對象相關聯的每個檔案對象內容清單取消連結。 所有這類內容結構之前都必須呼叫 FsRtlInsertPerFileObjectContext來與檔案對象產生關聯。

如果呼叫 FsRtlRemovePerFileObjectContext 成功,則符合 OwnerId 的第一個個別檔案對象內容結構(如果存在的話,InstanceId,如果存在),則會傳回它的指標。 篩選驅動程式可以使用此指標來釋放未連結的內容結構。

附註FsRtlRemovePerFileObjectContext 只會取消連結每個檔案對象內容結構的第一個相符專案。 如果每個檔案對象內容有額外的比對,篩選驅動程式必須呼叫 FsRtlRemovePerFileObjectContext 一次,以取消連結它們。
 
若要初始化每個 file-object 內容結構,請使用 FsRtlInitPerFileObjectContext 巨集。

若要將初始化的每個 file-object 內容結構與檔案對象產生關聯,請使用 FsRtlInsertPerFileObjectContext 函式。

若要擷取與檔案對象相關聯的每個 file-object 內容結構,請使用 FsRtlLookupPerFileObjectContext 函式。

Note 舊版篩選驅動程式必須呼叫 FsRtlRemovePerFileObjectContext 函式,才能取消連結並釋放內容信息結構,再完成IRP_MJ_CLOSE。 否則,配置給該內容結構的記憶體將會外洩。
 
此外,文件系統迷你篩選驅動程式不得使用 FsRtlXxxPerFileObjectContext 函式。 相反地,他們可以使用適當的 FltXxxContext 函式。 如需詳細資訊,請參閱 FSRTL_PER_FILEOBJECT_CONTEXT 主題。

要求

要求 價值
最低支援的用戶端 Windows Vista
目標平臺 普遍
標頭 ntifs.h (include Fltkernel.h, Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另請參閱

FSRTL_PER_FILEOBJECT_CONTEXT

FsRtlInitPerFileObjectContext

FsRtlInsertPerFileObjectContext

FsRtlLookupPerFileObjectContext