ReadFile没有正确读取字节

问题描述 投票:0回答:1

我试图使用readfile读取文件,将其存储到一个宽数组,然后将其写入另一个文件。问题是,当我将它们并排放在HxD中时,一些字节是正确的(例如文本),但其他一切都完全不同。我也跑不了

struct a
{
    BYTE* buff;
    long siz;
};

int main()
{
    HANDLE hFile;
    a struct_a;

    if (hFile = CreateFileW(L"C:\\Windows\\System32\\notepad.exe", GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr))
    {
        long lFileSize = GetFileSize(hFile, nullptr);

        if (lFileSize)
        {
            struct_a.siz = lFileSize;
            struct_a.buff = new BYTE[struct_a.siz];

            if (ReadFile(hFile, struct_a.buff, struct_a.siz,
                nullptr, nullptr))
            {
                CloseHandle(hFile);
            }

        }
    }

    HANDLE h = CreateFileA("C:\\Users\\USER\\Desktop\\notepad_new.exe", GENERIC_WRITE, FILE_SHARE_WRITE, nullptr,
        CREATE_NEW, FILE_ATTRIBUTE_NORMAL, nullptr);

    WriteFile(h, struct_a.buff, struct_a.siz, nullptr, nullptr);

return 0;
}

我希望它能够正确读取文件,然后编写它并让我能够运行它。


作为奖励,我在尝试阅读后尝试在文件末尾写一些字节

struct_a.buff[struct_a.siz - 5] = L'A';

但它从来没有出现在任何地方。但是当我在开始时尝试编写它(删除括号)时,它写得很好。

编辑:我之后尝试阅读,它读得非常奇怪

编辑2:问题图片:enter image description here

c++ winapi
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.