IJournalReader::ReadFromStream 方法
将流提取到日记笔记文件,并返回表示文档内容的 XML 流。
注意
日记读取器组件无法读取运行 Windows 7 或更高版本的计算机创建的 Windows 日记文件。 应将 IJournalReader 接口视为已弃用或已过时,不应使用。
语法
HRESULT ReadFromStream(
[in] IStream *pJournalFileStream,
[out, retval] IStream **ppXmlStream
);
parameters
-
pJournalFileStream [in]
-
表示要读取的日记文件的 IStream 对象。
-
ppXmlStream [out, retval]
-
指向 IStream 对象的地址的指针,该对象将接收通过读取日志文件创建的 XML 流。
返回值
如果此方法成功,则返回 S_OK。 否则,它将返回 HRESULT 错误代码。
备注
流用于避免直接访问文件系统,并允许选择使用哪种 XML 分析方法。
示例
下面的按钮 Click 事件的处理程序示例创建 IJournalReader 接口 的实例,并使用它来读取现有的日记文件。
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 Tablet PC Edition [仅限桌面应用] |
最低受支持的服务器 |
无受支持的版本 |
标头 |
|
DLL |
|
请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