MARK_HANDLE_INFO結構 (winioctl.h)
包含用來標記指定檔案或目錄的資訊,以及其更新序號 (USN) 變更記錄與變更相關資料。 FSCTL_MARK_HANDLE 控件程式代碼會使用它。
語法
typedef struct _MARK_HANDLE_INFO {
union {
DWORD UsnSourceInfo;
DWORD CopyNumber;
} DUMMYUNIONNAME;
DWORD UsnSourceInfo;
HANDLE VolumeHandle;
DWORD HandleInfo;
} MARK_HANDLE_INFO, *PMARK_HANDLE_INFO;
成員
DUMMYUNIONNAME
DUMMYUNIONNAME.UsnSourceInfo
DUMMYUNIONNAME.CopyNumber
UsnSourceInfo
正在進行的變更類型。
作業不會從建立檔案的應用程式觀點,從外部修改檔案或目錄。
當線程寫入新的 USN 記錄時,只有在線程也設定這些旗標時,先前記錄中的來源資訊旗標才會繼續存在。 因此,來源信息結構可讓應用程式篩選掉僅由已知來源設定的USN記錄,例如防毒篩選器。
定義下列值。
價值 | 意義 |
---|---|
|
此作業提供作業系統所建立之檔案或目錄變更的相關信息。
一般用途是遠端記憶體將數據從外部移至本機記憶體時。 遠端記憶體是階層式記憶體管理軟體。 這類行動通常至少會將 USN_REASON_DATA_OVERWRITE 旗標新增至 USN 記錄。 不過,數據並未從使用者的觀點變更。 藉由在 SourceInfo 中記下 USN_SOURCE_DATA_MANAGEMENT 保留記錄之 USN_RECORD 結構的成員,您可以判斷雖然在專案上執行寫入作業,但數據尚未變更。 |
|
此作業會將私人數據流新增至檔案或目錄。
例如,病毒偵測器可能會新增總和檢查碼資訊。 當病毒偵測器修改專案時,系統會產生USN記錄。 USN_SOURCE_AUXILIARY_DATA 表示修改並未變更應用程式數據。 |
|
作業會建立或更新復寫檔案的內容。
例如,檔案復寫服務會在復寫目錄中建立或更新檔案時設定此旗標。 |
|
復寫是從雲端或伺服器在客戶端系統上執行。 |
VolumeHandle
檔案或目錄所在磁碟區的磁碟區句柄。 如需取得磁碟區句柄的詳細資訊,請參閱一節。
需要此句柄,才能檢查這項作業的許可權。
呼叫端必須具有 SE_MANAGE_VOLUME_NAME 許可權。 如需詳細資訊,請參閱 權限。
HandleInfo
旗標,指定 VolumeHandle 成員中句柄值所識別之檔案或目錄的其他資訊。
價值 | 意義 |
---|---|
|
在關閉句柄之前,檔案會標示為無法重組。
一旦標示為 MARK_HANDLE_PROTECT_CLUSTERS 的句柄關閉,就不保證檔案的叢集不會移動。 |
|
在關閉句柄之前,檔案會標示為無法重組。
Windows Server 2003:Windows Server 2003 SP1 之前不支援此旗標。 Windows XP:不支援此旗標。 |
|
在關閉句柄之前,檔案會標示為無法重組。
Windows Server 2003:Windows Server 2003 SP1 之前不支援此旗標。 Windows XP:不支援此旗標。 |
|
不論實際檔類型為何,檔案都會標示為即時讀取行為。 標記此旗標的檔案必須開啟,未經緩衝區的 I/O。
Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP:不支援此旗標。 |
|
先前使用 MARK_HANDLE_REALTIME 旗標標示為即時讀取行為的檔案可以使用此旗標取消標記,並移除實時行為。 標記此旗標的檔案必須開啟,未經緩衝區的 I/O。
Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP:不支援此旗標。 |
|
指出 CopyNumber 成員中指定的複製編號應該用於讀取。 標記此旗標的檔案必須開啟,未經緩衝區的 I/O。
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP:Windows 8 和 Windows Server 2012 之前不支援此旗標。 |
|
先前使用 MARK_HANDLE_READ_COPY 旗標標示為讀取複製行為的檔案可以使用這個旗標取消標記,並移除讀取複製行為。 標記此旗標的檔案必須開啟,未經緩衝區的 I/O。
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP:Windows 8 和 Windows Server 2012 之前不支援此旗標。 |
|
當將記憶體對應/快取的IO與非快取IO混在一起時,系統會嘗試在發出非快取io時,清除非快取IO範圍的記憶體對應。 如果這些清除失敗,系統通常不會將失敗傳回給呼叫端,這可能會導致損毀狀態(這就是為什麼檔說不要這樣做的原因)。 此旗標會告知系統傳回指定句柄的清除失敗,讓應用程式可以更好地處理這種情況 在 Windows 8 和 Windows Server 2012 之前,不支援此旗標。 |
|
NTFS 中高度分散的檔案會使用多個 MFT 記錄來描述檔案的所有範圍。 這個子 MFT 記錄清單(也稱為 FRS 記錄)是由稱為屬性清單的結構所控制。 屬性清單的大小限制為 128K。 當屬性清單的大小達到特定閾值NTFS時,將會觸發範圍的背景壓縮,因此會使用最小數目的子 FRS 記錄。
此旗標會停用指定檔案的此 FRS 壓縮功能。
在 Windows 10 之前,不支援此旗標。 |
|
告訴 NTFS 在 USN 紀錄中撰寫的分頁寫入上設定指定的 UsnSourceInfo 值。 傳統上,這不會在分頁寫入上完成,因為系統不知道哪個線程做了指定的變更。 這是覆寫。 只有當記憶體管理員正在使用的 FileObject 時,才會有與它相關聯的狀態。
在 Windows 10 之前,不支援此旗標。 |
|
設定此旗標會告知系統不允許在此檔案上寫入。 如果應用程式嘗試開啟檔案以進行寫入存取,作業會失敗並STATUS_ACCESS_DENIED。
如果看到寫入,作業會失敗,並出現STATUS_MARKED_TO_DISALLOW_WRITES 在 Windows 10 之前,不支援此旗標。 |
言論
若要擷取磁碟區的句柄,請使用 下列格式的 lpFileName 參數呼叫 createFile:
“\\.\X:”
在上述字串中,X 是識別磁碟區出現磁碟驅動器的字母。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
支援的最低伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
標頭 | winioctl.h (包括 Windows.h) |