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

備註

“legacy” 檔案系統篩選驅動程式會呼叫 FsRtlRemovePerFileObjectContext ,從與檔案對象相關聯的個別檔案對象內容清單中取消連結自己的個別檔案對象內容結構。 所有這類內容結構之前都必須呼叫 FsRtlInsertPerFileObjectContext 來與檔案對象相關聯。

如果 FsRtlRemovePerFileObjectContext 呼叫成功,則為符合 OwnerId 的第一個個別檔案對象內容結構 (和 InstanceId,如果目前) 未連結且傳回的指標。 篩選驅動程式可以使用這個指標來釋放未鏈接的內容結構。

注意FsRtlRemovePerFileObjectContext 只會取消連結找到的第一個符合每個檔案對象內容結構。 如果每個檔案對象內容有額外的比對,篩選驅動程式必須呼叫 FsRtlRemovePerFileObjectContext ,以取消連結所有內容所需的次數。
 
若要初始化每個檔案對象的內容結構,請使用 FsRtlInitPerFileObjectContext 宏。

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

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

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

規格需求

需求
最低支援的用戶端 Windows Vista
目標平台 Universal
標頭 ntifs.h (包括 Fltkernel.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL <= APC_LEVEL

另請參閱

FSRTL_PER_FILEOBJECT_CONTEXT

FsRtlInitPerFileObjectContext

FsRtlInsertPerFileObjectContext

FsRtlLookupPerFileObjectContext