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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? impiclassfactory.cpp

?? 基于Intellution開發包的開發的OPC服務器
?? CPP
字號:
// ImpIClassFactory.cpp
//
//   This file contains the implementation of the OPCClassFactory 
//   for the OPC sample server.
//
// Note: the combination of 'ServerDestroyed' and 'OPCServerUnload'
//   Allow this class factory to work with both EXE and DLL versions.
//   There are many ways to provide this functionality and all of them
//	 are a bit convoluted. This is modeled on BrockSchmidt 2nd edition.
//	 See Chap 5, 'The Class Factory and the Unloading Mechanism'
//	 See also DLLMAIN.CPP and EXEMAIN.CPP
//
//
//	(c) COPYRIGHT 1996-1998, INTELLUTION INC.
// ALL RIGHTS RESERVED
//
//
//	Functions defined in this module:
//
//			CImpIClassFactory::CImpIClassFactory()
//			CImpIClassFactory::~CImpIClassFactory()
//			CImpIClassFactory::AddRef()
//			CImpIClassFactory::Release()
//			CImpIClassFactory::QueryInterface()
//			CImpIClassFactory::CreateInstance()
//			CImpIClassFactory::LockServer()
//			CImpIClassFactory::ServerDestroyed()
//
//
//
// Modification Log:
//	Vers	Date     By		Notes
//	----	-------- ---	-----
//	1.1		08/26/97 jra	Created
//	1.3		03/10/98 jra	Modified to be wizard generated and driver specific.
//	7.11	02/23/99 jra	Modified CreateInstance() to save the return from QueryInterface()
//
//

#define WIN32_LEAN_AND_MEAN

#include "OpcStdAfx.h"
#include "OPCDrv.h"

void ServerDestroyed(void);

extern long	g_lObjectCount;
extern long	g_lLockCount;
extern BOOL	ServerCanUnloadNow(void);

////////////////////////////////////////////////////////////////
// OPCClassFactory()
//
// Constructor for the OPC class factory.
//
////////////////////////////////////////////////////////////////
CImpIClassFactory::CImpIClassFactory(REFCLSID rid)
{
	m_lRefCount = 0;
}


////////////////////////////////////////////////////////////////
// QueryInterface()
//
// Implementation of the standard IUnknown QueryInterface()
// for the OPC class factory.
//
////////////////////////////////////////////////////////////////
STDMETHODIMP CImpIClassFactory::QueryInterface(REFIID riid, LPVOID* ppv)
{
	if (ppv == NULL)
	{
		return E_INVALIDARG;
	}

	*ppv = NULL;
	if (riid == IID_IUnknown)
	{
		*ppv = (IUnknown *)this;
	}
	else if (riid == IID_IClassFactory)
	{
		*ppv = (IClassFactory *)this;
	}
	else
	{
		return E_NOINTERFACE;
	}

	((IUnknown *)*ppv)->AddRef();
	return S_OK;
}


////////////////////////////////////////////////////////////////
// AddRef()
//
// Implementation of the standard IUnknown AddRef() for the 
// OPC class factory.
//
////////////////////////////////////////////////////////////////
STDMETHODIMP_(ULONG) CImpIClassFactory::AddRef(void)
{
	return InterlockedIncrement(&m_lRefCount);
}


////////////////////////////////////////////////////////////////
// Release()
// 
// Implementation of the standard IUnknown Release() 
// for the OPC class factory.
//
////////////////////////////////////////////////////////////////
STDMETHODIMP_(ULONG) CImpIClassFactory::Release(void)
{
	ULONG currentCount = InterlockedDecrement(&m_lRefCount);


	if (0 == currentCount)
	{
		delete this;
	}
	return currentCount;
}


