Direct2D エラー処理ポリシー

このトピックでは、Direct2D エラー処理ポリシーについて説明します。 以下のセクションが含まれます。

HRESULT の使用

関数がバッチ処理されず、実行時エラーが発生する可能性がある場合は、エラーを示すために HRESULT を返す必要があります。 実行時エラーとは、メモリ不足など、設計時に回避できないエラーです。

バッチ関数の戻り値

Direct2D のバッチ関数は、 EndDraw または Close が呼び出されたときに 1 つの単位として処理される関数です。 これらは、BeginDrawEndDraw の間の描画コマンド、または GeometrySink のコマンドです。 これらの関数では、バッチが完了した時点でエラーが報告されます。 このエラーは、描画コマンドの EndDraw の後、GeometrySink場合は Close の後に返されます。

エラー状態が設定されている場合、RenderTargets は描画を停止しますが、アプリケーションは Flush を呼び出してエラー状態をリセットし、描画を再開できます。

Get 関数と Set 関数には戻り値がありません。 ただし、 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} のようになります。