Создание Файла Системного реестра
Для вашего сервера COM, чтобы быть полностью функциональный, все компоненты и их соответствующие интерфейсы должны быть зарегистрированы с системой. Кроме того, библиотека типов должна также быть зарегистрирована так, чтобы это могло использоваться, чтобы осуществить IDISPATCH для ваших компонентов.
Вхождения системного реестра типично создаются в течение инсталляции вашего программного обеспечения.
Ниже Вас найдет, что информация помогает создает файл системного реестра (.reg), который является высоко полезным и идентифицирует минимальное количество информации, требуемой для вашего сервера COM.
Общий формат (использование compoly.reg как пример):
REGEDIT
; type library entries
HKEY_CLASSES_ROOT\TypeLib\{uuid of type library}
HKEY_CLASSES_ROOT\TypeLib\{uuid of type library}\1.0 =
compoly 1.0 Type Library HKEY_CLASSES_ROOT\TypeLib\
{uuid of type library}\1.0\HELPDIR = x:\some\path\to
HKEY_CLASSES_ROOT\TypeLib\{uuid of type library}\1.0\0\win32 =
x:\some\path\to\compoly.tlb
HKEY_CLASSES_ROOT\TypeLib\{uuid of type library}\1.0\9\win32 =
x:\some\path\to\compoly.tlb
; coclass entries
HKEY_CLASSES_ROOT\CLSID\{uuid of coclass} = ComPolygon Class
HKEY_CLASSES_ROOT\CLSID\{uuid of coclass}\InProcServer32 =
x:\some\path\to\compoly.dll
; interface entries
HKEY_CLASSES_ROOT\Interface\{uuid of interface} =
IComPolygon Interface
HKEY_CLASSES_ROOT\Interface\{uuid of interface}\TypeLib =
{uuid of type library}
HKEY_CLASSES_ROOT\Interface\{uuid of interface}\ProxyStubClsid32 =
{00020424-0000-0000-C000-000000000046}
Последние две секции повторятся для каждого coclass и связывать с помощью интерфейса в вашей библиотеке типов. Файл IDL имел обыкновение формировать библиотеку типов, будет содержать весь uuids, который Вы должны заполнить пробелы выше. Ниже прокомментированы выборки от compoly.idl, которые идентифицируют каждый uuid.
[
// uuid of type lib.
//
uuid(45C7F028-CD9A-11D1-A2BD-080009DC639A),
version(1.0),
helpstring("compoly 1.0 Type Library")
]
library COMPOLYLib
{
// ... Code cut out for brevity.
// IComPolygon interface
[
object,
// uuid of interface
//
uuid(45C7F035-CD9A-11D1-A2BD-080009DC639A),
dual,
helpstring("IComPolygon Interface"),
pointer_default(unique)
]
interface IComPolygon : IAcadEntity
{
// ... Code cut out for brevity.
};
// ... Code cut out for brevity.
// ComPolygon coclass
[
// uuid of coclass
//
uuid(45C7F036-CD9A-11D1-A2BD-080009DC639A),
helpstring("ComPolygon Class"),
noncreatable
]
coclass ComPolygon
{
[default] interface IComPolygon;
[source] interface IAcadObjectEvents;
};
};