////////////////////////////////////////////////////////////////
// CreateInstance()
//
// This function creates an instance of the OPCDrv Server.
//
////////////////////////////////////////////////////////////////
STDMETHODIMP CImpIClassFactory::CreateInstance(LPUNKNOWN	pUnkOuter, 
											   REFIID		riid, 
											   LPVOID		*ppvObject)
{
	HRESULT hr;

	if (pUnkOuter != NULL)
	{
		return CLASS_E_NOAGGREGATION;	// Aggregation is not supported by this code
	}

	// Create a new server instance
	// We keep a count of the number created by the calling ap.
	// If that number goes to 0  (when the last interface 
	// is released and the last server is destroyed)
	// then the DLL or EXE can be unloaded.
	//
	COPCDrvServer *pServer = new COPCDrvServer(pUnkOuter, ServerDestroyed);
	if (NULL == pServer) 
	{
		return E_OUTOFMEMORY;
	}

	if (FAILED(hr = pServer->Init()))
	{
		delete pServer;
		return E_UNEXPECTED;
	}

	// jra 022399
	// Save the return from QueryInterface()
	if (FAILED(hr = pServer->QueryInterface(riid, ppvObject)))
	{
		delete pServer;
	}
	else
	{
		InterlockedIncrement(&g_lObjectCount);
	}

	return hr;
}


////////////////////////////////////////////////////////////////
// LockServer()
//
// This is a standard implementation of the IClassFactory::LockServer() 
// function that either adds or removes a lock on the server.
//
////////////////////////////////////////////////////////////////
STDMETHODIMP CImpIClassFactory::LockServer(BOOL bLock)
{
	if (bLock)
	{
		InterlockedIncrement(&g_lLockCount);
	}
	else
	{
		InterlockedDecrement(&g_lLockCount);
		if (ServerCanUnloadNow())
		{
			OPCServerUnload();
		}
	}

	return S_OK;
}


