📄 opcda_i.cpp
字号:
// opcda_i.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
#include "opcda_i.h"
#include "winbase.h"
#include "..\include\logc.h"
#include "..\include\opcst_ipt.h"
#include "opcst_x.h"
extern HINSTANCE hInstance;//模块实例
SOPCRegisterInfo OPCRegInfo = //OPC DA系统注册表信息
{
"OPC Server of Inprocess" ,
"OPCDA.Inprocess(vc)" ,
{ 0x4473013d, 0xc9a7, 0x11d4,
{0xbe, 0xf5, 0x2d, 0x0, 0xda, 0x20, 0xdb, 0x5c}
}
};
//标记已加载设备标记
static bool bCalled = false;
////DLL库主函数
BOOL APIENTRY DllMain(HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
{
InitDeviceBuffer();
hInstance = (HMODULE)hModule;
InitParm();
InitOPCServer(hInstance, &OPCServerInfo ,
&OPCRegInfo, &VendorInfo,ReadVariant,WriteVariant);
break;
}
case DLL_THREAD_ATTACH://DLL在加载过程中要CALL多次,添加Tag操作只需一次
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
/////进程内组件标准函数
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppvOut)
{
HRESULT hr;
hr = DLL_GetClassObject(rclsid, riid, ppvOut);
if(SUCCEEDED(hr))
{
if(!bCalled)
{
LoadDeviceTag();
bCalled = true;
}
}
return hr;
}
STDAPI DllCanUnloadNow(void)
{
return DLL_CanUnloadNow();
}
STDAPI DllRegisterServer(void)
{
return DLL_RegisterServer();
}
STDAPI DllUnregisterServer(void)
{
return DLL_UnregisterServer();
}
//////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -