Главная страница
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.053 c
15-1332875974
Сергей_С
2012-03-27 23:19
2013.03.22
Проблема в скайпе с отображением видео


15-1340952214
DevilDevil
2012-06-29 10:43
2013.03.22
Я В ШОКЕ. Стандарт округления в FPU


15-1330769216
Артём
2012-03-03 14:06
2013.03.22
Проблема с монитором?


15-1353949627
dummy_user
2012-11-26 21:07
2013.03.22
Отследить движение человека на камере.


2-1334303031
rikitiki2012
2012-04-13 11:43
2013.03.22
Realtex