Как подключить DCOM на Win 98 (ME). На одном компьютере COM загружается и выполняется (и на сервере и на клиенте). При переносе на сервер (другой комп.) при загрузке выдает ошибку 0x800706ba (сервер RPC не найден), хотя в сети компьютер виден. При загрузке и на клиенте и не сервере приложения Automation Manager, выдается ошибка 0x80080005 (Ошибка при выполнении приложения-сервера). Протокол TCP/IP, и на сервере и на клиенте СОМ зарегистрирован, с помощью Dcomcnfg.exe сконфигурирован, все необходимые компоненты установлены.
Здравствуйте, mirag_ga, Вы писали:
MG>Как подключить DCOM на Win 98 (ME). На одном компьютере COM загружается и выполняется (и на сервере и на клиенте). При переносе на сервер (другой комп.) при загрузке выдает ошибку 0x800706ba (сервер RPC не найден), хотя в сети компьютер виден. При загрузке и на клиенте и не сервере приложения Automation Manager, выдается ошибка 0x80080005 (Ошибка при выполнении приложения-сервера). Протокол TCP/IP, и на сервере и на клиенте СОМ зарегистрирован, с помощью Dcomcnfg.exe сконфигурирован, все необходимые компоненты установлены.
На Win9x сервер должен быть запущен руками. Т.е COM сама сервер не запускает.
Здравствуйте, mirag_ga, Вы писали:
MG>Спасибо за быстрый ответ. MG>При запуске сервера "руками" у клиента выходит ошибка "Не могу закончить оперецию, мало памяти". MG>С Уважением.
Надо код смотреть. Попробуй отключить ВСЮ защиту так как 9x в роли сервера не поддерживает защиту.
Tom
При вызове CoCreateInstanceEx если в структуре COSERVERINFO поставить имя компьютера клиента, то все работает(клиент и сервер на одном компе). В COSERVERINFO поле pAuthInfo=NULL. Никаких вызовов установки секретности нет. Если даже заполнить COAUTHINFO всеми .._AUTHN_NONE, результат тот же. Где еще можно оключить защиту?
Заранее благодарен.
Попробуйте перед вызовом CoCreateInstanceEx добавить следующую строчку:
HRESULT hRes = CoInitializeSecurity(
NULL, //Points to security descriptor
-1, //Count of entries in asAuthSvc
NULL, //Array of names to register
NULL, //Reserved for future use
RPC_C_AUTHN_LEVEL_NONE, //Default authentication level
// for proxies
RPC_C_IMP_LEVEL_IMPERSONATE,//Default impersonation level
// for proxies
NULL, //Reserved; must be set to NULL
EOAC_NONE,//Additional client or
// server-side capabilities
NULL); //Reserved for future use
В человечишке все должно быть прекрасненьким: и одёжка, и душенка, и мордочка, и мыслишки.
Благодарю. Но ошибка, к сожалению, осталась.(0x8007000e Недостаточно памяти для завершения операции). Может быть дело в самом СОМе (писал сам). Интерфейс определен как:
[
object,
uuid(AA7E80AF-D284-43A0-9A4C-88F94CDEBB61),
dual,
oleautomation,
helpstring("IIDCOM Interface"),
pointer_default(unique)
]
interface IIDCOM : IDispatch
Благодарю за поддержку.
m_OutDcomMulti.hr=0;
m_OutDcomMulti.pItf=NULL;
const IID ID_DCOM_OUTPROC=_uuidof(OUTPROCDCOMLib::IIDCOM);
m_OutDcomMulti.pIID=&ID_DCOM_OUTPROC;
Resultat= CoInitializeSecurity(
NULL, //Points to security descriptor
-1, //Count of entries in asAuthSvc
NULL, //Array of names to register
NULL, //Reserved for future use
RPC_C_AUTHN_LEVEL_NONE, //Default authentication level
// for proxies
RPC_C_IMP_LEVEL_IMPERSONATE,//Default impersonation level
// for proxies
NULL, //Reserved; must be set to NULL
EOAC_NONE,//Additional client or
// server-side capabilities
NULL); //Reserved for future use
Resultat=CoCreateInstanceEx(_uuidof(OUTPROCDCOMLib::IDCOM),NULL,CLSCTX_SERVER,&CosprocDCOM,1,&m_OutDcomMulti);
Тут она и возвращает все ошибки.
Здравствуйте, mirag_ga, Вы писали:
MG>Здравствуйте, Tom! MG>Без CoInitialize(NULL) компилятор вообще ошибки выдает. MG>Я так понял, что в Win98 (ME) DCOM не настроить никак?
Пришли мне на мыло код сервера и клиента.
Была создана СОМ клиентская заглушка и зарегистрирована на клиенте и сервере (proxy/stub).Теперь выдается ошибка "Не надена служба проверки пароля". Если кто — нибудь сталкивался с проблемой, просьба ответить.
С Уважением.