Fungsi SetErrorInfo (oleauto.h)

Mengatur objek informasi kesalahan untuk utas eksekusi logis saat ini.

Sintaks

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

Parameter

[in] dwReserved

Disiapkan untuk penggunaan masa mendatang. Harus nol.

[in, optional] perrinfo

Objek kesalahan.

Nilai kembali

Jika fungsi ini berhasil, fungsi akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.

Keterangan

Fungsi ini merilis objek informasi kesalahan yang ada, jika ada, dan mengatur penunjuk ke perrinfo. Gunakan fungsi ini setelah membuat objek kesalahan yang mengaitkan objek dengan utas eksekusi logis saat ini.

Jika properti atau metode yang memanggil SetErrorInfo dipanggil oleh DispInvoke, maka DispInvoke akan mengisi parameter EXCEPINFO dengan nilai yang ditentukan dalam objek informasi kesalahan. DispInvoke akan mengembalikan DISP_E_EXCEPTION ketika properti atau metode mengembalikan nilai pengembalian kegagalan untuk DispInvoke

Pengontrol pengikatan tabel fungsi virtual (VTBL) yang tidak menggunakan IDispatch::Invoke bisa mendapatkan objek informasi kesalahan dengan menggunakan GetErrorInfo. Ini memungkinkan objek yang mendukung antarmuka ganda untuk menggunakan SetErrorInfo, terlepas dari apakah klien menggunakan pengikatan VTBL atau IDispatch.

Ketika panggilan lintas apartemen dilakukan COM akan menghapus objek kesalahan apa pun.

Melakukan panggilan COM yang melalui proxy-stub akan menghapus objek kesalahan yang ada untuk utas panggilan. Objek yang dipanggil tidak boleh melakukan panggilan seperti itu setelah memanggil SetErrorInfo dan sebelum kembali. Penelepon tidak boleh melakukan panggilan seperti itu setelah panggilan kembali dan sebelum memanggil GetErrorInfo. Sebagai aturan praktis, metode antarmuka harus kembali sesegera mungkin setelah memanggil SetErrorInfo, dan pemanggil harus memanggil GetErrorInfo sesegera mungkin setelah panggilan kembali.

Memasukkan perulangan pesan modal COM akan menghapus objek kesalahan yang ada. Objek yang dipanggil tidak boleh memasukkan perulangan pesan setelah memanggil SetErrorInfo.

Contoh

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();
}

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header oleauto.h
Pustaka OleAut32.lib
DLL OleAut32.dll