最初に を作成しSAFEARRAYBOUND
、C 配列のように初期化SAFEARRAYBOUND sabdBounds[2] = { {10, 0}, {20, 0\} };
できますSafeArrayCreate
。必要な を取得するための適切なタイプと寸法LPSAFEARRAY
。
アップデート:
を作成する方法を示すコードを次に示しますLPSAFEARRAY
。配列を作成する前にファイルのサイズを見つけて、データを直接読み取ることができるようにします。ファイルの内容をいくつかの場所に保存することもできます。中間バッファーを作成してから、後者を作成しますSAFEARRAYBOUND
。
#include <Windows.h>
#include <fstream>
#include <cstdlib>
int main(int argc, char** argv)
{
std::streampos fileSize = 0;
std::ifstream inputFile("file.bin", std::ios::binary);
fileSize = inputFile.tellg();
inputFile.seekg( 0, std::ios::end );
fileSize = inputFile.tellg() - fileSize;
SAFEARRAYBOUND arrayBounds[1] = { {fileSize, 0}}; // You have one dimension, with fileSize bytes
LPSAFEARRAY safeArray = SafeArrayCreate(VT_I1, 1, arrayBounds);
SafeArrayLock(safeArray);
char* pData = reinterpret_cast<char*>(safeArray->pvData); // This should be the pointer to the first element in the array, fill in the data as needed
// Do your stuff
SafeArrayUnlock(safeArray);
SafeArrayDestroy(safeArray);
inputFile.close();
}