PRJ_NOTIFY_TYPES列舉 (projectedfslib.h)
描述檔案或資料夾變更的通知類型。
Syntax
typedef enum PRJ_NOTIFY_TYPES {
PRJ_NOTIFY_NONE = 0x00000000,
PRJ_NOTIFY_SUPPRESS_NOTIFICATIONS = 0x00000001,
PRJ_NOTIFY_FILE_OPENED = 0x00000002,
PRJ_NOTIFY_NEW_FILE_CREATED = 0x00000004,
PRJ_NOTIFY_FILE_OVERWRITTEN = 0x00000008,
PRJ_NOTIFY_PRE_DELETE = 0x00000010,
PRJ_NOTIFY_PRE_RENAME = 0x00000020,
PRJ_NOTIFY_PRE_SET_HARDLINK = 0x00000040,
PRJ_NOTIFY_FILE_RENAMED = 0x00000080,
PRJ_NOTIFY_HARDLINK_CREATED = 0x00000100,
PRJ_NOTIFY_FILE_HANDLE_CLOSED_NO_MODIFICATION = 0x00000200,
PRJ_NOTIFY_FILE_HANDLE_CLOSED_FILE_MODIFIED = 0x00000400,
PRJ_NOTIFY_FILE_HANDLE_CLOSED_FILE_DELETED = 0x00000800,
PRJ_NOTIFY_FILE_PRE_CONVERT_TO_FULL = 0x00001000,
PRJ_NOTIFY_USE_EXISTING_MASK = 0xFFFFFFFF
} ;
常數
PRJ_NOTIFY_NONE 值: 0x00000000 不通知。 |
PRJ_NOTIFY_SUPPRESS_NOTIFICATIONS 值: 0x00000001 如果在虛擬化實例上指定,請啟動: - 這表示不應該針對虛擬化實例或實例的指定子樹狀目錄傳送通知。 如果在回應通知時指定: - 這表示在關閉所有句柄之前,不應該針對指定的檔案或資料夾傳送通知。 注意 如果此位出現在通知遮罩中,它會覆寫遮罩中的所有其他位。 例如,具有這個位的有效遮罩會被視為只包含PRJ_NOTIFY_SUPPRESS_NOTIFICATIONS。 |
PRJ_NOTIFY_FILE_OPENED 值: 0x00000002 如果在虛擬化實例上指定,請啟動: - 這表示提供者應該在建立現有檔案或資料夾的句柄時收到通知。 如果在回應通知時指定: - 這表示提供者應該在檔案或資料夾建立任何進一步的句柄時收到通知。 |
PRJ_NOTIFY_NEW_FILE_CREATED 值: 0x00000004 如果在虛擬化實例上指定,請啟動: - 建立新的檔案或資料夾時,應通知提供者。 如果在回應通知時指定: - 沒有效果。 |
PRJ_NOTIFY_FILE_OVERWRITTEN 值: 0x00000008 如果在虛擬化實例上指定,請啟動: - 指出當現有檔案被覆寫或取代時,提供者應該在現有檔案時收到通知。 如果在回應通知時指定: - 指出當檔案或資料夾被覆寫或取代時,應該通知提供者。 |
PRJ_NOTIFY_PRE_DELETE 值: 0x00000010 如果在虛擬化實例上指定,請啟動: - 指出當即將刪除檔案或資料夾時,提供者應該收到通知。 如果在回應通知時指定: - 指出當即將刪除檔案或資料夾時,提供者應該收到通知。 |
PRJ_NOTIFY_PRE_RENAME 值: 0x00000020 如果在虛擬化實例上指定,請啟動: - 指出當檔案或資料夾即將重新命名時,應該通知提供者。 如果在回應通知時指定: - 指出當檔案或資料夾即將重新命名時,應該通知提供者。 |
PRJ_NOTIFY_PRE_SET_HARDLINK 值: 0x00000040 如果在虛擬化實例上指定,請啟動: - 指出當即將為檔案建立硬式連結時,提供者應該收到通知。 如果在回應通知時指定: - 指出當即將為檔案建立硬式連結時,提供者應該收到通知。 |
PRJ_NOTIFY_FILE_RENAMED 值: 0x00000080 如果在虛擬化實例上指定,請啟動: - 指出提供者應該收到檔案或資料夾已重新命名的通知。 如果在回應通知時指定: - 指出當檔案或資料夾已重新命名時,提供者應該收到通知。 |
PRJ_NOTIFY_HARDLINK_CREATED 值: 0x00000100 如果在虛擬化實例上指定,請啟動: - 指出提供者應該收到已為檔案建立硬式連結的通知。 如果在回應通知時指定: - 指出提供者應該收到檔案已建立硬式連結的通知。 |
PRJ_NOTIFY_FILE_HANDLE_CLOSED_NO_MODIFICATION 值: 0x00000200 如果在虛擬化實例上指定,請啟動: - 當檔案/資料夾上的句柄關閉,且結尾句柄未修改或刪除時,應該通知提供者。 如果在回應通知時指定: - 當檔案/資料夾的句柄關閉,而且沒有與關閉句柄相關聯的修改或刪除時,應該通知提供者。 |
PRJ_NOTIFY_FILE_HANDLE_CLOSED_FILE_MODIFIED 值: 0x00000400 如果在虛擬化實例上指定,請啟動: - 當檔案/資料夾上的句柄關閉,且關閉句柄用來修改時,應該通知提供者。 如果在回應通知時指定: - 當檔案/資料夾上的句柄關閉,並使用結尾句柄來修改時,提供者應該會收到通知。 |
PRJ_NOTIFY_FILE_HANDLE_CLOSED_FILE_DELETED 值: 0x00000800 如果在虛擬化實例上指定,請啟動: - 當檔案/資料夾上關閉句柄,並在關閉句柄時刪除提供者時,應該通知提供者。 如果在回應通知時指定: - 當檔案/資料夾上的句柄關閉,並在關閉句柄時刪除提供者時,應該通知提供者。 |
PRJ_NOTIFY_FILE_PRE_CONVERT_TO_FULL 值: 0x00001000 如果在虛擬化實例上指定,請啟動: - 當提供者即將將佔位元轉換成完整檔案時,應該收到通知。 如果在回應通知時指定: - 當提供者即將將佔位元轉換成完整檔案時,應該收到通知,假設它是佔位符,而且尚未是完整檔案。 |
PRJ_NOTIFY_USE_EXISTING_MASK 值: 0xFFFFFFFF 如果在虛擬化實例上指定,請啟動: - 此值在虛擬化實例啟動時無效。 如果在回應通知時指定: - 繼續使用此檔案/資料夾的現有通知集。 |
備註
ProjFS 可以將文件系統活動的通知傳送給提供者。 當提供者啟動虛擬化實例時,它會指定其想要接收的通知。 當檔案建立或重新命名時,它也可能指定一組新的通知。 提供者必須在 PrjStartVirtualizing 的回呼參數中註冊PRJ_NOTIFICATION_CB通知回呼例程,才能接收通知。
ProjFS 會傳送作用中虛擬化根目錄中檔案和目錄的通知。 也就是說,ProjFS 會傳送虛擬化根目錄及其子系的通知。 在判斷構成虛擬化根子系的子代時,不會周遊虛擬化根目錄內的符號連結和連接點。
ProjFS 只會針對檔案的主要數據流傳送通知。 ProjFS 不會傳送替代數據流作業的通知。
ProjFS 不會傳送非使用中虛擬化實例的通知。 如果下列任一專案成立,虛擬化實例為非作用中:
- 提供者尚未藉由呼叫 PrjStartVirtualizing 來啟動它。
- 提供者已藉由呼叫 PrjStopVirtualizing 來停止實例。
- 提供者進程已結束
提供者可以指定在啟動虛擬化實例時想要接收的通知,或響應允許設定新通知遮罩的通知。
提供者會指定一組預設的通知,讓 ProjFS 在啟動實例時要針對虛擬化實例傳送。 這個通知集是在 PrjStartVirtualizing 選項參數的 NotificationMappings 成員中提供,這可能會為虛擬化實例的不同子樹指定不同的通知遮罩。
提供者可以選擇提供不同的通知遮罩,以響應檔案開啟、建立、取代/覆寫或重新命名的通知。 ProjFS 會繼續傳送指定檔案的這些通知,直到檔案的所有句柄都關閉為止。 之後,它會還原為預設的通知集。 當然,如果預設的通知集未指定 ProjFS 應該針對開啟、建立等通知,提供者將不會有機會為這些作業指定不同的遮罩。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 版本 1809 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server [僅限傳統型應用程式] |
標頭 | projectedfslib.h |