Поделиться через


Функция SetErrorInfo (oleauto.h)

Задает объект сведений об ошибке для текущего логического потока выполнения.

Синтаксис

HRESULT SetErrorInfo(
  [in]           ULONG      dwReserved,
  [in, optional] IErrorInfo *perrinfo
);

Параметры

[in] dwReserved

Зарезервировано для последующего использования. Должен равняться нулю.

[in, optional] perrinfo

Объект ошибки.

Возвращаемое значение

Если эта функция выполняется успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Эта функция освобождает существующий объект сведений об ошибке, если он существует, и задает для указателя значение perrinfo. Используйте эту функцию после создания объекта ошибки, который связывает объект с текущим логическим потоком выполнения.

Если свойство или метод, вызывающие SetErrorInfo , вызывается DispInvoke, dispInvoke заполнит параметр EXCEPINFO значениями, указанными в объекте сведений об ошибке. DispInvoke возвращает DISP_E_EXCEPTION, когда свойство или метод возвращает значение сбоя для DispInvoke.

Контроллеры привязки виртуальной таблицы функций (СТИНК), которые не используют IDispatch::Invoke , могут получить объект сведений об ошибке с помощью GetErrorInfo. Это позволяет объекту, поддерживающму двойной интерфейс, использовать SetErrorInfo независимо от того, использует ли клиент привязку VTBL или IDispatch.

При выполнении межквартирного вызова COM очищает любой объект ошибки.

Выполнение com-вызова, который проходит через заглушку прокси-сервера, очистит любой существующий объект ошибки для вызывающего потока. Вызываемый объект не должен выполнять такие вызовы после вызова SetErrorInfo и перед возвратом. Вызывающий объект не должен выполнять такие вызовы после возврата вызова и перед вызовом GetErrorInfo. Как правило, метод интерфейса должен возвращать как можно скорее после вызова SetErrorInfo, а вызывающий объект должен вызвать GetErrorInfo как можно скорее после возврата вызова.

При вводе модального цикла сообщений COM все существующие объекты ошибок будут очищены. Вызываемый объект не должен вводить цикл сообщений после вызова SetErrorInfo.

Примеры

ICreateErrorInfo *pcerrinfo;
IErrorInfo *perrinfo;
HRESULT hr;

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

Требования

Требование Значение
Целевая платформа Windows
Header oleauto.h
Библиотека OleAut32.lib
DLL OleAut32.dll