Annotation of mstools/mfc/src/olefile.cpp, revision 1.1.1.1

1.1       root        1: // This is a part of the Microsoft Foundation Classes C++ library. 
                      2: // Copyright (C) 1992 Microsoft Corporation 
                      3: // All rights reserved. 
                      4: //  
                      5: // This source code is only intended as a supplement to the 
                      6: // Microsoft Foundation Classes Reference and Microsoft 
                      7: // QuickHelp documentation provided with the library. 
                      8: // See these sources for detailed information regarding the 
                      9: // Microsoft Foundation Classes product. 
                     10: 
                     11: #include "afxole.h"
                     12: #pragma hdrstop
                     13: 
                     14: #ifdef AFX_OLE_SEG
                     15: #pragma code_seg(AFX_OLE_SEG)
                     16: #endif
                     17: 
                     18: #ifdef _DEBUG
                     19: #undef THIS_FILE
                     20: static char BASED_CODE THIS_FILE[] = __FILE__;
                     21: #endif
                     22: 
                     23: #define new DEBUG_NEW
                     24: 
                     25: ////////////////////////////////////////////////////////////////////////////
                     26: // CSharedFile implementation
                     27: 
                     28: IMPLEMENT_DYNAMIC(CSharedFile, CMemFile)
                     29: 
                     30: CSharedFile::CSharedFile(UINT nAllocFlags, UINT nGrowBytes /* = 1024 */)
                     31:        : CMemFile(nGrowBytes)
                     32: {
                     33:        m_nAllocFlags = nAllocFlags;
                     34:        m_hGlobalMemory = NULL;
                     35: }
                     36: 
                     37: CSharedFile::~CSharedFile()
                     38: {
                     39:        if (m_lpBuffer)
                     40:                Close();        // call appropriate Close/Free
                     41:        ASSERT(m_lpBuffer == NULL);
                     42: }
                     43: 
                     44: void
                     45: CSharedFile::SetHandle(HANDLE hGlobalMemory)
                     46: {
                     47:        ASSERT(m_hGlobalMemory == NULL);        // do once only
                     48:        ASSERT(m_lpBuffer == NULL);     // do once only
                     49:        ASSERT(m_nPosition == 0);   
                     50: 
                     51:        m_hGlobalMemory = hGlobalMemory;
                     52:        m_lpBuffer = (BYTE FAR*)::GlobalLock(m_hGlobalMemory);
                     53:        m_nBufferSize = m_nFileSize = (UINT)::GlobalSize(m_hGlobalMemory);
                     54: }
                     55: 
                     56: BYTE FAR* 
                     57: CSharedFile::Alloc(UINT nBytes)
                     58: {
                     59:        ASSERT(m_hGlobalMemory == NULL);        // do once only
                     60:        m_hGlobalMemory = ::GlobalAlloc(m_nAllocFlags, (DWORD) nBytes);
                     61:        if (m_hGlobalMemory == NULL)
                     62:                return NULL;
                     63:        return (BYTE FAR*)::GlobalLock(m_hGlobalMemory);
                     64: }
                     65: 
                     66: BYTE FAR* 
                     67: CSharedFile::Realloc(BYTE FAR*, UINT nBytes)
                     68: {
                     69:        ASSERT(m_hGlobalMemory != NULL);
                     70:        ::GlobalUnlock(m_hGlobalMemory);
                     71:        HANDLE hNew;
                     72:        hNew = ::GlobalReAlloc(m_hGlobalMemory, (DWORD) nBytes, m_nAllocFlags);
                     73:        if (hNew == NULL)
                     74:                return NULL;
                     75:        m_hGlobalMemory = hNew;
                     76:        return (BYTE FAR*)::GlobalLock(m_hGlobalMemory);
                     77: }
                     78: 
                     79: void
                     80: CSharedFile::Free(BYTE FAR*)
                     81: {
                     82:        ASSERT(m_hGlobalMemory != NULL);
                     83:        ::GlobalUnlock(m_hGlobalMemory);
                     84:        ::GlobalFree(m_hGlobalMemory);
                     85: }
                     86: 
                     87: HANDLE
                     88: CSharedFile::Detach()
                     89: {
                     90:        HANDLE  hMem;
                     91:        ASSERT(m_hGlobalMemory != NULL);
                     92:        hMem = m_hGlobalMemory;
                     93: 
                     94:        m_hGlobalMemory = NULL; // detach from global handle
                     95: 
                     96:        // re-initialize the CMemFile parts too
                     97:        m_lpBuffer = NULL;
                     98:        m_nBufferSize = 0;
                     99: 
                    100:        return hMem;
                    101: }
                    102: 
                    103: ////////////////////////////////////////////////////////////////////////////

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.