IGlobalInterfaceTable* gp_GIT;
HRESULT hr = CoCreateInstance(CLSID_StdGlobalInterfaceTable,
NULL, CLSCTX_LOCAL_SERVER, IID_IGlobalInterfaceTable, (void **)&gp_GIT);
if (FAILED(hr))
{
char XXX[30];
MessageBox(NULL, itoa(hr, XXX, 16), "sdf", MB_OK);
}
Создание GlobalInterfaceTable
Появилась необходимость воспользоваться GlobalInterfaceTable. MSDN говорит, что правильно это делать так:
Код:
У меня возвращает 80040154, что в winerror.h соответствует:
#define REGDB_E_CLASSNOTREG _HRESULT_TYPEDEF_(0x80040154L)
Кто-нибудь знает, почему моя таблица интерфейсов не инициализируется? Какой класс надо зарегистрировать и где? :(
(как и советует MSDN, я включил uuid.lib в проект)
Но в MSDN пример с CLSCTX_INPROC_SERVER
Потому что там рассматривается пример с сервером в DLL, а у меня внешний экзешник, поэтому так...
А вам не кажется что своим кодом вы пытаетесь создать объект во внешнем, по отношению к вашему, адресном пространстве? Тоесть создать еще один процесс?
Цитата: Phodopus
А вам не кажется что своим кодом вы пытаетесь создать объект во внешнем, по отношению к вашему, адресном пространстве? Тоесть создать еще один процесс?
Судя по-всему, Вы правы. По крайней мере с INPROC функция отрабатывается без проблемы.
Спасибо!