////////////////////////////////////////////////////////////////
// ServerDestroyed()
// 
// Called by server objects when they are destroyed
// so that we can tell if there are any left 
// for the DLL or EXE to manage.
// See DLLCanUnloadNow for DLLs or OPCServerUnload for EXEs
//
////////////////////////////////////////////////////////////////
void ServerDestroyed(void)
{
	InterlockedDecrement(&g_lObjectCount);
	OPCServerUnload();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产精品一区二区三区| 精品成人在线观看| 成人美女在线观看| 国产一区激情在线| 激情综合亚洲精品| 国产激情91久久精品导航| 国产精品99久久久久久似苏梦涵| 国产成人啪午夜精品网站男同| 国产一区久久久| 国产成人午夜电影网| a4yy欧美一区二区三区| 99精品视频一区| 欧美日韩日本视频| 精品黑人一区二区三区久久| 久久青草国产手机看片福利盒子 | 久久国产三级精品| 美腿丝袜亚洲三区| 国产精一品亚洲二区在线视频| 国产精品一区二区久久不卡| 成人短视频下载| 欧美性色黄大片| 26uuu国产日韩综合| 国产精品色一区二区三区| 亚洲精品菠萝久久久久久久| 日韩不卡一区二区三区| 国产99久久久国产精品潘金| 欧美一区二区日韩一区二区| 久久综合九色综合97_久久久| 日本一区二区三区高清不卡| 亚洲精品日产精品乱码不卡| 奇米影视7777精品一区二区| 粗大黑人巨茎大战欧美成人| 欧美亚洲日本国产| 国产欧美一二三区| 天天av天天翘天天综合网色鬼国产| 久久精品国产在热久久| 波多野结衣精品在线| 欧美一级欧美三级在线观看 | 一区二区在线观看视频| 奇米精品一区二区三区在线观看| 成人自拍视频在线| 日韩免费电影一区| 亚洲一区二区影院| 成人福利在线看| 欧美一区三区二区| 一区二区三区久久久| 国产精品1区2区3区| 欧美一区二区视频在线观看2022| 成人欧美一区二区三区小说| 精品一二三四在线| 欧美日韩亚洲不卡| 亚洲精品日产精品乱码不卡| 福利电影一区二区| 2024国产精品| 久久99国内精品| 91精品国产一区二区| 亚洲精品乱码久久久久久 | 欧美体内she精高潮| 日本一区二区三区电影| 国产一区免费电影| 欧美精品一区二区三区高清aⅴ| 精品乱码亚洲一区二区不卡| 日韩不卡一区二区| 777a∨成人精品桃花网| 午夜影院久久久| 欧美视频在线观看一区| 亚洲男同性视频| 一本大道久久a久久综合婷婷| 国产精品国产三级国产aⅴ中文| 国产一区视频在线看| 欧美精品一区二区精品网| 日本成人超碰在线观看| 欧美一区二区三区电影| 男人的天堂久久精品| 7777精品伊人久久久大香线蕉完整版 | 午夜精品久久久久久久蜜桃app| 亚洲永久精品国产| 色偷偷88欧美精品久久久| 亚洲日本在线视频观看| 在线视频国产一区| 亚洲大尺度视频在线观看| 欧美精品在线一区二区| 日韩高清一区在线| 欧美本精品男人aⅴ天堂| 免播放器亚洲一区| 久久久综合激的五月天| 高清在线不卡av| 国产欧美精品日韩区二区麻豆天美| 国产高清不卡二三区| 国产精品国产三级国产aⅴ无密码| 粉嫩在线一区二区三区视频| 国产精品卡一卡二卡三| 91官网在线观看| 日韩福利视频导航| 久久久99久久| 欧美性受极品xxxx喷水| 老司机午夜精品99久久| 中文字幕免费在线观看视频一区| 99riav久久精品riav| 午夜亚洲福利老司机| 日韩欧美资源站| av电影在线观看一区| 午夜精品久久久久久久久久久| 欧美va日韩va| 色诱亚洲精品久久久久久| 免费看日韩a级影片| 亚洲欧美综合色| 日韩一级片网站| 色综合天天狠狠| 精品在线视频一区| 亚洲精品视频免费看| 精品成人私密视频| 欧美综合一区二区| 国产乱理伦片在线观看夜一区| 一级中文字幕一区二区| 久久久久久久久97黄色工厂| 欧美色大人视频| 成人av电影在线| 老汉av免费一区二区三区 | 777亚洲妇女| 暴力调教一区二区三区| 蜜桃在线一区二区三区| 亚洲精品日韩综合观看成人91| 久久亚洲精品国产精品紫薇| 欧美日韩国产一级| 色综合视频在线观看| 成人免费观看男女羞羞视频| 免费不卡在线视频| 亚洲永久精品大片| 亚洲欧美另类久久久精品| 久久综合视频网| 欧美一级夜夜爽| 欧美人与z0zoxxxx视频| 91猫先生在线| 成人av网站大全| 高清不卡一二三区| 国产一二三精品| 国内精品视频一区二区三区八戒 | 日韩女优毛片在线| 欧美性猛片xxxx免费看久爱| aaa国产一区| 99精品黄色片免费大全| 福利一区福利二区| 成人sese在线| eeuss鲁片一区二区三区在线看| 国产一区福利在线| 国产乱码一区二区三区| 国产在线麻豆精品观看| 久久99久久久久| 激情亚洲综合在线| 美女视频一区二区三区| 久久99国产乱子伦精品免费| 麻豆精品一二三| 久久不见久久见免费视频7| 日韩成人免费在线| 国内精品久久久久影院薰衣草| 久久国产三级精品| 国产精品一区一区三区| 国产乱人伦偷精品视频免下载 | 欧美国产国产综合| 国产精品情趣视频| 成人免费在线观看入口| 亚洲激情综合网| 午夜不卡在线视频| 理论片日本一区| 国产一区二区三区免费播放 | 亚洲最新在线观看| 亚洲地区一二三色| 麻豆精品一区二区av白丝在线| 精品在线你懂的| 成人av在线资源| 在线观看一区不卡| 91精品国产黑色紧身裤美女| 亚洲精品一区二区三区在线观看| 中文字幕精品一区二区三区精品| 国产精品嫩草99a| 午夜亚洲福利老司机| 国产一区二区在线观看免费| 懂色av噜噜一区二区三区av| 粉嫩aⅴ一区二区三区四区 | 国产伦精品一区二区三区免费| 国产传媒日韩欧美成人| 色综合久久综合网| 欧美一区日本一区韩国一区| 国产精品狼人久久影院观看方式| 亚洲精品乱码久久久久久 | 国产一本一道久久香蕉| 99久精品国产| 日韩视频一区在线观看| 国产精品视频一区二区三区不卡| 一区二区三区在线免费播放| 国产在线观看一区二区| av动漫一区二区| 日韩三级高清在线| 亚洲欧美一区二区三区孕妇| 精品在线视频一区| 91福利在线导航| 国产亚洲一区二区三区四区 | 欧美成人国产一区二区| 一区在线观看免费|