Direct2D 錯誤處理原則
本主題描述 Direct2D 錯誤處理原則。 包含以下幾節。
使用 HRESULT
如果未批次處理函式,而且可能會發生運行時失敗,它應該會傳回 HRESULT 來指出失敗。 執行時間失敗是無法在設計階段避免的任何失敗,例如記憶體不足。
Batched 函式的傳回值
Direct2D 中的批次函式是呼叫 EndDraw 或 Close 時,以單一單位方式處理的函式。 它們是 BeginDraw 與 EndDraw 之間的繪圖命令,或 GeometrySink上的命令。 針對這些函式,會在批次完成時回報錯誤。 在EndDraw進行繪圖命令之後,以及GeometrySink的Close之後,就會傳回錯誤。
如果設定錯誤狀態,RenderTargets 會停止繪圖,但應用程式可以呼叫 Flush 來重設錯誤狀態並繼續繪圖。
Get 和 Set 函式沒有傳回值。 不過,如果 Set 函式有不正確輸入,偵錯層會產生訊息。 在此情況下,不會設定任何錯誤狀態, 而且 Set 函式不會執行任何動作。
輸入無效
Direct2D 會取值輸出指標和必要的參數,這會導致當指標無效或 Null時發生存取違規。
輸出指標
Direct2D 會取值輸出指標,並在輸入函式時立即將它指派給 Null 。 如果呼叫端以 Null 作為傳回值的指標傳遞 , 這會導致存取違規。 此原則也適用于指標陣列。 針對其他輸出參數,例如結構,稍後會發生取值,也會導致存取違規。 不過,有一些方法具有選擇性輸出指標 (,也就是 EndDraw、 Flush) ,這不會造成存取違規。
必要參數
如果 Null 傳遞至任何需要有效值的函式,則函式會提早取值不正確的指標,因而造成存取違規。 針對選擇性輸入參數, Null 是一個有效的值,會產生一些合理的預設值。
NaN 和排序不佳的輸入 RECT
在 Direct2D 中,NaN 會被視為有效的輸入,而且排序排序方式不佳的輸入 RECT。
NaN 作為輸入
NaN 被視為有效的輸入,但它通常會產生包含 NaN 而非繪圖的基本類型。 Direct2D API 不提供 NaN 的明確篩選來驗證輸入。
排序不佳的輸入 RECT
排序不佳的輸入 RECT,以便正確指定左上角和右下角。 針對輸出,空白矩形看起來像這樣:{Infinity、Infinity、FloatMax、FloatMax}。