C++ 快速导出嵌入式数据的方法
出于某些原因,我正在使用这里描述的方法: 它从嵌入文件的第一个字节开始,依次经过4.234.925个字节!大约需要40秒才能完成 是否有其他方法将嵌入式文件复制到硬盘?(这里我可能错了,但我认为嵌入的文件是从内存中读取的)C++ 快速导出嵌入式数据的方法,c++,winapi,embedded-resource,copying,C++,Winapi,Embedded Resource,Copying,出于某些原因,我正在使用这里描述的方法: 它从嵌入文件的第一个字节开始,依次经过4.234.925个字节!大约需要40秒才能完成 是否有其他方法将嵌入式文件复制到硬盘?(这里我可能错了,但我认为嵌入的文件是从内存中读取的) 谢谢。就像那个人说的那样,每次调用WriteFile都要写更多的文件(或整个文件)。每个字节的WriteFile调用速度会慢得离谱是的。一旦知道嵌入的exe的位置和大小,就可以在一次写入中完成 LPBYTE pbExtract; // the pointer to the d
谢谢。就像那个人说的那样,每次调用WriteFile都要写更多的文件(或整个文件)。每个字节的WriteFile调用速度会慢得离谱是的。一旦知道嵌入的exe的位置和大小,就可以在一次写入中完成
LPBYTE pbExtract; // the pointer to the data to extract
UINT cbExtract; // the size of the data to extract.
HANDLE hf;
hf = CreateFile("filename.exe", // file name
GENERIC_WRITE, // open for writing
0, // no share
NULL, // no security
CREATE_ALWAYS, // overwrite existing
FILE_ATTRIBUTE_NORMAL, // normal file
NULL); // no template
if (INVALID_HANDLE_VALUE != hf)
{
DWORD cbWrote;
WriteFile(hf, pbExtract, cbExtract, &cbWrote, NULL);
CloseHandle(hf);
}
有趣!我以前在C#中尝试过这样做,通过复制嵌入式资源(这是一个本机非托管DLL),并通过内存映射资源并使内存映射文件可执行,将其加载到进程空间中,然后调用失败的函数。。我自己还在为那个挑战而奋斗!为什么不使用“WriteFile”函数,它可以获取一定大小的任意缓冲区,并在一个foop中写入。