现在 Microsoft 已在 Windows 10 的文件系统中恢复 OneDrive(假设他们在 6 个月内不会再次删除它),我正在寻找如何确定任意文件的同步状态。
资源管理器中至少显示了五种不同的状态(这只是我观察到的,可能还有其他状态):
文件的前两个状态可以使用
FILE_ATTRIBUTE_OFFLINE
属性确定。
似乎可以使用新的、未记录的文件属性来确定文件的“始终可用”状态
0x00080000
。
然而,确定文件夹的这些状态以及文件和文件夹的同步和错误状态仍然是个谜。
我的第一个想法是使用属性系统(
IPropertyStore
),但是以下四个属性键都没有帮助:
PKEY_OfflineAvailability
返回VT_EMPTY
PKEY_OfflineStatus
返回VT_EMPTY
PKEY_FilePlaceholderStatus
返回一个未记录的值(0xe),但当状态改变时它不会改变PKEY_FileOfflineAvailabilityStatus
返回VT_EMPTY
我有一种感觉,这将只是另一个未记录的 Microsoft API,但我想我应该问问是否有人有任何建议。
我尝试在 Windows 11 22H2 上对其进行逆向工程,这就是我发现的:
当文件仍在同步时,两个属性会出现不同:
System.FilePlaceholderStatus
为 15,仍在同步时为 7。例如。 0x8 位设置 == 完成同步。System.SyncTransferStatusFlags
为 1,否则为 0 或 null
。