# STGMEDIUM

The STGMEDIUM structure is a generalized global memory handle used for data transfer operations by the IAdviseSink, IDataObject, and IOleCache interfaces.

    typedef struct tagSTGMEDIUM
    {
        DWORD tymed;
        [switch_type(DWORD), switch_is((DWORD) tymed)]
        union {
            [case(TYMED_GDI)]      HBITMAP        hBitmap;
            [case(TYMED_MFPICT)]   HMETAFILEPICT  hMetafilePict;
            [case(TYMED_ENHMF)]    HENHMETAFILE   hEnhMetaFile;
            [case(TYMED_HGLOBAL)]  HGLOBAL        hGlobal;
            [case(TYMED_FILE)]     LPWSTR         lpszFileName;
            [case(TYMED_ISTREAM)]  IStream        *pstm;
            [case(TYMED_ISTORAGE)] IStorage       *pstg;
            [default] ;
        };
        [unique] IUnknown *pUnkForRelease;
    }STGMEDIUM;
    typedef STGMEDIUM *LPSTGMEDIUM;

Members

tymed
  Type of storage medium. The marshaling and unmarshaling routines use this value to determine which union member was used. This value must be one of the elements of the TYMED enumeration.
union member
  Handle, string, or interface pointer that the receiving process can use to access the data being transferred. If tymed is TYMED_NULL, the union member is undefined; otherwise, it is one of the following:
  hBitmap
    Bitmap handle. The tymed member is TYMED_GDI.
  hMetafilePict
    Metafile handle. The tymed member is TYMED_MFPICT.
  hEnhMetaFile
    Enhanced metafile handle. The tymed member is TYMED_ENHMF.
  hGlobal
    Global memory handle. The tymed member is TYMED_HGLOBAL.
  lpszFileName
    Pointer to the path of a disk file that contains the data. The tymed member is TYMED_FILE.
  pstm
    Pointer to an IStream interface. The tymed member is TYMED_ISTREAM.
  pstg
    Pointer to an IStorage interface. The tymed member is TYMED_ISTORAGE.
pUnkForRelease
  Pointer to an interface instance that allows the sending process to control the way the storage is released when the receiving process calls the ReleaseStgMedium function. If pUnkForRelease is NULL, ReleaseStgMedium uses default procedures to release the storage; otherwise, ReleaseStgMedium uses the specified IUnknown interface.

See Also

FORMATETC, IAdviseSink, IDataObject, IOleCache, ReleaseStgMedium