亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? giplip.h

?? com編程
?? H
字號(hào):
////////////////////////////////////////////////////////
//
// giplip.h - Copyright 1997, Don Box
//
// IGlobalInterfaceTable Management Classes
// 
// This file provides two classes that simplify sharing interface
// pointers across intra-process apartment boundaries (such as when
// using the FreeThreadedMarshaler):
//  
//      GlobalInterfacePointer<Itf, &IID_Itf> - a wrapper around IGIT cookies
//      LocalInterfacePointer<Itf, &IID_Itf>  - wraps imported IGIT cookies
//
// Usage:
//
//   class Bar : public IBar {
//     GlobalInterfacePointer<IFoo, &IID_IFoo> m_gipFoo;
//     STDMETHODIMP put_Foo(IFoo *pFoo) {
//       if (m_gipFoo.IsOK())
//         m_gipFoo.Unglobalize();
//       return m_gipFoo.Globalize(pFoo);
//     }
//     STDMETHODIMP BarMethod(void) {
//       HRESULT hr;
//       LIP(IFoo) lipFoo(m_gipFoo, hr);
//       if (SUCCEEDED(hr)) 
//         hr = lipFoo->FooMethod();
//       return hr;
//     }
//   };
//
// define this symbol in exactly one translation unit per target (a la INITGUID)
#ifdef _INIT_GIPLIP
IGlobalInterfaceTable *g_pGIT = 0;
#endif


#ifndef _GIPLIP_H
#define _GIPLIP_H

#include <assert.h>

#ifndef __IGlobalInterfaceTable_FWD_DEFINED__
#error "You need NT4/SP3 SDK headers and libs from http:/www.microsoft.com/msdn"
#endif

// this is where the template class gets its pointer to the GIT
extern IGlobalInterfaceTable *g_pGIT;

// this is a wrapper that grabs the GIT when needed
class GIT {
public:
// initialize module-wide GIT pointer
    static HRESULT Init(void) {
        HRESULT hr = S_OK;
        if (g_pGIT == 0)
            hr = CoCreateInstance(CLSID_StdGlobalInterfaceTable, 0, CLSCTX_ALL,
                                  IID_IGlobalInterfaceTable, (void**)&g_pGIT);
        return hr;
    }

// release module-wide GIT pointer
    static void Term(void) {
        if (g_pGIT != 0)
            g_pGIT->Release();
    }

// autoinit module-wide GIT pointer
    GIT(void)  {
        HRESULT hr = Init();
        assert(SUCCEEDED(hr) && "Couldn't initialize GlobalInterfaceTable");
    }

// autoterm module-wide GIT pointer
    ~GIT(void) { Term(); }
};

// wrapper around a GIT cookie
template <class Itf, const IID* piid>
class GlobalInterfacePointer
{
// prevent missuse
    GlobalInterfacePointer(const GlobalInterfacePointer&);
    void operator =(const GlobalInterfacePointer&);

    DWORD m_dwCookie; // the GIT cookie
public:
// start as invalid cookie
    GlobalInterfacePointer(void) : m_dwCookie(0) { }
// auto-globalize local pointer
    GlobalInterfacePointer(Itf *pItf, HRESULT& hr) 
        : m_dwCookie(0) { 
        hr = Globalize(pItf); 
    }
// auto-unglobalize
    ~GlobalInterfacePointer(void) {
        if (m_dwCookie)
            Unglobalize();
    }
// register an interface pointer in GIT
    HRESULT Globalize(Itf *pItf) {
        assert(g_pGIT != 0 && "GIT::Init not called");
        assert(m_dwCookie == 0 && "Attempt to Globalize invalidCookie");
        return g_pGIT->RegisterInterfaceInGlobal(pItf, *piid, &m_dwCookie);
    }
// revoke an interface pointer in GIT
    HRESULT Unglobalize(void) {
        assert(g_pGIT != 0 && "GIT::Init not called");
        assert(m_dwCookie != 0 && "Attempt to Unglobalize invalid cookie");
        HRESULT hr = g_pGIT->RevokeInterfaceFromGlobal(m_dwCookie);
        m_dwCookie = 0;
        return hr;
    }
// get a local interface pointer from GIT
    HRESULT Localize(Itf **ppItf) const {
        assert(g_pGIT != 0 && "GIT::Init not called");
        assert(m_dwCookie != 0 && "Attempt to Localize invalid cookie");
        return g_pGIT->GetInterfaceFromGlobal(m_dwCookie, *piid,(void**)ppItf);
    }
// convenience methods
    bool IsOK(void) const {
        return m_dwCookie != 0;
    }
    DWORD GetCookie(void) const {
        return m_dwCookie;
    }

};

