0
更新されたファイルをインターネットからダウンロードして開こうとしています。 現在、私はディスクにファイルをダウンロードして作業していますが、ファイルをchar配列にダウンロードして、何らかの形でメモリからファイルを開くことが可能かどうか疑問に思っていましたか?C++ Windowsメモリからファイルを開く方法
私のファイルは、(現在のプログラムを更新するための)exeと、場合によっては新しい使用情報のテキストファイルだけになることがあります。
ここでは、ダウンロード中にファイルをメモリに読み込む必要がありますが、メモリからそのファイルを開くという点で次にどこに行くのかわかりません。
#include <ShlObj.h>
#include <urlmon.h>
#include <atlbase.h> // CComPtr
bool downloadToMemory(){
char* fileBuffer = 0;
ComInIt init;
CComPtr<IStream> pStream;
// Open HTTP Request
HRESULT hr = URLOpenBlockingStream(nullptr, host.c_str(), &pStream, 0, nullptr);
if (FAILED(hr))
{
return false;
}
else
{
DWORD bytesRead = 1;
std::size_t total = 0;
while(bytesRead > 0 && hr != S_FALSE)
{
// Dynamically increase buffer size
fileBuffer = (char*)realloc(fileBuffer, bytesRead + 4096 * sizeof(char));
hr = pStream->Read(fileBuffer, sizeof(fileBuffer), &bytesRead);
total += bytesRead;
}
// Do something here with fileBuffer
}