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

问题描述 投票:0回答:1

现在 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 winapi windows-shell
1个回答
0
投票

我尝试在 Windows 11 22H2 上对其进行逆向工程,这就是我发现的:

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

    完成后,
  • System.FilePlaceholderStatus
    为 15,仍在同步时为 7。例如。 0x8 位设置 == 完成同步。
  • 同步时
  • System.SyncTransferStatusFlags
    为 1,否则为 0 或
    null
© www.soinside.com 2019 - 2024. All rights reserved.