// convenience macro
#define GIP(Itf) GlobalInterfacePointer<Itf, &IID_##Itf>

// wrapper around locally imported pointer
template <class Itf, const IID* piid>
class LocalInterfacePointer
{
// prevent missuse
    LocalInterfacePointer(const LocalInterfacePointer&);
    operator = (const LocalInterfacePointer&);

// temp imported pointer
    Itf *m_pItf;
public:
// import from GIP
    LocalInterfacePointer(const GlobalInterfacePointer<Itf, piid>& rhs, 
                          HRESULT& hr) {
        hr = rhs.Localize(&m_pItf);
    }
// import from raw cookie
    LocalInterfacePointer(DWORD dwCookie, HRESULT& hr)
    {
        assert(g_pGIT != 0 && "GIT::Init not called");
        hr = g_pGIT->GetInterfaceFromGlobal(dwCookie, *piid, (void**)&m_pItf);
    }
// release temp local pointer
    ~LocalInterfacePointer(void)
    {
        if (m_pItf)
            m_pItf->Release();
    }
// declare new Itf class with private AddRef/Release 
    class SafeItf : public Itf {
        STDMETHOD_(ULONG, AddRef)(void) = 0;
        STDMETHOD_(ULONG, Release)(void) = 0;
    };
// provide an arrow operator
    SafeItf *operator ->(void) const {
        assert(m_pItf && "Null LocalInterfacePointer Used");
        return GetInterface();
    }
// provide use of temp pointer
    SafeItf *GetInterface(void) const {
        return (SafeItf*)m_pItf;
    }
};

// convenience macro
#define LIP(Itf) LocalInterfacePointer<Itf,&IID_##Itf>

