DCOM для win98, ME
От: mirag_ga Россия  
Дата: 07.02.03 08:35
Оценка:
Как подключить DCOM на Win 98 (ME). На одном компьютере COM загружается и выполняется (и на сервере и на клиенте). При переносе на сервер (другой комп.) при загрузке выдает ошибку 0x800706ba (сервер RPC не найден), хотя в сети компьютер виден. При загрузке и на клиенте и не сервере приложения Automation Manager, выдается ошибка 0x80080005 (Ошибка при выполнении приложения-сервера). Протокол TCP/IP, и на сервере и на клиенте СОМ зарегистрирован, с помощью Dcomcnfg.exe сконфигурирован, все необходимые компоненты установлены.
mirag
Re: DCOM для win98, ME
От: Tom Россия http://www.RSDN.ru
Дата: 07.02.03 09:26
Оценка:
Здравствуйте, mirag_ga, Вы писали:

MG>Как подключить DCOM на Win 98 (ME). На одном компьютере COM загружается и выполняется (и на сервере и на клиенте). При переносе на сервер (другой комп.) при загрузке выдает ошибку 0x800706ba (сервер RPC не найден), хотя в сети компьютер виден. При загрузке и на клиенте и не сервере приложения Automation Manager, выдается ошибка 0x80080005 (Ошибка при выполнении приложения-сервера). Протокол TCP/IP, и на сервере и на клиенте СОМ зарегистрирован, с помощью Dcomcnfg.exe сконфигурирован, все необходимые компоненты установлены.


На Win9x сервер должен быть запущен руками. Т.е COM сама сервер не запускает.
Народная мудрось
всем все никому ничего(с).
Re[2]: DCOM для win98, ME
От: mirag_ga Россия  
Дата: 07.02.03 10:02
Оценка:
Спасибо за быстрый ответ.
При запуске сервера "руками" у клиента выходит ошибка "Не могу закончить оперецию, мало памяти".
С Уважением.
mirag
Re[3]: DCOM для win98, ME
От: Tom Россия http://www.RSDN.ru
Дата: 07.02.03 10:30
Оценка:
Здравствуйте, mirag_ga, Вы писали:

MG>Спасибо за быстрый ответ.

MG>При запуске сервера "руками" у клиента выходит ошибка "Не могу закончить оперецию, мало памяти".
MG>С Уважением.

Надо код смотреть. Попробуй отключить ВСЮ защиту так как 9x в роли сервера не поддерживает защиту.
Народная мудрось
всем все никому ничего(с).
Re[4]: DCOM для win98, ME
От: mirag_ga Россия  
Дата: 07.02.03 10:40
Оценка:
Tom
При вызове CoCreateInstanceEx если в структуре COSERVERINFO поставить имя компьютера клиента, то все работает(клиент и сервер на одном компе). В COSERVERINFO поле pAuthInfo=NULL. Никаких вызовов установки секретности нет. Если даже заполнить COAUTHINFO всеми .._AUTHN_NONE, результат тот же. Где еще можно оключить защиту?
Заранее благодарен.
mirag
Re[5]: DCOM для win98, ME
От: bo Россия  
Дата: 07.02.03 11:27
Оценка:
Здравствуйте!

Попробуйте перед вызовом 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
В человечишке все должно быть прекрасненьким: и одёжка, и душенка, и мордочка, и мыслишки.
Re[6]: DCOM для win98, ME
От: mirag_ga Россия  
Дата: 07.02.03 11:57
Оценка:
Благодарю. Но ошибка, к сожалению, осталась.(0x8007000e Недостаточно памяти для завершения операции). Может быть дело в самом СОМе (писал сам). Интерфейс определен как:
[
object,
uuid(AA7E80AF-D284-43A0-9A4C-88F94CDEBB61),
dual,
oleautomation,
helpstring("IIDCOM Interface"),
pointer_default(unique)
]
interface IIDCOM : IDispatch
Благодарю за поддержку.
mirag
Re[7]: DCOM для win98, ME
От: Tom Россия http://www.RSDN.ru
Дата: 07.02.03 17:34
Оценка:
Давай весь idl файл и реализацию сервера и клиента.
Народная мудрось
всем все никому ничего(с).
Re[8]: DCOM для win98, ME
От: mirag_ga Россия  
Дата: 08.02.03 06:38
Оценка:
Здравствуйте, Tom, Вы писали:
Tom>Давай весь idl файл и реализацию сервера и клиента.

