共用方式為


Direct2D 錯誤處理原則

本主題描述 Direct2D 錯誤處理原則。 其中包含下列各節。

使用 HRESULT

如果函式未批處理,而且可能會發生運行時失敗,它應該傳回 HRESULT,以指出失敗。 運行時間失敗是設計時間無法避免的任何失敗,例如記憶體不足。

批次函式的傳回值

在 Direct2D 中,批次函式是在呼叫 EndDrawClose 時,以整個單位的形式處理。 它們是 BeginDrawEndDrawGeometrySink上的命令之間的繪圖命令。 針對這些功能,會在批次完成時回報錯誤。 錯誤會在繪圖命令的 EndDraw 之後傳回,並在 GeometrySinkClose 之後傳回。

如果設定錯誤狀態,RenderTargets 會停止繪製,但應用程式可以呼叫 Flush 來重設錯誤狀態並繼續繪製。

GetSet 函式沒有傳回值。 不過,如果 Set 函式具有無效的輸入,偵錯層會產生訊息。 在此情況下,不會設定任何錯誤狀態,而且 Set 函式不會執行任何動作。

無效的輸入

Direct2D 取值輸出指標和必要參數,當指標無效或 NULL時,會導致存取違規。

輸出指標

Direct2D 會取值輸出指標,並在輸入函式時立即將它指派給 NULL。 如果呼叫端傳入 NULL 做為傳回值的指標,這會導致存取違規。 此原則也適用於指標陣列。 對於其他輸出參數,例如結構體,解參考會在稍後發生,也會導致存取違規。 不過,有一些方法有選擇性的輸出指標(也就是 EndDrawFlush),不會造成存取違規。

必要參數

如果 NULL 傳遞至任何需要有效值的函式,函式會提早取值不正確的指標,而導致存取違規。 對於選擇性輸入參數,NULL 是一個有效值,會導致某些合理的預設值。

NaN 和輸入排序不良的 RECT

在 Direct2D 中,NaN 會被視為有效的輸入,而且排序順序不佳的輸入 RECT 會被排序。

NaN 作為輸入

NaN 會被視為有效的輸入,但通常會產生包含 NaN 而非繪圖的基本類型。 Direct2D API 並不具備明確的 NaN 篩選功能來驗證輸入。

排序不佳的輸入 RECT

將排序不佳的輸入 RECT 進行排序,以便正確指定左上角、右上角、左下角和右下角。 針對輸出,空白矩形看起來像這樣:{Infinity、Infinity、FloatMax、FloatMax}。