基本 TxF 概念
讀取隔離
交易式 NTFS (TxF) 提供讀取認可一致性。
已處理的寫入器 是指以不屬於泛型讀取權限但屬於泛型寫入權限的任何權限開啟的已處理檔案句柄。 交易寫入器 檢視包含相同交易之所有變更的檔案最新版本。 每個檔案只能有一個負責交易的寫入器。 非交易寫入器一律會遭到交易寫入器封鎖,即使檔案是以共用寫入許可權開啟也一樣。
交易讀取器 是指以屬於泛型讀取存取一部分但不屬於泛型寫入許可權的任何許可權開啟的交易檔句柄。 交易讀取器 檢視開啟檔句柄時所存在的已認可檔案版本。 交易讀取器會與交易寫入器的效果隔離。 此功能會僅在檔案句柄的生命週期內提供一致的檔案檢視,並阻止非交易的寫入動作。
註解
當使用 CreateFileTransacted 函數開啟句柄以進行修改時,該交易內所有後續開啟的檔案,不論是唯讀還是其他操作,系統都會將其轉換為交易寫入器,以實現隔離和其他交易語意。 這表示,當開啟句柄以只讀方式存取時,句柄接收的不是交易開始之前的檔案檢視,而是檔案的目前交易檢視。
在認可交易之前,非交易的檔案句柄不會在交易內看到任何變更。 非交易檔句柄會接收與交易讀取器類似的隔離檢視,但不同於交易讀取器,它會在交易寫入器認可交易時收到檔案更新。
隔離等級
TxF 提供讀取認可隔離。 這表示檔案更新不會在交易外部被看到。 此外,如果在讀取交易內的檔案時多次開啟檔案,您可能會在每次後續開啟時看到不同的結果。 您第一次存取檔案時可用的檔案可能無法使用(因為已刪除檔案),反之亦然。
交易式鎖定
在檔案上建立交易式寫入器,交易式鎖定檔案。 在檔案被交易鎖定後,任何嘗試修改此鎖定檔案的外部文件系統操作都會失敗,並出現 ERROR_SHARING_VIOLATION 或 ERROR_TRANSACTIONAL_CONFLICT。
下表摘要說明交易式鎖定。
目前開啟的檔案
已嘗試開啟檔案
已完成交易
未完成交易
讀者
讀取器/寫入器
讀者
讀取器/寫入器
交易讀取器
是的
是的
是的
No2
交易讀取者/寫入器
是的
No2
是的
No2
非交易式讀取器
是的
是的
是的
是的
不參與交易的讀取器/寫入器
No. 1
No1
是的
是的
- 失敗並出現 ERROR_TRANSACTIONAL_CONFLICT
2. 因 ERROR_SHARING_VIOLATION 而失敗
如果您開啟具名數據流進行使用交易的修改,則必須鎖定整個檔案。
除了交易式鎖定之外,一般NTFS檔案共享規則也會套用。
您必須以平行方式考慮下列兩種檔案共用模式:
- 交易式鎖定模式。
- 一般檔案共用模式。
無論哪一種模式較為嚴格,就是將套用該模式。