如何查询给定文件的OneDrive同步状态

Jon*_*ter 9 windows winapi windows-shell

既然微软已经在Windows 10的文件系统中恢复了OneDrive(假设它们在6个月内没有再丢弃它),我正在寻找如何确定任意文件的同步状态.

资源管理器中至少显示五种不同的状态(这正是我观察到的,可能还有其他状态):

  • 在线时可用 在线时可用
  • 可在此设备上使用 可在此设备上使用
  • 始终可在此设备上使用 始终可在此设备上使用
  • 同步/下载 同步/下载
  • 错误 错误

对于文件,可以使用该FILE_ATTRIBUTE_OFFLINE属性确定前两个状态.

似乎可以使用新的未记录的文件属性为文件确定"始终可用"状态0x00080000.

然而,确定文件夹的这些状态以及文件和文件夹的同步和错误状态仍然是个谜.

我的第一个想法是使用属性system(IPropertyStore),但以下四个属性键都没有帮助:

  • PKEY_OfflineAvailability 回报 VT_EMPTY
  • PKEY_OfflineStatus 回报 VT_EMPTY
  • PKEY_FilePlaceholderStatus 返回一个未记录的值(0xe)但它在状态确实时不会改变
  • PKEY_FileOfflineAvailabilityStatus 回报 VT_EMPTY

我有一种感觉,这将是另一个未记录的Microsoft API,但我想我会问是否有人有任何建议.

LOS*_*OST 1

我尝试在 Windows 11 22H2 上对其进行逆向工程,结果如下:

当文件仍在同步时,两个属性会出现不同:

  • System.FilePlaceholderStatus完成后为 15,仍在同步时为 7。例如 0x8 位设置 == 完成同步。
  • System.SyncTransferStatusFlags同步时为1,否则为0 null