Win32 CopyFile не может скопировать на внешний диск - PullRequest
0 голосов
/ 16 октября 2019

Я создаю службу Windows, которая копирует файл на внешний флэш-накопитель, используя CopyFileW. Все работает, как и ожидалось, но проблема в том, что Windows копирует файл на флэш-накопитель, и он отображается как тип «Файл», и его нельзя ни удалить, ни скопировать, ни переместить, ни переименовать. 'File'
Я попытался GetLastError, но ошибок не было, т.е. CopyFile вернул true.
Работает, если файл назначения находится на диске C. Вот код, отвечающий за копирование файла:

LPWSTR filename = PathFindFileNameW(file.first.c_str());
LPWSTR mediaFilePath = new WCHAR[1000];
wcscpy_s(mediaFilePath, 255, lpdbv->dbcc_name);
wcscat_s(mediaFilePath, 255, L"\\");
wcscat_s(mediaFilePath, 255, filename);

bool copied = CopyFileW(file.first.c_str(), mediaFilePath, false);
if (!copied) {
    logToFile(L"Couldn't copy file, error " + GetLastError());
}

1 Ответ

1 голос
/ 16 октября 2019

Я наконец-то обнаружил ошибку благодаря комментарию «paddy», это проблема с именем файла назначения, после выгрузки его и просмотра в шестнадцатеричном виде я обнаружил, что к нему добавлено 0x00 0x20, что является WCHARпространство. после удаления этого лишнего символа в конце проблема была исправлена.

...