#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久蜜臀中文字幕| 91精品啪在线观看国产60岁| 久久久综合网站| 国内精品国产三级国产a久久| 日韩欧美一级在线播放| 国产一区二区不卡老阿姨| 久久色在线观看| 成人美女视频在线看| 亚洲欧洲www| 欧美三级日韩三级国产三级| 日韩制服丝袜先锋影音| 精品国内二区三区| 福利一区二区在线观看| 亚洲免费高清视频在线| 6080午夜不卡| 高清久久久久久| 一区二区视频免费在线观看| 欧美夫妻性生活| 福利一区二区在线| 亚洲一区在线视频| 欧美精品一区二区三区久久久| 成人在线综合网| 午夜精品久久久久久久蜜桃app| 欧美va亚洲va| 91尤物视频在线观看| 免费观看一级特黄欧美大片| 国产日韩欧美精品一区| 91久久精品日日躁夜夜躁欧美| 日本不卡一二三| 中文字幕亚洲不卡| 日韩视频在线永久播放| 97久久精品人人做人人爽50路| 丝袜美腿成人在线| 国产精品电影一区二区三区| 欧美一区二区在线视频| 成人av电影免费在线播放| 日韩电影在线一区| 中文字幕视频一区| 2020国产精品| 欧美久久免费观看| av动漫一区二区| 国产久卡久卡久卡久卡视频精品| 亚洲国产欧美在线| 国产精品欧美精品| 久久人人97超碰com| 欧美午夜精品一区二区三区| 国产成人av电影免费在线观看| 日韩二区在线观看| 亚洲图片自拍偷拍| 亚洲欧洲精品天堂一级| 久久久另类综合| 91精品国产综合久久福利软件| 91麻豆国产福利在线观看| 国产精选一区二区三区| 奇米综合一区二区三区精品视频| 18欧美乱大交hd1984| 国产亚洲一区二区三区四区 | 51午夜精品国产| 99精品久久久久久| 大桥未久av一区二区三区中文| 麻豆视频一区二区| 调教+趴+乳夹+国产+精品| 亚洲激情图片qvod| 亚洲色图在线视频| 国产精品久久午夜夜伦鲁鲁| 久久先锋资源网| 精品国产sm最大网站免费看| 欧美精品久久久久久久久老牛影院| 色婷婷亚洲综合| 99久久亚洲一区二区三区青草| 国产成人免费视频一区| 国产精品1区2区| 国产精品自拍在线| 国产美女在线精品| 国产在线视频精品一区| 韩国视频一区二区| 国产黄色精品网站| 国产白丝精品91爽爽久久| 国产传媒久久文化传媒| 高清不卡一二三区| 成人免费视频一区| 成人a级免费电影| 99视频有精品| 色网综合在线观看| 欧美日韩精品久久久| 欧美曰成人黄网| 欧美日韩黄色一区二区| 欧美精品色综合| 精品日韩成人av| 日本一区二区三区久久久久久久久不 | 国产.欧美.日韩| 99在线精品视频| 欧美在线小视频| 欧美久久久久久久久中文字幕| 337p亚洲精品色噜噜噜| 欧美sm美女调教| 国产精品久久久久久久久免费樱桃 | 免费人成在线不卡| 精品一区二区三区免费| 国产高清精品网站| 91美女在线视频| 日韩视频一区二区三区在线播放| 精品久久久久久综合日本欧美| 国产亚洲精品超碰| 亚洲欧美日韩国产成人精品影院| 天天综合天天做天天综合| 激情五月婷婷综合网| 91一区在线观看| 在线不卡免费欧美| 久久久精品人体av艺术| 有坂深雪av一区二区精品| 久久国产精品99久久久久久老狼 | 亚洲日穴在线视频| 午夜不卡av免费| 国产精品亚洲第一区在线暖暖韩国| 懂色av一区二区三区蜜臀| 欧美在线free| 国产日产欧美一区二区视频| 亚洲欧美日韩国产中文在线| 免费三级欧美电影| 色综合天天综合在线视频| 日韩三级高清在线| 亚洲免费av在线| 国内外成人在线| 欧美日免费三级在线| 国产欧美综合色| 七七婷婷婷婷精品国产| aa级大片欧美| 久久精品免视看| 免费欧美在线视频| 在线观看网站黄不卡| 欧美成va人片在线观看| 一区二区三区精密机械公司| 国产激情一区二区三区| 欧美一级生活片| 亚洲综合男人的天堂| 国产福利精品导航| 91麻豆精品国产自产在线 | 欧美成人一区二区三区片免费| 亚洲人精品一区| 成人午夜视频福利| 精品国产免费视频| 日韩精彩视频在线观看| 91蝌蚪porny| 中文欧美字幕免费| 国产精品综合久久| 精品国产乱码久久久久久免费| 亚洲成人先锋电影| 色国产综合视频| 专区另类欧美日韩| 不卡大黄网站免费看| 欧美国产综合色视频| 国产精品自产自拍| 欧美va亚洲va香蕉在线 | 国产在线麻豆精品观看| 日韩欧美黄色影院| 奇米888四色在线精品| 91麻豆精品久久久久蜜臀| 午夜不卡av在线| 欧美三级视频在线观看| 亚洲a一区二区| 欧美视频日韩视频在线观看| 亚洲激情校园春色| 欧美自拍偷拍午夜视频| 一区二区免费在线播放| 欧洲色大大久久| 一区二区三区四区中文字幕| 91麻豆国产在线观看| 一区二区三区精品久久久| 欧美三级日韩在线| 日日欢夜夜爽一区| 日韩欧美一二三| 国产乱淫av一区二区三区| 国产日韩欧美麻豆| 97精品国产97久久久久久久久久久久| 亚洲国产成人在线| 91麻豆精东视频| 性欧美疯狂xxxxbbbb| 欧美一区二区三区思思人| 久久97超碰国产精品超碰| 久久久久久久久久久久久久久99 | 国产精品高潮呻吟久久| 色婷婷香蕉在线一区二区| 亚洲午夜在线电影| 91精品国产高清一区二区三区| 麻豆91精品视频| 国产欧美日韩精品a在线观看| av亚洲精华国产精华精华| 日韩一区在线播放| 欧美影院一区二区三区| 久久国产精品第一页| 国产精品欧美精品| 欧美夫妻性生活| 国产精品99久久久久久久女警| 国产精品欧美一区喷水| 欧美日韩五月天| 国产一区二区在线看| 亚洲美女免费在线| 欧美精品自拍偷拍| 粉嫩在线一区二区三区视频|