*.IDL файл
import "oaidl.idl";
import "ocidl.idl";
#include "olectl.h"


[
object,
uuid(AA7E80AF-D284-43A0-9A4C-88F94CDEBB61),
dual,
oleautomation,
helpstring("IIDCOM Interface"),
pointer_default(unique)
]
interface IIDCOM : IDispatch
{
[id(1), helpstring("method Beep")] HRESULT Beep();
[id(2), helpstring("method Message")] HRESULT Message(BSTR message);
};

[
uuid(77ED5CCE-DD3B-4D1A-B772-B458B86707EE),
version(1.0),
helpstring("OutProcDCOM 1.0 Type Library")
]
library OUTPROCDCOMLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");

[
uuid(C81EDDEA-2B41-44BB-89F8-62E3132C4AA5),
helpstring("IDCOM Class")
]
coclass IDCOM
{
[default] interface IIDCOM;
};
};
*.срр
#include "stdafx.h"
#include "OutProcDCOM.h"
#include "IDCOM.h"
/////////////////////////////////////////////////////////////////////////////
// CIDCOM


STDMETHODIMP CIDCOM::Beep()
{
MessageBeep((DWORD)-1);
return S_OK;
}

STDMETHODIMP CIDCOM::Message(BSTR message)
{
// TODO: Add your implementation code here
MessageBox((char*)message,"Пришло сообщение",MB_OK);

return S_OK;
}



Реализация клиента собственно это вызовов

COSERVERINFO CosprocDCOM;
CosprocDCOM.dwReserved1=0;
CosprocDCOM.dwReserved2=0;
CosprocDCOM.pwszName=m_message.AllocSysString();//имя сервера
CosprocDCOM.pAuthInfo=NULL;

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
Re[9]: DCOM для win98, ME
От: Tom Россия http://www.RSDN.ru
Дата: 10.02.03 08:48
Оценка:
В коде всё вроде правильно. Единственное ты конечно CoInitialize не забываешь вызвать ?
Народная мудрось
всем все никому ничего(с).
Re[10]: DCOM для win98, ME
От: mirag_ga Россия  
Дата: 10.02.03 09:13
Оценка:
Здравствуйте, Tom!
Без CoInitialize(NULL) компилятор вообще ошибки выдает.
Я так понял, что в Win98 (ME) DCOM не настроить никак?
mirag
Re[11]: DCOM для win98, ME
От: Tom Россия http://www.RSDN.ru
Дата: 10.02.03 10:26
Оценка:
Здравствуйте, mirag_ga, Вы писали:

MG>Здравствуйте, Tom!

MG>Без CoInitialize(NULL) компилятор вообще ошибки выдает.
MG>Я так понял, что в Win98 (ME) DCOM не настроить никак?
Пришли мне на мыло код сервера и клиента.
Народная мудрось
всем все никому ничего(с).
Re[12]: DCOM для win98, ME
От: mirag_ga Россия  
Дата: 11.02.03 06:35
Оценка:
Здравствуйте, Tom!
Отправлено на e-mail.
mirag
Re[13]: DCOM для win98, ME
От: Tom Россия http://www.RSDN.ru
Дата: 11.02.03 09:51
Оценка:
Здравствуйте, mirag_ga, Вы писали:

MG>Здравствуйте, Tom!

MG>Отправлено на e-mail.

Блинн. Там с ящиком проблеммы. Пришли на sinkevich@itos.eu.org
Народная мудрось
всем все никому ничего(с).
Re[14]: DCOM для win98, ME
От: mirag_ga Россия  
Дата: 11.02.03 10:03
Оценка:
Отправлено.
mirag
Re: DCOM для win98, ME
От: mirag_ga Россия  
Дата: 26.02.03 07:37
Оценка:
Была создана СОМ клиентская заглушка и зарегистрирована на клиенте и сервере (proxy/stub).Теперь выдается ошибка "Не надена служба проверки пароля". Если кто — нибудь сталкивался с проблемой, просьба ответить.
С Уважением.
mirag
Re: DCOM для win98, ME
От: Аноним  
Дата: 03.03.03 09:29
Оценка:
Спасибо всем за участие!
ЗАРАБОТАЛО.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.