FltTagFileEx 函式 (fltkernel.h)

FltTagFileEx 會在檔案或目錄上設定重新分析點。

語法

NTSTATUS FLTAPI FltTagFileEx(
  PFLT_INSTANCE InitiatingInstance,
  PFILE_OBJECT  FileObject,
  ULONG         FileTag,
  GUID          *Guid,
  PVOID         DataBuffer,
  USHORT        DataBufferLength,
  ULONG         ExistingFileTag,
  GUID          *ExistingGuid,
  ULONG         Flags
);

參數

InitiatingInstance

起始此 I/O 要求的迷你篩選驅動程序實例不透明指標。 這個參數是必要的,而且不能是 NULL

FileObject

要設定重新分析點之檔案或目錄之檔案物件的指標。 檔案對象必須開啟才能FILE_WRITE_DATA存取。 這個參數是必要的,而且不能是 NULL

FileTag

重新分析點標籤。 可以是 ntifs.h 中定義的其中一個IO_REPARSE_TAG_XXX 值。

Guid

可唯一識別重新分析點的 GUID。 如果 FileTag 是非 Microsoft 標籤,則這個參數是必要的,而且不能是 NULL。 如果正在修改現有的重新分析標記,此參數中指定的 GUID 必須符合要修改之重新分析點的 GUID。

DataBuffer

緩衝區的指標,其中包含重新分析點的使用者定義數據。

DataBufferLength

DataBuffer 指向之緩衝區的大小,以位元組為單位。

ExistingFileTag

如果必須取代標籤,則檔案上的現有標記。 此參數必須設定為零,才能在還沒有重新分析標籤的檔案上設定。

ExistingGuid

可唯一識別現有重新分析點的 GUID。 如果 ExistingFileTag 是非 Microsoft 標籤且非零,則此參數不得為 NULL

Flags

指定 ntifs.h 中定義的REPARSE_DATA_BUFFER_EX_XXX 旗標。

傳回值

此函式會傳回STATUS_SUCCESS或適當的NTSTATUS值,例如:

傳回碼 Description
STATUS_IO_REPARSE_TAG_MISMATCH 在 ExistingFileTag 中指定的標記值不符合現有標籤值的標記值。
STATUS_REPARSE_ATTRIBUTE_CONFLICT 對於具有非 Microsoft 標籤的現有重新分析點, ExistingFileTag 會比對現有的標籤,但 Guid 不符合現有的 Guid

備註

Minifilter 驅動程式應該使用 FltTagFileEx ,而不是FSCTL_SET_REPARSE_POINT_EX來設定重新分析點。

並非所有文件系統都支援重新分析點;例如,NTFS 和 ReFS 檔案系統支持它們,但 FAT 檔案系統則不支援。 Minifilter 驅動程式可以呼叫 FltQueryVolumeInformation、指定 FsInformation 參數的 FileFsAttributeInformation,以及檢查傳回 FILE_FS_ATTRIBUTE_INFORMATION 結構中的FILE_SUPPORTS_REPARSE_POINTS位旗標,來判斷文件系統是否支援重新分析點。

若要移除現有的重新分析點,請呼叫 FltUntagFile

如需重新分析點的詳細資訊,請參閱 Microsoft Windows SDK 檔。

規格需求

需求
標頭 fltkernel.h

另請參閱

FILE_FS_ATTRIBUTE_INFORMATION

FLT_TAG_DATA_BUFFER

FSCTL_DELETE_REPARSE_POINT

FSCTL_GET_REPARSE_POINT

FSCTL_SET_REPARSE_POINT

FltFsControlFile

FltQueryVolumeInformation

FltTagFile

FltUntagFile

IsReparseTagMicrosoft

IsReparseTagNameSurrogate

REPARSE_DATA_BUFFER

REPARSE_GUID_DATA_BUFFER