【发布时间】:2021-08-16 12:52:54
【问题描述】:
我正在尝试使用 Cloud Files API 实现虚拟驱动器。我无法使删除操作起作用。由于某种原因,CF_CALLBACK_TYPE_NOTIFY_DELETE 回调被调用了两次。
我使用两种不同的方法在 C++ 和 C# 中构建了两个示例,在这两种情况下我得到了相同的结果:
- CF_CALLBACK_TYPE_NOTIFY_DELETE 被调用。
- CF_CALLBACK_TYPE_NOTIFY_DELETE 再次被调用。
- CF_CALLBACK_TYPE_NOTIFY_DELETE_COMPLETION 被调用。
这种行为有点令人困惑。谁能解释为什么会发生这种情况以及在第二次通话中我应该做什么?我可以以某种方式区分它们并忽略其中一个调用吗?
【问题讨论】:
-
“我能以某种方式区分它们吗” - 您可以存储待删除的注册表。在
CF_CALLBACK_TYPE_NOTIFY_DELETE上检查注册表以查看是否已经存在条目。如果没有,这是第一次调用,所以添加它。如果有,这是第二次(或后续)调用。在CF_CALLBACK_TYPE_NOTIFY_DELETE_COMPLETION上从注册表中删除该条目。
标签: winapi filesystems virtualfilesystem