Udostępnij przez


Zasady obsługi błędów Direct2D

W tym temacie opisano zasady obsługi błędów Direct2D. Zawiera on następujące sekcje.

Korzystanie z HRESULT

Jeśli funkcja nie jest wsadowa i może mieć błąd w czasie wykonywania, powinna zwrócić HRESULT, aby wskazać błąd. Awaria w czasie wykonywania to awaria, której nie można uniknąć w czasie projektowania, takie jak brak pamięci.

Zwracana wartość funkcji zbiorowych

Funkcje wsadowe w trybie Direct2D to funkcje przetwarzane jako pojedyncza jednostka, gdy wywoływana jest EndDraw lub Close. Są to polecenia rysunkowe między BeginDraw i EndDraw lub poleceniami GeometrySink. W przypadku tych funkcji błędy są zgłaszane w momencie ukończenia zadania. Błąd jest zwracany po EndDraw dla poleceń rysowania, a po Close dla GeometrySink.

RenderTargets przestaje renderować, jeśli jest ustawiony stan błędu, ale aplikacja może wywołać Flush, aby zresetować stan błędu i wznowić renderowanie.

funkcje Get i Set nie mają wartości zwracanej. Jeśli jednak funkcja Set ma nieprawidłowe dane wejściowe, warstwa debugowania generuje komunikat. W takim przypadku nie ustawiono żadnego stanu błędu, a funkcja Set nic nie robi.

Nieprawidłowe dane wejściowe

Wskaźniki wyjściowe i wymagane parametry w Direct2D są dereferencjowane, co prowadzi do naruszenia dostępu, gdy wskaźniki są nieprawidłowe lub NULL.

Wskaźnik wyjściowy

Direct2D wyłusza wskaźnik wyjściowy i przypisuje go do null natychmiast po wprowadzeniu funkcji. Powoduje to naruszenie dostępu, jeśli obiekt wywołujący przekaże wartość NULL jako wskaźnik do wartości zwracanej. Te zasady dotyczą również tablic wskaźników. W przypadku innych parametrów wyjściowych, takich jak struktura, wyłuszczenie następuje później, co również skutkuje naruszeniem dostępu. Istnieją jednak pewne metody, które mają opcjonalne wskaźniki wyjściowe (czyli EndDraw, Flush), które nie spowodują naruszenia dostępu.

Wymagany parametr

Jeśli wartość NULL jest przekazywana do dowolnej funkcji wymagającej prawidłowej wartości, funkcja wyluskuje nieprawidłowy wskaźnik wcześnie, co powoduje naruszenie dostępu. W przypadku opcjonalnych parametrów wejściowych wartość NULL jest prawidłową wartością, która skutkuje rozsądną wartością domyślną.

NaN i źle uporządkowane wejściowe RECTs

W direct2D, NaN jest uważany za prawidłowe dane wejściowe i źle uporządkowane wejściowe RECTs są sortowane.

NaN jako dane wejściowe

NaN jest uznawane za prawidłowe dane wejściowe, choć zazwyczaj powoduje to, że element pierwotny zawierający NaN się nie renderuje. Interfejs API Direct2D nie zapewnia jawnego filtrowania NaN w celu walidacji danych wejściowych.

Źle uporządkowane wejściowe RECTs

Błędnie uporządkowane wejściowe RECT-y są sortowane tak, aby górne, lewe oraz dolne, prawe narożniki były poprawnie określone. W przypadku danych wyjściowych puste prostokąty wyglądają następująco: {Infinity, Infinity, FloatMax, FloatMax}.