Sdílet prostřednictvím


Zpracování chyb a odebrání zařízení v DirectML

Odebrání zařízení

Pokud dojde k neopravitelné chybě, zařízení DirectML může zadat stav "device-removed". Neopravitelné chyby, které způsobují odebrání zařízení, zahrnují neplatné použití rozhraní API (pro metody, které nevrací HRESULT), chybu ovladače, hardwarovou chybu nebo situace nedostatku paměti (OOM, out-of-memory).

Když je zařízení DirectML odebráno, všechna volání metod na zařízení a každý objekt vytvořený tímto zařízením se stanou nefunkčními. Pro metody, které vrací HRESULT, je vrácen chybový kód DXGI_ERROR_DEVICE_REMOVED. Pomocí metody IDMLDevice::GetDeviceRemovedReason můžete zkontrolovat, jestli bylo zařízení DirectML odebráno, a získat podrobnější kód chyby.

Odstranění zařízení nejde obnovit s výjimkou uvolnění ovlivněného zařízení a všech jejích podřízených položek a následné opětovné vytvoření zařízení DirectML od nuly.

Odebrání základního zařízení Direct3D 12 také způsobí odebrání zařízení DirectML. Opačně to však neplatí. Odebrání zařízení DirectML nemusí nutně způsobit odebrání základního zařízení Direct3D 12.

Řešení problémů s odebráním zařízení DirectML a dalšími chybami

Nejčastější příčinou chyb DirectML je neplatné použití rozhraní API. Neplatné použití rozhraní API může vést k E_INVALIDARG kódu chyby HRESULT nebo může dojít k odebrání zařízení.

Důrazně doporučujeme povolit vrstvu ladění DirectML během vývoje, abyste mohli takové chyby zachytit a ladit. Ladicí vrstva DirectML provádí rozsáhlé ověřování parametrů metody a použití rozhraní API a vygeneruje ladicí výstupní zprávy, které vám pomůžou ladit.

Viz také