Kebijakan Penanganan Kesalahan Direct2D

Topik ini menjelaskan kebijakan penanganan kesalahan Direct2D. Ini berisi bagian berikut.

Penggunaan HRESULT

Jika fungsi tidak di-batch dan dapat mengalami kegagalan run-time, fungsi harus mengembalikan HRESULT untuk menunjukkan kegagalan. Kegagalan run-time adalah kegagalan apa pun yang tidak dapat dihindari pada waktu desain, seperti kehabisan memori.

Mengembalikan Nilai Fungsi Batch

Fungsi batch di Direct2D adalah fungsi yang diproses sebagai satu unit ketika EndDraw atau Close dipanggil. Mereka adalah perintah gambar antara BeginDraw dan EndDraw atau perintah di GeometrySink. Untuk fungsi-fungsi ini, kesalahan dilaporkan pada saat batch selesai. Kesalahan dikembalikan setelah EndDraw untuk menggambar perintah, dan setelah Tutup untuk GeometrySink.

RenderTargets berhenti menggambar jika status kesalahan diatur, tetapi aplikasi dapat memanggil Flush untuk mengatur ulang status kesalahan dan melanjutkan menggambar.

Fungsi Get and Set tidak memiliki nilai pengembalian. Namun, jika fungsi Set memiliki input yang tidak valid, lapisan debug akan menghasilkan pesan. Dalam hal ini, tidak ada status kesalahan yang diatur dan fungsi Set tidak melakukan apa pun.

Input Tidak Valid

Dereferensi Direct2D menghasilkan pointer output dan parameter yang diperlukan yang mengakibatkan pelanggaran akses ketika pointer tidak valid atau NULL.

Penunjuk Output

Direct2D mendereferensikan penunjuk output dan menetapkannya ke NULL segera setelah memasukkan fungsi. Ini menyebabkan pelanggaran akses jika penelepon meneruskan NULL sebagai penunjuk ke nilai yang dikembalikan. Kebijakan ini juga berlaku untuk array pointer. Untuk parameter output lainnya, seperti struct, dereferensi terjadi nanti dan juga menghasilkan pelanggaran akses. Namun, ada beberapa metode yang memiliki penunjuk output opsional (yaitu, EndDraw, Flush) yang tidak akan menyebabkan pelanggaran akses.

Parameter yang Diperlukan

Jika NULL diteruskan ke fungsi apa pun yang membutuhkan nilai yang valid, fungsi akan mendereferensikan pointer buruk lebih awal yang mengakibatkan pelanggaran akses. Untuk parameter input opsional, NULL adalah nilai valid yang menghasilkan beberapa default yang wajar.

NAN dan RECT Input Yang Buruk

Di Direct2D, NaN dianggap sebagai input yang valid dan RECT input yang diurutkan dengan buruk diurutkan.

NaN sebagai Input

NaN dianggap sebagai input yang valid, meskipun biasanya menghasilkan primitif yang berisi NaN tidak menggambar. API Direct2D tidak menyediakan pemfilteran eksplisit NaN untuk memvalidasi input.

RECT Input Yang Diurutkan Dengan Buruk

RECT input yang diurutkan dengan buruk diurutkan sehingga sudut kanan atas, kiri, dan bawah ditentukan dengan benar. Untuk output, persegi panjang kosong terlihat seperti ini: {Infinity, Infinity, FloatMax, FloatMax}.