zoukankan      html  css  js  c++  java
  • 读取STGMEDIUM中的数据

    该数据结构用在COM对象之间传递使用, 头文件中定义的数据结构如下:

    typedef struct tagSTGMEDIUM
        {
        DWORD tymed;
        /* [switch_is][switch_type] */ union 
            {
            /* [case()] */ HBITMAP hBitmap;
            /* [case()] */ HMETAFILEPICT hMetaFilePict;
            /* [case()] */ HENHMETAFILE hEnhMetaFile;
            /* [case()] */ HGLOBAL hGlobal;
            /* [case()] */ LPOLESTR lpszFileName;
            /* [case()] */ IStream *pstm;
            /* [case()] */ IStorage *pstg;
            /* [default] */  /* Empty union arm */ 
            }     ;
        /* [unique] */ IUnknown *pUnkForRelease;
        }     uSTGMEDIUM;

    该结构通过 tymed来表示 联合体中的那个数据成员有效,取值可以如下:

    typedef [transmit_as(long)] enum tagTYMED 
    { 
        TYMED_HGLOBAL     = 1, 
        TYMED_FILE        = 2, 
        TYMED_ISTREAM     = 4, 
        TYMED_ISTORAGE    = 8, 
        TYMED_GDI         = 16, 
        TYMED_MFPICT      = 32, 
        TYMED_ENHMF       = 64, 
        TYMED_NULL        = 0 
    } TYMED; 
    TYMED_FILE表示STGMEDIUM中的lpszFileName有效, 其他与此类似,可以参看msdn来
    如果数据是一个TYMED_HGLOBAL , 可以通过如下读取:
    DWORD dwDataLength = pBindInfo->cbstgmedData;
                    if (pBindInfo->stgmedData.tymed & TYMED_HGLOBAL)
                    {
                        char* pSrc = (char*)::GlobalLock(pBindInfo->stgmedData.hGlobal);
                        m_pCallback->SetPostData(pSrc, dwDataLength);
                        ::GlobalUnlock(pBindInfo->stgmedData.hGlobal);
                    }
  • 相关阅读:
    Django中的分页操作、form校验工具
    Django之form表单操作
    手写版本orm
    mysql注入问题
    MySQL基本操作
    初识数据库
    进程池、线程池
    信号量
    event事件
    死锁
  • 原文地址:https://www.cnblogs.com/kwliu/p/2851102.html
Copyright © 2011-2022 走看看