Kode Kesalahan Perangkat

Metode InvokeAction dan QueryStateVariable mengembalikan nilai HRESULT yang mungkin menunjukkan kesalahan perangkat (yaitu, kesalahan yang diterima dari perangkat bersertifikat UPnP). Jika kesalahan diterima dari perangkat, metode (InvokeAction atau QueryStateVariable) mengembalikan nilai HRESULT yang didasarkan pada kode kesalahan perangkat, seperti yang dijelaskan dalam topik ini. Karena konversi diterapkan ke kode kesalahan perangkat untuk menghasilkan nilai HRESULT , Anda tidak dapat membaca kode kesalahan perangkat langsung dari nilai HRESULT .

Konversi Kode Kesalahan Perangkat ke HRESULT

Ada kode kesalahan perangkat standar dan non-standar. Kode standar memiliki arti yang sama di semua perangkat bersertifikat UPnP dan memiliki nilai kurang dari 600. Kode non-standar bersifat khusus vendor dan memiliki nilai mulai dari 600 hingga 899.

Apakah kode kesalahan perangkat adalah standar atau tidak menentukan bagaimana nilai HRESULT dihasilkan:

  • Kode kesalahan perangkat standar dipetakan ke nilai HRESULT .
  • Kode kesalahan perangkat non-standar disematkan dalam nilai HRESULT dengan menerapkan rumus.

Kedua prosedur ini dapat dibalik untuk menentukan kode kesalahan perangkat dari nilai HRESULT tertentu.

Mendapatkan Kode Kesalahan Perangkat dari Nilai HRESULT

Jika nilai HRESULT lebih besar dari atau sama dengan UPNP_E_ACTION_SPECIFIC_BASE (0x80040300) dan kurang dari atau sama dengan UPNP_E_ACTION_SPECIFIC_MAX (0x8004042B), kode kesalahan perangkat tidak berbasis — gunakan rumus di bagian berikut untuk menentukan kode kesalahan. Jika tidak, kode kesalahan perangkat adalah standar — gunakan tabel di bagian Pemetaan untuk Kode Kesalahan Perangkat Standar, yang menyediakan pemetaan dari nilai HRESULT ke kode kesalahan perangkat.

Untuk deskripsi teks kesalahan setelah panggilan ke IUPnPService::InvokeAction, atur parameter pvarRetVal ke array kosong. Setelah dikembalikan, parameter ini akan berisi deskripsi teks kesalahan, jika ada yang terjadi.

Rumus untuk Kode Kesalahan Perangkat Nonstandar

Gunakan rumus berikut jika UPNP_E_ACTION_SPECIFIC_BASE ≤HRESULTUPNP_E_ACTION_SPECIFIC_MAX.

Kode Kesalahan Perangkat = (UPNP_E_ACTION_SPECIFIC_BASE HRESULT - ) + FAULT_ACTION_SPECIFIC_BASE

Mengganti nilai numerik aktual, persamaannya adalah: Kode Kesalahan Perangkat = (HRESULT - 0x80040300) + 0x0258

Pemetaan untuk Kode Kesalahan Perangkat Standar

Gunakan pemetaan berikut jika HRESULT<UPNP_E_ACTION_SPECIFIC_BASE.

Nilai HRESULT Kode Kesalahan Perangkat Nilai aktual
UPNP_E_INVALID_ACTION FAULT_INVALID_ACTION 401
UPNP_E_INVALID_ARGUMENTS FAULT_INVALID_ARG 402
UPNP_E_OUT_OF_SYNC FAULT_INVALID_SEQUENCE_NUMBER 403
UPNP_E_INVALID_VARIABLE FAULT_INVALID_VARIABLE 404
UPNP_E_ACTION_REQUEST_FAILED FAULT_DEVICE_INTERNAL_ERROR 501

 

Informasi Lebih Lanjut

Kode kesalahan perangkat ditentukan dalam "Arsitektur Perangkat UPnP versi 1.0". Konstanta yang disebutkan dalam topik ini didefinisikan dalam file Upnp.h dan Upnp.idl.