簡體   English   中英

Win32 CopyFile 無法復制到外部驅動器

[英]Win32 CopyFile can't copy to external drive

我正在創建一個 windows 服務,該服務使用CopyFileW將文件復制到外部拇指驅動器。 一切都按預期工作,但問題是 windows 將文件復制到拇指驅動器並顯示為“文件”類型,既不能刪除、復制、移動也不能重命名。 '文件'
我嘗試了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());
}

由於“paddy”的注釋,我終於找到了錯誤,這是目標文件名的問題,在轉儲它並以十六進制查看后,我發現它附加了 0x00 0x20 這是一個WCHAR空間。 在最后刪除那個額外的字符后,問題得到了解決。 我不知道PathFindFileNameW是否附加了它或者它是另一個原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM