面对在网络文件夹中为文件创建文件流的问题

时间:2019-03-04 09:58:27

标签: c++ windows file createfile

我们有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?

请建议我如何为网络文件夹中的文件创建文件流。

0 个答案:

没有答案