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 в проект)
Цитата: Arkady
Приветствую,
Появилась необходимость воспользоваться GlobalInterfaceTable. MSDN говорит, что правильно это делать так:
У меня возвращает 80040154, что в winerror.h соответствует:
#define REGDB_E_CLASSNOTREG _HRESULT_TYPEDEF_(0x80040154L)
Кто-нибудь знает, почему моя таблица интерфейсов не инициализируется? Какой класс надо зарегистрировать и где? :(
(как и советует MSDN, я включил uuid.lib в проект)
Появилась необходимость воспользоваться GlobalInterfaceTable. MSDN говорит, что правильно это делать так:
Код:
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);
}
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);
}
У меня возвращает 80040154, что в winerror.h соответствует:
#define REGDB_E_CLASSNOTREG _HRESULT_TYPEDEF_(0x80040154L)
Кто-нибудь знает, почему моя таблица интерфейсов не инициализируется? Какой класс надо зарегистрировать и где? :(
(как и советует MSDN, я включил uuid.lib в проект)
Обязательно надо в качестве параметра передавать CLSCTX_INPROC_SERVER, а не CLSCTX_LOCAL_SERVER, поскольку этот флаг определяет не тип Вашего сервера, как я думал, а процесс, для которого будет создана таблица, в данном случае, это должен быть собственный процесс, а значит INPROC - правильно.