Страница 44 из 111 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();
|