共用方式為


IJournalReader 介面

提供 Windows 日誌檔案的讀取權限,傳回包含檔案內容的 XML 版本資料流程。

注意

日誌讀取器元件無法讀取執行 Windows 7 或更新版本之機器所建立的 Windows 日誌檔案。 IJournalReader 介面應該被視為已被取代或過時,不應使用。

成員

IJournalReader介面繼承自IUnknown介面。 IJournalReader 也有下列類型的成員:

方法

IJournalReader介面具有這些方法。

方法 Description
ReadFromStream 將資料流程帶到日誌記事檔案,並傳回代表檔內容的 XML 資料流程。

備註

JournalReader類別可讓您載入日誌檔串流,並接收代表內容的 XML 資料流程。 您可以重新建立、顯示及操作筆跡。

範例

下列按鈕 Click 事件的處理常式範例會建立 JournalReader 類別的實例,並用它來讀取現有的 Journal 檔案。

注意

不會顯示從這個範例呼叫的 DisplayXml 方法。 這類方法的特定實作取決於應用程式的需求。

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;
  }
}

規格需求

需求
最低支援的用戶端
Windows XP Tablet PC Edition [僅限傳統型應用程式]
最低支援的伺服器
都不支援
標頭
Journal.h (也需要 journal_i.c)
DLL
Journal.dll

另請參閱

自訂屬性 GUID

ReadFromStream 方法