Bagikan melalui


Struktur Kode Kesalahan COM

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

Memperlihatkan format 'H RESULT' atau 'S CODE' dengan angka yang menunjukkan posisi bit.

Bit berurutan tinggi dalam 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 SKODE dan nilai HRESULT mengatur bidang fasilitas ke FACILITY_ITF, menunjukkan kesalahan metode antarmuka.

Bidang fasilitas umum dijelaskan dalam tabel berikut.

Bidang Fasilitas Nilai Deskripsi
Distribusi Fasilitas
2
Untuk kesalahan antarmuka IDispatch terkait pengikatan terlambat.
FACILITY_ITF
4
Untuk sebagian besar kode status yang dikembalikan melalui metode antarmuka. Arti aktual dari kesalahan ditentukan oleh antarmuka. Artinya, dua HRESULTdengan nilai 32-bit yang sama persis yang dikembalikan dari dua antarmuka 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.
FASILITAS_PENYIMPANAN
3
Untuk kode status yang dikembalikan dari IStorage atau panggilan metode 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.
FASILITAS_WIN32
7
Digunakan untuk menyediakan cara menangani kode kesalahan dari fungsi di Windows API sebagai HRESULT. Kode kesalahan pada OLE 16-bit, yang diduplikasi dengan 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: Fasilitas_Tingkat Keparahan_Alasan.

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 Reason 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 prefiks Fasilitas_.

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 dalam COM

Protokol Windows: HRESULT