Есть машина A, на котором расположен COM-компонент в виде out-proc-сервера. Он поддерживает интерфейс I. С машины B (на котором не зарегистрирован этот компонент) клиент вызывает CoCreateInstanceEx? где указывает в качестве имени машины A. Instance создается. Но когда клиент вызывает QueryInterface(I) у созданного объекта, то тот проваливается с E_NOINTERFACE.
COM-компонент не поддерживает IMarshal, но все его интерфейсы помечены как OleAutomation.
В отладчике запускаю сервер, вижу что при создании компонента у него запрашивается куча интерфейсов, в т.ч. IMarshal, но S_OK он отвечает только на IUnknown. Когда же клиент вызывает QueryInterface(I), то у сервера вызывается тоже только QueryInterface(I), на который он отвечает S_OK. Но тем не менее клиенту возвращается в этот момент E_NOINTERFACE.
В чем может быть проблема ?
Если на машине клиента зарагистрировать данный rомпонент, но создавать его все так же с машины A, то проблема исчезает, хотя последовательность системных вызовов к клиенту та же (проверено в отладчике) и он отвечает на них точно так же.
... << RSDN@Home 1.1.3 stable >>