Sdílet prostřednictvím


Zásady zpracování chyb Direct2D

Toto téma popisuje zásady zpracování chyb Direct2D. Obsahuje následující části.

Použití HRESULT

Pokud není funkce dávková a může selhat během běhu, měla by vrátit HRESULT k indikaci selhání. Selhání za běhu je jakékoli selhání, kterému nelze v době návrhu zabránit, například nedostatek paměti.

Návratová hodnota dávkových funkcí

Dávkové funkce v Direct2D jsou funkce, které se zpracovávají jako jedna jednotka při volání EndDraw nebo Close. Jedná se o příkazy kreslení mezi BeginDraw a EndDraw nebo příkazy na GeometrySink. U těchto funkcí se chyby oznamují, když je dávka dokončena. Chyba je vrácena po EndDraw pro příkazy kreslení a po Close pro GeometrySink.

RenderTargets zastaví renderování, pokud je nastaven chybový stav, ale aplikace může volat Flush k obnovení stavu chyby a pokračovat v renderování.

funkce Get a Set nemají žádnou návratnou hodnotu. Pokud ale funkce Set má neplatný vstup, vrstva ladění vygeneruje zprávu. V tomto případě není nastaven žádný chybový stav a funkce Set nic nedělá.

Neplatný vstup

Direct2D dereferencuje výstupní ukazatele a požadované parametry, což vede k narušení přístupu, pokud jsou ukazatele neplatné nebo NULL.

Výstupní ukazatel

Direct2D dereferencuje výstupní ukazatel a nastaví jej na NULL ihned po vstupu do funkce. To způsobí narušení přístupu, pokud volající předá NULL jako ukazatel na návratovou hodnotu. Tato zásada platí také pro pole ukazatelů. U jiných výstupních parametrů, jako je například struktura, se dereference provede později a dojde také k narušení přístupu. Existují však některé metody, které mají volitelné výstupní ukazatele (to znamená EndDraw, Flush), které nezpůsobí narušení přístupu.

Povinný parametr

Pokud se NULL předá jakékoli funkci vyžadující platnou hodnotu, funkce předčasně dereferencuje chybný ukazatel, což vede k porušení přístupu. U volitelných vstupních parametrů NULL je platná hodnota, která má za následek určitou rozumnou výchozí hodnotu.

NaN a špatně uspořádané vstupní recty

V Direct2D se NaN považuje za platný vstup a vstupní RECTy, které jsou špatně uspořádané, jsou seřazené.

NaN jako vstup

Hodnota NaN se považuje za platný vstup, ale obvykle způsobí, že primitivum, které obsahuje NaN, se nevykreslí. Rozhraní API Direct2D neposkytuje explicitní filtrování naN pro ověření vstupu.

Špatně uspořádané vstupní RECTy

Špatně uspořádané vstupní obdélníky (RECTs) se seřadí tak, aby byly správně zadány horní, levý a dolní, pravý rohy. Pro výstup vypadají prázdné obdélníky takto: {Infinity, Infinity, FloatMax, FloatMax}.