我们有Qt,C ++桌面应用程序,并且使用文件流(https://docs.microsoft.com/en-us/windows/desktop/FileIO/file-streams)来写入文件的元数据。
我们使用以下代码访问文件流:
HANDLE hStream;
QString localFilePath = physicalFilePath + ":AppData:$DATA"
hStream = CreateFile(localFilePath.toStdWString().c_str(),
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
0,
NULL);
当我们在同一台机器上的文件夹上工作时,这很好用。但是,当我们的“ physicalFilePath”位于网络文件夹(即\ nas \ Test \ TestFile.docx)中时,CreateFile返回错误代码2,即ERROR_FILE_NOT_FOUND 我什至尝试定义MS-DOS设备名称,所以尝试了
TCHAR szDriveLetter = L”G:”;
TCHAR pszNTDevice = L”\\nas\Test\TestFile.docx”;
DWORD fResult = DefineDosDevice(DDD_RAW_TARGET_PATH | DDD_NO_BROADCAST_SYSTEM, szDriveLetter, pszNTDevice);
这将返回1或非零值,即成功,但是当我使用
std::wstring localFilePath = L"G:\\Test.txt:AdoddleData:$DATA";
HANDLE hStream = CreateFile(localFilePath.c_str(),
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
OPEN_ALWAYS,
0,
NULL);
if (hStream == INVALID_HANDLE_VALUE)
{
DWORD err = GetLastError();
CloseHandle(hStream);
}
它返回错误代码123,ERROR_INVALID_NAME?
请建议我如何为网络文件夹中的文件创建文件流。