Struktur Kode Kesalahan COM

Ilustrasi berikut menunjukkan format HRESULT (atau SCODE); angka menunjukkan posisi bit:

Shows the format of an 'H RESULT' or 'S CODE' with numbers indicating bit positions.

Bit berurutan tinggi di HRESULT atau SCODE menunjukkan apakah nilai pengembalian mewakili keberhasilan atau kegagalan. Jika diatur ke 0, SEVERITY_SUCCESS, nilai menunjukkan keberhasilan. Jika diatur ke 1, SEVERITY_ERROR, itu menunjukkan kegagalan.

Bit R, C, N, dan r dicadangkan.

Bidang fasilitas menunjukkan layanan sistem yang bertanggung jawab atas kesalahan tersebut. Microsoft mengalokasikan kode fasilitas baru saat diperlukan. Sebagian besar nilai SKODE dan HRESULT mengatur bidang fasilitas ke FACILITY_ITF, menunjukkan kesalahan metode antarmuka.

Bidang fasilitas umum dijelaskan dalam tabel berikut.

Bidang Fasilitas Nilai Deskripsi
FACILITY_DISPATCH
2
Untuk kesalahan antarmuka IDispatch yang terlambat mengikat.
FACILITY_ITF
4
Untuk sebagian besar kode status yang dikembalikan dari metode antarmuka. Arti aktual dari kesalahan ditentukan oleh antarmuka. Artinya, dua HRESULTdengan nilai 32-bit yang sama persis yang dikembalikan dari dua antarmuka yang berbeda mungkin memiliki arti yang berbeda.
FACILITY_NULL
0
Untuk kode status umum yang berlaku secara luas seperti S_OK.
FACILITY_RPC
1
Untuk kode status yang dikembalikan dari panggilan prosedur jarak jauh.
FACILITY_STORAGE
3
Untuk kode status yang dikembalikan dari panggilan metode IStorage atau IStream yang berkaitan dengan penyimpanan terstruktur. Kode status yang nilai kodenya (16 bit lebih rendah) berada dalam rentang kode kesalahan MS-DOS (yaitu, kurang dari 256) memiliki arti yang sama dengan kesalahan MS-DOS yang sesuai.
FACILITY_WIN32
7
Digunakan untuk menyediakan sarana penanganan kode kesalahan dari fungsi di WINDOWS API sebagai HRESULT. Kode kesalahan dalam OLE 16-bit yang diduplikasi kode kesalahan sistem juga telah diubah menjadi FACILITY_WIN32.
FACILITY_WINDOWS
8
Digunakan untuk kode kesalahan tambahan dari antarmuka yang ditentukan Microsoft.

Bidang kode adalah angka unik yang ditetapkan untuk mewakili kesalahan atau peringatan.

Menurut konvensi, nilai HRESULT umumnya memiliki nama dalam format berikut: Facility_Severity_Reason.

Fasilitas adalah nama fasilitas atau beberapa pengidentifikasi pembeda lainnya; Tingkat keparahan adalah huruf tunggal, S atau E, yang menunjukkan apakah panggilan fungsi berhasil (S) atau menghasilkan kesalahan (E); dan Alasan adalah pengidentifikasi yang menjelaskan arti kode. Misalnya, kode status STG_E_FILENOTFOUND menunjukkan kesalahan terkait penyimpanan telah terjadi; secara khusus, file yang diminta tidak ada. Kode status dari FACILITY_NULL menghilangkan awalan Facility_ .

Kode kesalahan didefinisikan dalam konteks implementasi antarmuka. Setelah ditentukan, kode keberhasilan tidak dapat diubah atau kode keberhasilan baru ditambahkan. Namun, kode kegagalan baru dapat ditulis. Microsoft berhak menentukan kode kegagalan baru (tetapi bukan kode keberhasilan) untuk antarmuka yang dijelaskan dalam FACILITY_ITF atau di fasilitas baru.

Penanganan Kesalahan di COM

Protokol Windows: HRESULT