我正在尝试使用云文件API实现虚拟驱动器。我无法进行删除操作。由于某些原因,CF_CALLBACK_TYPE_NOTIFY_DELETE回调被称为两次。

问题描述 投票:0回答:1
CF_CALLBACK_TYPE_NOTIFY_DELETE再次调用。

CF_CALLBACK_TYPE_NOTIFY_DELETE_COMPLETION被称为

这种行为有些混乱。有人可以解释为什么会发生这种情况吗?第二个通话我该怎么办?我可以以某种方式区分它们并忽略其中一个电话吗?
  1. I在Windows文件管理器中重现了此问题,但是当我在PowerShell中“删除”操作时,没有问题。因此,这个可能的错误或Windows文件管理器的某些限制。
  2. 如果您在两个呼叫中检查文件的文件属性,在第二个呼叫中,您可能会收到invalid_file_attributes。这通常表明该文件不再存在或无法访问。(INVALID_FILE_ATTRIBUTES)
DWORD fileAttributes = GetFileAttributes(path.c_str()); if (fileAttributes == INVALID_FILE_ATTRIBUTES) { CF_OPERATION_INFO opInfo = { 0 }; CF_OPERATION_PARAMETERS opParams = { 0 }; opInfo.StructSize = sizeof(opInfo); opInfo.Type = CF_OPERATION_TYPE_ACK_DELETE; opInfo.ConnectionKey = connectionKey; opInfo.TransferKey = transferKey; opParams.ParamSize = CF_SIZE_OF_OP_PARAM(AckDelete); opParams.AckDelete.CompletionStatus = STATUS_ACCESS_DENIED; opParams.AckDelete.Flags = CF_OPERATION_ACK_DELETE_FLAG_NONE; try { winrt::check_hresult(CfExecute(&opInfo, &opParams)); } }

winapi filesystems virtualfilesystem
1个回答
4
投票
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.