Если все выполнено верно, то появится возможность использования
адресного пространства OPCEnumLib, которое мы можем включить в свой
проект обычным образом (выделено курсивом).
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using OpcEnumLib;
Путь к OPCEnum может отличаться для различных рабочих станций.
Теперь доступна работа с OPCEnum. Добавим функцию
ShowRegisteredServers, которая будет выводить список зарегистрированных на
локальном узле серверов, каждый раз при загрузке формы. Функция будет
добавлять в список установленные ОРС сервера и возвращать их общее
количество.
private int ShowRegisteredServers()
{
//Создаем объект списка OPC серверов
OpcServerList pServerList = new OpcServerList();
// Идентификатор категории ОРС HDA 1.2
Guid clsidcat = new Guid("{7DE5B060-E089-11D2-A5E6-
000086339399}");
//перечислитель, в котором будут храниться GUID серверов
IOPCEnumGUID pIOPCEnumGuid;
//запрос по группе серверов спецификации OPC HDA 1.2
pServerList.EnumClassesOfCategories(1, ref clsidcat, 0,
ref clsidcat, out pIOPCEnumGuid);
string pszProgID; // буфер для записи ProgID серверов
string pszUserType; // буфер для записи описания серверов
string pszVerIndProgID;
Guid guid = new Guid();
int nServerCnt = 0;
uint iRetSvr; // количество серверов, предоставленных запросом
// получение идентификаторов серверов
pIOPCEnumGuid.Next(1, out guid, out iRetSvr);
while (iRetSvr != 0)
{
nServerCnt++;
pServerList.GetClassDetails(ref guid, out pszProgID,
out pszUserType, out pszVerIndProgID);