Справочник по технологии COM
Страница 44. SetErrorlnfo


 

SetErrorlnfo

Устанавливает объект-ошибку для текущего потока управления.

HRESULT SetErrorInfo
(
DWORD dwReserved,
lErrorlnfo *perrinfo
);

Параметры:

  • dwReserved - Зарезервирован на будущее. Должен быть равен 0.
  • perrinfo - Указатель на объект-ошибку.

Коды возврата:
Из возвращенного HRESULT получают следующий код возврата:

Код возврата Значение
S_OK Успех.

Комментарии:
Функция освобождает текущий объект-ошибку, если таковой имеется, и устанавливает указатель на объект-ошибку в perrinfo. Данную функцию следует вызывать после создания объекта-ошибки, чтобы связать его с текущим потоком управления.
Если свойство или метод, вызывающий SetErrorlnfo, был вызван Displnvoke, то Displnvoke заполнит параметр EXCEPINFO значениями, полученными из объекта-ошибки, после чего возвратит DISP_E_EXCEPTION.
Контроллеры, выполняющие вызовы через VTBL и не использующие IDispatch::Invoke, могут получить объект-ошибку с помощью GetErrorlnfo. Таким образом, объект, поддерживающий дуальный интерфейс, может использовать SetErrorlnfo, независимо от того, использует ли клиент VTBL и IDispatch.

Пример:

ICreateErrorlnfo *pcerrinfo; 
lErrorlnfo *perrinfo;
HRESULT hr;
hr = CreateErrorInfo(&pcerrinfo);
hr = pcerrinfo->QueryInterface(IID_IErrorInfo, (LPVOID FAR*) &perrinfo);
if (SUCCEEDED(hr))
{
SetErrorInfo(0, perrinfo);
perrinfo->Release();
}
pcerrinfo->Release();

 
Следующая статья »