Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Ком сервер в сервисе.   Найти похожие ветки 

 
Дмитрий С ©   (2012-10-31 21:32) [0]

Создал, зарегистрировал в реестре:

[HKEY_CLASSES_ROOT\AppID\{914DA410-7FE8-11D2-98FA-204C4F4F5020}]
"LocalService"="SvcWithComServer"

[HKEY_CLASSES_ROOT\CLSID\{914DA413-7FE8-11D2-98FA-204C4F4F5020}]
"AppID"="{914DA410-7FE8-11D2-98FA-204C4F4F5020}"


Работает. Но два вопроса:
1.
 Почему код использования получения объекта работает:
   OleCheck(CoGetClassObject(CLSGUID, CLSCTX_ALL, nil, IClassFactory, Factory));
   OleCheck(Factory.CreateInstance(nil, IDispatch, Obj));

А такой нет:
OleCheck(CoCreateInstance(CLSGUID, nil, CLSCTX_ALL, IDispatch, Obj))
Ошибка: интерфейс не поддерживается. Замена IDispatch на IUnknown ничего не изменила.

2.
Как сделать чтобы вызов CoGetClassObject не приводил к запуску службы, а возвращал ошибку, если служба не запущена.


 
Дмитрий С ©   (2012-10-31 21:53) [1]

со 2 разобрался.

1 вопрос актуален еще.


 
Dimka Maslov ©   (2012-10-31 22:03) [2]


> со 2 разобрался.


Нам расскажи, интересно же.


 
Дмитрий С ©   (2012-10-31 22:09) [3]


> Нам расскажи, интересно же.

Точно.

Для этого в
[HKEY_CLASSES_ROOT\AppID\{914DA410-7FE8-11D2-98FA-204C4F4F5020}]
нужно определить параметр LaunchPermission.
Это можно сделать с помощью, например, dcomcnfg.exe
или самому записать туда DACL


 
Дмитрий С ©   (2012-11-01 18:37) [4]

с 1 тоже разобрался.
Это было связано с неправильной реализацией метода IClassFactory.CreateInstance.

Было так:

if unkOuter <> nil then
   Exit(CLASS_E_NOAGGREGATION);

 if IsEqualIID(iid, IDispatch) then
   IDispatch(obj) := FConnector
 else
   Exit(E_NOINTERFACE);

 Result := S_OK;


А надо было минимум так:

if unkOuter <> nil then
   Exit(CLASS_E_NOAGGREGATION);

 if IsEqualIID(iid, IDispatch) then
   IDispatch(obj) := FConnector
 else
 if IsEqualGUID(iid, IInterface) then
   IInterface(obj) := FConnector
 else
   Exit(E_NOINTERFACE);

 Result := S_OK;



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.135 c
15-1328560202
Юрий
2012-02-07 00:30
2013.03.22
С днем рождения ! 7 февраля 2012 вторник


15-1344964284
Rouse_
2012-08-14 21:11
2013.03.22
И все-же нужны спецы по HASP/SenseLock/Rockey :)


15-1346963402
Юрий
2012-09-07 00:30
2013.03.22
С днем рождения ! 7 сентября 2012 пятница


15-1332013809
V_a_d
2012-03-17 23:50
2013.03.22
PopupMenu


15-1343804102
Unknown user
2012-08-01 10:55
2013.03.22
Алгоритм преобразования четырехугольника в другой четырехугольник