Шаг 44 - SetErrorlnfo

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

HRESULT SetErrorInfo
( 
	DWORD dwReserved, 
	lErrorlnfo *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();

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 02.03.2002