檔案串流 (本機檔案系統)

資料流程是位元組序列。 在 NTFS 檔案系統中,資料流程包含寫入檔案的資料,並提供檔案比屬性和屬性更多的資訊。 例如,您可以建立包含搜尋關鍵字的資料流程,或建立檔案之使用者帳戶的身分識別。

與檔案相關聯的每個資料流程都有自己的配置大小、實際大小和有效資料長度:

  • 配置大小是保留給資料流程的磁碟空間量。
  • 實際大小是呼叫端所使用的位元組數目。
  • 有效的資料長度 (VDL) 是從資料流程的配置大小初始化的位元組數目。

每個資料流程也會維護自己的壓縮、加密和疏鬆狀態。 檔案 上的FILE_ATTRIBUTE_SPARSE_FILE 屬性會設定在 從 FindFirstFile FindFirstFileEx FindNextFile 函式傳回 之WIN32_FIND_DATA 結構的 dwFileAttributes 成員 中。 GetFileAttributes GetFileAttributesEx GetFileAttributesTransacted GetFileInformationByHandle GetFileInformationByHandleEx 如果未指定任何資料流程,則會傳回預設資料流程的疏鬆狀態。

沒有與資料流程相關聯的檔案時間。 檔案的檔案時間會在檔案中的任何資料流程更新時更新。

每個資料流程會維護機會鎖定。 每個資料流程也會維護共用模式。 在檔案上要求刪除存取權時,作業系統會檢查檔案中所有開啟資料流程上的刪除存取權。 如果另一個進程在沒有FILE_SHARE_DELETE 許可權的情況下 開啟資料流程,則您無法開啟檔案以進行刪除存取。

如果複製的檔案具有資料流程,且使用網路重新導向器,則只有在用戶端同時具有讀取權限和讀取屬性許可權時,才能複製檔案。

資料流程的命名慣例

從 Windows 殼層命令列指定時,資料流程的完整名稱是 「 filename stream name stream type 」,如下列範例所示:「myfile.dat:stream1:$DATA」。

對於檔案名而言,任何合法字元也都是資料流程名稱的合法字元,包括空格。 如需詳細資訊,請參閱 命名檔案 。 資料流程類型(也稱為屬性類型程式碼)是 NTFS 檔案系統的內部類型。 因此,使用者無法建立新的資料流程類型,但可以開啟現有的 NTFS 檔案系統類型。 資料流程類型規範值一律以貨幣符號 ($) 符號開頭。 如需串流類型清單,請參閱下方。

根據預設,預設資料流程未命名。 若要完整指定預設資料流程,請使用 「 filename ::$DATA」,其中 $DATA 是資料流程類型。 這相當於 「 filename 」。 您可以使用檔案命名慣例 ,在檔案 中建立具名資料流程。 請注意,「$DATA」 是合法的資料流程名稱。 例如,名為 「 sample」 的檔案上名為 「$DATA」 的資料流程完整名稱會是 「 sample :$DATA:$DATA」。 如果您在相同的檔案上建立名為 「bar」 的資料流程,其完整名稱會是 「 sample :bar:$DATA」。

建立和使用具有單字元名稱的檔案時,請使用句號加上句號,後面接著反斜線 (.) 或使用完整路徑名稱。 這樣做的原因是 Windows 會將一個字元檔案名視為磁碟機號。 使用相對路徑指定磁碟機號時,冒號會將磁碟機號與路徑分開。 當單字元名稱是磁碟機號或檔案名有模棱兩可時,Windows 會假設冒號後面的字串是有效的路徑,即使磁碟機號無效,Windows 還是假設它是磁碟機號的磁碟機號。

資料流程類型

以下是 NTFS 資料流程類型的清單,也稱為屬性類型代碼。 某些資料流程類型是 NTFS 的內部類型,而且其格式為未記載。

資料流程類型 描述
::$ATTRIBUTE_LIST 包含組成檔案的所有屬性清單,並識別每個屬性的位置。
::$BITMAP 索引用來管理目錄 B 型樹狀結構可用空間的點陣圖。 b 型樹狀結構是以 4 KB 區塊管理(不論叢集大小為何),這可用來管理這些區塊的配置。 此資料流程類型存在於每個目錄上。
::$DATA 資料流程。 預設資料流程沒有名稱。 您可以使用 FindFirstStreamW FindNextStreamW 函式來列舉 資料流程。
::$EA 包含擴充屬性資料。
::$EA_INFORMATION 包含擴充屬性的支援資訊。
::$FILE_NAME 檔案的名稱,以 Unicode 字元為單位。 這包括檔案的簡短名稱,以及任何硬式連結。
::$INDEX_ALLOCATION 目錄的資料流程類型。 用來實作大型目錄的檔案名配置。 此資料流程代表目錄本身,並包含目錄的所有資料。 此類型的資料流程變更會記錄到 NTFS 變更日誌。 $INDEX_ALLOCATION 資料流程類型的預設資料流程名稱為 $I 30,因此 「 DirName」、「 DirName::$INDEX_ALLOCATION」和 「 DirName :$I 30:$INDEX_ALLOCATION」 都相等。
::$INDEX_ROOT 此資料流程代表索引之 b 型樹狀結構的根目錄。 此資料流程類型存在於每個目錄上。
::$LOGGED_UTILITY_STREAM 類似于 ::$DATA,但作業會記錄至 NTFS 變更日誌。 由 EFS 和 交易式 NTFS (TxF) 使用。 EFS 的 「: StreamName :$ StreamType 」 組為 「:$EFS:$LOGGED_UTILITY_STREAM」,而 TxF 的 「:$TXF_DATA:$LOGGED_UTILITY_STREAM」。
::$OBJECT_ID 用來識別連結追蹤服務的檔案的 16 位元組識別碼。
::$REPARSE_POINT 重新 分析點 資料。

 

使用資料流程