CreateStreamOnHGlobal 예제
CreateStreamOnHGlobal () API는 HGlobal 메모리 핸들을 사용하는 stream object를 생성하는 API이다. 여기의 object는 OLE가 제공하는 IStream이다. 리턴되어진 스트림 객체는 트랜잭션을 지원하지 않으며, 영역 잠금을 지원하지 않는다고 하는데(영역 잠금이 뭐지?) #1(hGlobal) ; GlobalAlloc API가 리턴한 메모리 핸들. 새로운 메모리 핸들이 할당되는거면 NULL이 입력됨. NULL이 입력되지 않는 경우 스트림내용은 메모리 블럭의 현재 내용이다. #2(fDeleteOnRelease) ; 스트림 객체가 해제될때 자동적으로 내제 핸들을 free해줄지 가리킴 #3(ppstm) ; 신규 스트림 객체를 받는 포인터 주소 설명 ; 스트림 객체와 연관된 메모리 핸들을 얻기 위해서 GetHGlobalFromStream API가 존재. 메모리 핸들을 넘겨서 IStream 객체를 생성 ---------------------------------------------------------------------------- HGLOBAL hMem = ::GlobalAlloc(GMEM_MOVEABLE, iSize); LPVOID pImage = ::GlobalLock(hMem); // pImage operation... ::GlobalUnlock(hMem); IStream* pStream = NULL; if( ::CreateStreamOnHGlobal(hMem, TRUE, &pStream) == S_OK ) { Image * pImage = Image::FromStream(pStream); pStream->Release(); } ---------------------------------------------------------------------------- 신규메모리핸들 생성한 후에 메모리 블럭 내용...