2.0 组件目录
IOPCServerList *gpOPC = NULL;
clsid = CLSID_OPCServerList;
// set up server info sinptr = &sin;
sin.dwReserved1 = sin.dwReserved2 = 0;
sin.pwszName = szNodeName;
// szNodeName 为本地或远程计算机名
sin.pAuthInfo = 0;
clsctx = CLSCTX_REMOTE_SERVER;
// set up mqi
mqi.pIID = &IID_IOPCServerList;
mqi.hr = 0;
mqi.pItf = 0;
HRESULT hr = CoCreateInstanceEx(clsid, NULL, clsctx, sinptr, 1, &mqi);
// 创建 OPC 服务器的浏览器对象
gpOPC =(IOPCServerList*)mqi.pItf;
// 获得 IOPCServerL
VBVC 开发 OPC 客户程序必读
!
Step.1
如果程序要调用 COM 库的某一个函数必须先登录 COM 函数 CoInitialize() 可
以完成此功能从函数 CoGetMalloc() 可以得到一个指向 COM 内存管理接口的指
针
HRESULT rl;
rl=CoInitialize(NULL);
rl=CoGetMalloc(MEMCTX_TASK,&g_pIMalloc);
Step.2
每个 COM 服务器有一个 ProgID 通过它可以得到一个全球唯一的 CLSID 用
CLSIDFromProgID() 函数可以实现这个变换 ProgID 用变量 szName 进行参数传
递在示例程序中它的值是 L ” OPC.SimaticNET ”
m_Popc
rl=CLSIDFromProgID(szName,&clsid);
Step.3
CoCreateInstance() 函数创建一个类实例其 CLSID 值设定如下 :
r2=CocreateInstance(clsid,NULL,CLSCTX_LOCAL_SERVER,IID_IUnkown,
(void**)&Punk);
这段程序的结果是一个指向服务器对象 IUnknown 接口的指针变量 pUNK
Step.4
从 IUnkown 接口通过 QueryInterface() 方法可以得到其它接口的指针