다음을 통해 공유


Direct2D 오류 처리 정책

이 항목에서는 Direct2D 오류 처리 정책에 대해 설명합니다. 이 항목에는 다음과 같은 섹션이 포함됩니다.

HRESULT 사용

함수가 일괄 처리되지 않고 런타임 오류가 있을 수 있는 경우 오류를 나타내기 위해 HRESULT 를 반환해야 합니다. 런타임 오류는 메모리 부족과 같이 디자인 타임에 방지할 수 없는 오류입니다.

Batched 함수의 반환 값

Direct2D의 일괄 처리 함수는 EndDraw 또는 Close 가 호출될 때 단일 단위로 처리되는 함수입니다. BeginDrawEndDraw 사이의 그리기 명령 또는 GeometrySink의 명령입니다. 이러한 함수의 경우 일괄 처리가 완료된 시점에 오류가 보고됩니다. 그리기 명령의 경우 EndDraw 다음에 오류가 반환되고 GeometrySink에 대해 닫기 후에 반환됩니다.

오류 상태가 설정된 경우 RenderTargets 그리기를 중지하지만 애플리케이션에서 Flush 를 호출하여 오류 상태를 다시 설정하고 그리기를 다시 시작할 수 있습니다.

GetSet 함수에는 반환 값이 없습니다. 그러나 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}와 같습니다.