Bug 1286

Summary: Реализован ли удаленный COM
Product: WINE@Etersoft Reporter: Vitaly Lipatov <lav>
Component: ОбщееAssignee: Синицын Иван <ivan>
Status: CLOSED WONTFIX QA Contact:
Severity: normal    
Priority: P5 CC: kondratyuk
Version: 1.0.9   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Заявки RT: 3912 Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 3000    

Description Vitaly Lipatov 2008-03-04 22:58:03 MSK
Надо исследовать, что у нас в этой области,
какие принципиальные проблемы, какова вообще постановка задачи,
что требуется для решения.
Вопрос и тестовый пример в
http://rt.etersoft.ru/Ticket/Display.html?id=3912
Comment 1 Синицын Иван 2008-03-12 17:24:41 MSK
Проверил тестовые примеры. Под wine не удается получить соединение. После всех попыток выдается ошибка ole 80004011. 
В консоль сыпется:

WINEDEBUG=+ole,+rpc wine Test_DCOM.exe
fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
trace:ole:RPCSS_Initialize
trace:ole:RPCSS_BecomePipeServer
trace:ole:RPCSS_NPConnect
warn:ole:RPCSS_NPConnect Unable to open named pipe "\\\\.\\pipe\\RpcssNP0x0000" (assuming unavailable).
trace:ole:RPCSS_BecomePipeServer Created server thread.
trace:ole:RPCSS_MainLoop
trace:ole:NPMainWorkThread
trace:ole:RPCSS_UnBecomePipeServer
trace:ole:RPCSS_UnBecomePipeServer shutting down pipe.
Comment 2 Vitaly Lipatov 2008-03-12 17:28:56 MSK
Нужно проверить не на вайновском OLE, а на DCOM95.
В этом случае не должно быть видно трейсов по OLE и RPC.
Comment 3 Синицын Иван 2008-03-13 10:28:37 MSK
Это и есть DCOM95.
Если использовать wine библиотеки получаем:
WINEDEBUG=+ole,+rpc wine Test_DCOM.exe
trace:ole:DllMain 0x7f980000 0x1 0x1
trace:ole:DllMain (0x7fa30000,1,0x1)
trace:rpc:UuidCreate {65cdc58c-f0c9-11dc-ef85-00006c1bf43e}
trace:ole:CoInitializeEx ((nil), 2)
trace:ole:CoInitializeEx () - Initializing the COM libraries
trace:ole:RunningObjectTableImpl_Initialize
trace:ole:apartment_construct creating new apartment, model=2
trace:ole:apartment_construct Created apartment on OXID 1300000014
trace:ole:apartment_get_or_create Created main-threaded apartment with OXID 1300000014
trace:ole:__CLSIDFromString L"{4237582A-CA1D-4F11-B62C-86E18B0D0CC2}" -> 0x7fdef998
trace:ole:WINE_StringFromCLSID 0x7f27509c->{4237582A-CA1D-4F11-B62C-86E18B0D0CC2}
fixme:ole:CoCreateInstanceEx () non-NULL pServerInfo not supported!
trace:ole:CoCreateInstance (rclsid={4237582a-ca1d-4f11-b62c-86e18b0d0cc2}, pUnkOuter=(nil), dwClsContext=00000010, riid={00000000-0000-0000-c000-000000000046}, ppv=0x7fdeee70)
trace:ole:CoGetClassObject
        CLSID:  {4237582a-ca1d-4f11-b62c-86e18b0d0cc2},
        IID:    {00000001-0000-0000-c000-000000000046}
fixme:ole:CoGetClassObject CLSCTX_REMOTE_SERVER not supported
err:ole:CoGetClassObject no class object {4237582a-ca1d-4f11-b62c-86e18b0d0cc2} could be created for context 0x10

А те трейсы выдавала утилита "rpcss"
При указании замещения для этой утилиты. Трейсов больше не сыпится, но при попытке подключения к DCOM серверу получаем ошибку "800706BA" - "RPC сервер не доступен".

Предположение: RPC служба функционирует на 135 порту, wine для поиска возможно тоже пытаетсяоткрыть 135 порт, но не хватает прав. 
Comment 4 Синицын Иван 2008-03-13 13:33:56 MSK
И так при попытке запуска wine от root и попытке подсоеденится к windows серверу DCOM ни чего получилось т.к. споткнулись на строчке

fixme:winsock:WS_setsockopt Unknown IPPROTO_TCP optname 0x00000008

Если принудительно возвращать из этой функции вместо SOCKET_ERROR просто 0, то получаем некоторый обмен информацией, но в итоге опять появляется ошибка 800706BA
Comment 5 Vitaly Lipatov 2009-07-26 18:21:50 MSD
Сделать пока ничего нельзя, удалённый COM может и работает, но связка Wine-Windows в любом случае несовместима (другой протокол и другие порты).