SHFileOperation 有效但打印错误消息
SHFileOperation works but prints error messages
我正在使用 Shell API 复制包含文件的文件夹。
SHFILEOPSTRUCT sf = {0};
sf.wFunc = FO_COPY;
sf.hwnd = 0;
sf.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI | FOF_SILENT | FOF_NO_UI;
sf.pFrom = "C:\Users\Sergi0\AppData\Local\Temp\untar.temp\000[=10=]";
sf.pTo = "F:\[=10=]";
// both pFrom and pTo are double NULL terminated, I have rechecked it
int err = SHFileOperation(&sf);
一切正常,文件夹已复制到驱动器 F:
问题是 messages
internal\sdk\inc\wil\filesystem.h(820)\windows.storage.dll!7684045C: (caller: 7676413A) ReturnHr(2) tid(660) 80070057 Incorrect parameter.
...
internal\sdk\inc\wil\filesystem.h(820)\windows.storage.dll!7684045C: (caller: 7676413A) ReturnHr(101) tid(660) 80070057 Incorrect parameter.
打印在 Visual Studio 调试控制台中。文件夹 000 中有 100 个文件,打印了 100 条消息。
我应该担心这些吗?我在 Windows 10.
上使用 VS 2017
更新
我尝试使用另一台设备,我在 VS2017 和 VS2008 中看到相同的错误。但是,通用闪存驱动器没有此类错误。所以它似乎与我使用的设备上的大容量存储实现有关。
我没有在 SDK 的任何地方找到文件 filesystem.h。
Should I be worried about these?
如果文件被正确复制,并且 SHFileOperation()
没有向您的代码报告错误,那么不用担心。调试消息在 API 内部,"incorrect parameter" 错误由 API.
内部处理
另一方面,SHFILEOPSTRUCT
确实有一个 fAnyOperationsAborted
字段,如果任何单个文件复制失败,该字段将设置为 TRUE
。 SHFileOperation()
本身可能整体成功,但个别文件可能失败,因此您的代码应检查该情况。
您无需担心这些消息。复制引擎试图获取有关目标目录 (F:\
) 的信息,但事实证明它不是目录;这是一个驱动器。返回错误 ("Silly copy engine, that's not a directory."),复制引擎显示 "Sorry,",一切正常进行。
抱歉造成不必要的警报。
我正在使用 Shell API 复制包含文件的文件夹。
SHFILEOPSTRUCT sf = {0};
sf.wFunc = FO_COPY;
sf.hwnd = 0;
sf.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI | FOF_SILENT | FOF_NO_UI;
sf.pFrom = "C:\Users\Sergi0\AppData\Local\Temp\untar.temp\000[=10=]";
sf.pTo = "F:\[=10=]";
// both pFrom and pTo are double NULL terminated, I have rechecked it
int err = SHFileOperation(&sf);
一切正常,文件夹已复制到驱动器 F: 问题是 messages
internal\sdk\inc\wil\filesystem.h(820)\windows.storage.dll!7684045C: (caller: 7676413A) ReturnHr(2) tid(660) 80070057 Incorrect parameter.
...
internal\sdk\inc\wil\filesystem.h(820)\windows.storage.dll!7684045C: (caller: 7676413A) ReturnHr(101) tid(660) 80070057 Incorrect parameter.
打印在 Visual Studio 调试控制台中。文件夹 000 中有 100 个文件,打印了 100 条消息。
我应该担心这些吗?我在 Windows 10.
上使用 VS 2017更新 我尝试使用另一台设备,我在 VS2017 和 VS2008 中看到相同的错误。但是,通用闪存驱动器没有此类错误。所以它似乎与我使用的设备上的大容量存储实现有关。 我没有在 SDK 的任何地方找到文件 filesystem.h。
Should I be worried about these?
如果文件被正确复制,并且 SHFileOperation()
没有向您的代码报告错误,那么不用担心。调试消息在 API 内部,"incorrect parameter" 错误由 API.
另一方面,SHFILEOPSTRUCT
确实有一个 fAnyOperationsAborted
字段,如果任何单个文件复制失败,该字段将设置为 TRUE
。 SHFileOperation()
本身可能整体成功,但个别文件可能失败,因此您的代码应检查该情况。
您无需担心这些消息。复制引擎试图获取有关目标目录 (F:\
) 的信息,但事实证明它不是目录;这是一个驱动器。返回错误 ("Silly copy engine, that's not a directory."),复制引擎显示 "Sorry,",一切正常进行。
抱歉造成不必要的警报。