///////////////////////////////////////////////////////////// // readStrg.cpp - read storage created with strdstrg.exe // // // // Jim Fawcett, CSE775 - Distributed Objects, Spring 2005 // ///////////////////////////////////////////////////////////// #include #include using namespace std; void main(int argc, char** argv) { cout << "\n Demonstrate Basic Structured Storage - Reading" << "\n ================================================\n"; CoInitialize(NULL); IStorage* pStorage; HRESULT hr = StgOpenStorage( L"c:\\temp\\NewTestFile.STG", NULL, STGM_DIRECT|STGM_READWRITE|STGM_SHARE_EXCLUSIVE, NULL, NULL, &pStorage ); if(FAILED(hr)) { cout << "StgOpenStorage failed" << endl; exit(0); } IStream *pStream1; hr = pStorage-> OpenStream( L"firstStream", NULL, STGM_DIRECT|STGM_READ|STGM_SHARE_EXCLUSIVE, 0, &pStream1 ); if(FAILED(hr)) { cout << "StgOpenStream failed" << endl; exit(0); } ULONG bytesRead; char buffer[50]; int i=0; while(true && i<50) { pStream1->Read((void*)(buffer+i),1,&bytesRead); if(*(buffer+i++) == '!') break; } buffer[--i] = '\0'; cout << "\n read \"" << buffer << "\" from stream \"firstStream\""; IStream *pStream2; hr = pStorage-> OpenStream( L"secondStream", NULL, STGM_DIRECT|STGM_READ|STGM_SHARE_EXCLUSIVE, 0, &pStream2 ); if(FAILED(hr)) { cout << "StgOpenStream failed" << endl; exit(0); } i=0; while(true && i<50) { pStream2->Read((void*)(buffer+i),1,&bytesRead); if(*(buffer+i++) == '!') break; } buffer[--i] = '\0'; cout << "\n read \"" << buffer << "\" from stream \"secondStream\""; cout << "\n\n"; pStream1->Release(); pStream2->Release(); pStorage->Release(); CoUninitialize(); }