Condividi tramite


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
Journal.h (richiede anche journal_i.c)
DLL
Journal.dll

Vedi anche

GUID delle proprietà personalizzate

ReadFromStream, metodo