Interfaccia IJournalReader
Fornisce l'accesso in lettura a un file journal di Windows, restituendo un flusso contenente una versione XML del contenuto del file.
Nota
Il componente Lettore journal non può leggere i file journal di Windows creati dai computer che eseguono Windows 7 o versione successiva. L'interfaccia IJournalReader deve essere considerata deprecata o obsoleta e non deve essere usata.
Membri
L'interfaccia IJournalReader eredita dall'interfaccia IUnknown . IJournalReader include anche questi tipi di membri:
Metodi
L'interfaccia IJournalReader include questi metodi.
Metodo | Descrizione |
---|---|
ReadFromStream | Porta un flusso in un file Journal Note e restituisce un flusso XML che rappresenta il contenuto del documento. |
Commenti
La classe JournalReader consente di caricare un flusso di documenti Journal e di ricevere un flusso XML che rappresenta il contenuto. È possibile ricostituire, visualizzare e modificare l'input penna.
Esempio
L'esempio seguente di un gestore per l'evento Click di un pulsante crea un'istanza della classe JournalReader e la usa per leggere un file Journal esistente.
Nota
Il metodo DisplayXml chiamato da questo esempio non viene visualizzato. L'implementazione specifica di tale metodo dipende dalle esigenze dell'applicazione.
void CJntlReaderMFCDlg::OnBnClickedButton1()
{
static TCHAR BASED_CODE szFilter[] =
_T("Journal files (*.jnt)|*.jnt|All files (*.*)|*.*");
CFileDialog* fileDialog = new CFileDialog(TRUE, _T("*.jnt"), NULL,
OFN_FILEMUSTEXIST, szFilter, this);
// Get the filename from the user via a File Open dialog
if (fileDialog != NULL &&
fileDialog->DoModal() == IDOK)
{
CString strFileName = fileDialog->GetPathName();
// Read a JNT file into a memory buffer
HANDLE hFile = CreateFile(strFileName,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
// 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))
{
HRESULT hr;
IStream* pJntStream;
// Create an IStream that points to the buffer
hr = CreateStreamOnHGlobal(hGlobal, FALSE, &pJntStream);
if (SUCCEEDED(hr))
{
IJournalReader* pJntReader;
// Create a JournalReader object
hr = CoCreateInstance(CLSID_JournalReader, NULL, CLSCTX_ALL,
IID_IJournalReader, (void**)&pJntReader);
if (SUCCEEDED(hr))
{
IStream* pXmlStream;
// Read in the JNT file via the JournalReader
hr = pJntReader->ReadFromStream(pJntStream, &pXmlStream);
if (SUCCEEDED(hr))
{
// Display results
DisplayXml(pXmlStream);
// Clean up
pXmlStream->Release();
}
pJntReader->Release();
}
pJntStream->Release();
}
}
GlobalUnlock(hGlobal);
}
GlobalFree(hGlobal);
}
CloseHandle(hFile);
}
delete fileDialog;
}
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows XP Tablet PC Edition [solo app desktop] |
Server minimo supportato |
Nessuno supportato |
Intestazione |
|
DLL |
|