Is there a simple example to use COM IFileBasedLogInit or ILog interfaces
See the question and my original answer on StackOverflowThis is just regular COM, you can read the documentation on File-based Implementation, it explains how it works. Here is some sample code:
int main()
{
CoInitialize(NULL);
{
LSN lsn = {};
// write
ILog* log = NULL;
if (SUCCEEDED(CoCreateInstance(CLSID_SimpleFileBasedLog, NULL, CLSCTX_ALL, IID_PPV_ARGS(&log))))
{
IFileBasedLogInit* init = NULL;
if (SUCCEEDED(log->QueryInterface(IID_PPV_ARGS(&init))))
{
if (SUCCEEDED(init->InitNew(L"c:\\temp\\test.txlog", 0)))
{
BLOB blob = {};
if (SUCCEEDED(log->AppendRecord(&blob, 1, TRUE, &lsn)))
{
wprintf(L"write success\n");
}
}
init->Release();
}
}
log->Release();
// open
if (SUCCEEDED(CoCreateInstance(CLSID_SimpleFileBasedLog, NULL, CLSCTX_ALL, IID_PPV_ARGS(&log))))
{
IPersistFile* file = NULL;
if (SUCCEEDED(log->QueryInterface(IID_PPV_ARGS(&file))))
{
if (SUCCEEDED(file->Load(L"c:\\temp\\test.txlog", 0)))
{
BYTE* bytes;
ULONG size;
if (SUCCEEDED(log->ReadRecord(lsn, NULL, NULL, &bytes, &size)))
{
wprintf(L"read success\n");
}
}
file->Release();
}
}
}
CoUninitialize();
return 0;
}