다음을 통해 공유


IJournalReader::ReadFromStream 메서드

저널 노트 파일로 스트림을 가져와서 문서의 내용을 나타내는 XML 스트림을 반환합니다.

참고

저널 판독기 구성 요소는 Windows 7 이상을 실행하는 컴퓨터에서 만든 Windows 저널 파일을 읽을 수 없습니다. IJournalReader 인터페이스는 더 이상 사용되지 않거나 사용되지 않는 것으로 간주되어야 하며 사용하지 않아야 합니다.

구문

HRESULT ReadFromStream(
  [in]          IStream *pJournalFileStream,
  [out, retval] IStream **ppXmlStream
);

매개 변수

pJournalFileStream [in]

읽을 저널 파일을 나타내는 IStream 개체입니다.

ppXmlStream [out, retval]

Journal 파일을 읽어 만든 XML 스트림을 받을 IStream 개체의 주소에 대한 포인터입니다.

반환 값

메서드가 성공하면 S_OK를 반환하고, 그러지 않으면 HRESULT 오류 코드를 반환합니다.

설명

스트림은 파일 시스템에 직접 액세스하지 않도록 하고 XML 구문 분석 방법을 선택할 수 있도록 하는 데 사용됩니다.

예제

단추의 Click 이벤트에 대한 처리기의 다음 예제에서는 IJournalReader 인터페이스의 instance 만들고 이를 사용하여 기존 저널 파일을 읽습니다.

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 버전 [데스크톱 앱만 해당]
지원되는 최소 서버
지원되는 버전 없음
헤더
Journal.h(journal_i.c도 필요)
DLL
Journal.dll

추가 정보

IJournalReader 인터페이스

저널 판독기 스키마 참조