IJournalReader::ReadFromStream メソッド
ジャーナル ノート ファイルへのストリームを取得し、ドキュメントの内容を表す XML ストリームを返します。
注意
ジャーナル リーダー コンポーネントは、Windows 7 以降を実行しているマシンによって作成された Windows ジャーナル ファイルを読み取ることができません。 IJournalReader インターフェイスは、非推奨または廃止されたものと見なす必要があり、使用しないでください。
構文
HRESULT ReadFromStream(
[in] IStream *pJournalFileStream,
[out, retval] IStream **ppXmlStream
);
パラメーター
-
pJournalFileStream [in]
-
読み取るジャーナル ファイルを表す IStream オブジェクト。
-
ppXmlStream [out, retval]
-
ジャーナル ファイルを読み取って作成された XML ストリームを受け取る IStream オブジェクトのアドレスへのポインター。
戻り値
このメソッドが成功すると、 S_OKが返されます。 それ以外の場合は、 HRESULT エラー コードが返されます。
解説
ストリームは、ファイル システムへの直接アクセスを回避し、使用する XML 解析方法を選択できるようにするために使用されます。
例
ボタンの Click イベントのハンドラーの次の例では、 IJournalReader インターフェイス インターフェイスのインスタンスを作成し、それを使用して既存の Journal ファイルを読み取ります。
void CJntlReaderMFCDlg::OnBnClickedButton1()
{
IStream* pJntStream;
IStream* pXmlStream;
IJournalReader* pJntReader;
HRESULT hr;
CString szFileName = "";
static char BASED_CODE szFilter[] =
"Journal files (*.jnt)|*.jnt|All files (*.*)|*.*";
CFileDialog* fileDialog = new CFileDialog(TRUE, "*.jnt", NULL,
OFN_FILEMUSTEXIST, szFilter, this);
// Get the filename from the user by using a File Open dialog
if (IDOK == fileDialog->DoModal())
{
szFileName = fileDialog->GetPathName();
// Read a JNT file into a memory buffer
HANDLE hFile = CreateFile(szFileName.GetBuffer(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (INVALID_HANDLE_VALUE != hFile)
{
// Allocate memory to hold the file contents
DWORD dwFileSize = GetFileSize(hFile, NULL);
HGLOBAL hGlobal = GlobalAlloc(GHND, dwFileSize);
if (hGlobal != NULL)
{
LPBYTE pData = (LPBYTE)GlobalLock(hGlobal);
if (pData != NULL)
{
DWORD dwRead;
// Read the Journal file into the pData buffer
if (ReadFile(hFile, pData, dwFileSize, &dwRead, NULL) && dwRead == dwFileSize)
{
// Create an IStream that points to the buffer
hr = CreateStreamOnHGlobal(hGlobal, FALSE, &pJntStream);
if (SUCCEEDED(hr))
{
// Create a JournalReader object
hr = CoCreateInstance(CLSID_JournalReader, NULL, CLSCTX_ALL,
IID_IJournalReader, (void**)&pJntReader);
if (SUCCEEDED(hr))
{
// Read in the JNT file by using the JournalReader
hr = pJntReader->ReadFromStream(pJntStream, &pXmlStream);
// Display results
if (SUCCEEDED(hr))
{
DisplayXml(pXmlStream);
}
// Clean up
pXmlStream->Release();
pJntReader = NULL;
pJntStream->Release();
}
}
}
GlobalUnlock(hGlobal);
}
GlobalFree(hGlobal);
}
}
}
}
必要条件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows XP タブレット PC エディション [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
サポートなし |
Header |
|
[DLL] |
|