
COMPersistHelper::LoadFromStream 메서드는 OLE Stream을 읽어들이기 위해 IStream 인터페이스를 사용합니다. 이 인터페이스는 COM(Component Object Model)에서 데이터를 읽고 쓰기 위한 표준 인터페이스입니다.
OLE Stream을 읽어들이는 과정에서 발생할 수 있는 오류를 처리하는 방법은 다음과 같습니다.
1. IStream::Read 메서드의 반환 값이 0보다 작을 경우, 오류가 발생한 것입니다. 이 경우, 에러 코드를 확인하여 오류를 처리해야 합니다.
2. IStream::Read 메서드의 반환 값이 0일 경우, 읽어들이는 데이터가 끝났을 때 발생합니다. 이 경우, 더 이상 읽어들이지 않도록 처리해야 합니다.
3. COM 오류가 발생할 수 있습니다. 이 경우, COM 오류 핸들러를 통해 오류를 처리해야 합니다.
OLE Stream을 읽어들이는 예제는 다음과 같습니다.
#hostingforum.kr
cpp
HRESULT hr = S_OK;
// IStream 인터페이스를 얻어옵니다.
IStream* pStream = NULL;
hr = CoCreateInstance(CLSID_StreamOnStdFile, NULL, CLSCTX_INPROC_SERVER, IID_IStream, (LPVOID*)&pStream);
if (SUCCEEDED(hr))
{
// OLE Stream을 읽어들이는 메서드를 호출합니다.
hr = pStream->Read(pBuffer, sizeof(DWORD), &cbRead);
if (FAILED(hr))
{
// 오류가 발생한 경우, 에러 코드를 확인하여 오류를 처리합니다.
hr = HRESULT_FROM_WIN32(GetLastError());
}
else
{
// 읽어들이는 데이터가 끝났을 때, 더 이상 읽어들이지 않도록 처리합니다.
if (cbRead == 0)
{
// 더 이상 읽어들이지 않도록 처리합니다.
}
}
// IStream 인터페이스를 해제합니다.
pStream->Release();
}
이 예제는 OLE Stream을 읽어들이는 기본적인 방법을 보여줍니다. 실제로 사용하는 경우, 더 많은 오류 처리를 추가해야 하며, COM 오류 핸들러를 통해 오류를 처리해야 합니다.
2025-04-01 23:05