드라이버의 내부 에러
Microsoft® DirectX® 8.0 에서는, 애플리케이션이 Createxxx 호출로부터 D3DERR_DRIVERINTERNALERROR 를 받는 일이 있지만, 3D 렌더링의 호출은, 이 에러를 돌려주지 않는다. 그 대신에, 3D 렌더링 처리로 D3DERR_DRIVERINTERNALERROR 가 발생했을 경우에는, 런타임은 내부 데이터 구조체를 부분적으로 리셋 해, 무엇인가가 실패한 것을 나타내는 디버그 정보를 기록해, 실행을 계속하려고 한다. 그 결과, 보통, 애플리케이션 장해나 operating system 장해가 발생한다.
DirectX 9.0 에서의 처리는, 다음과 같다.
- Createxxx 호출로부터 D3DERR_DRIVERINTERNALERROR 가 돌려주어졌을 경우, 그것은 치명적 에러라고는 보여지지 않는다. 드라이버는, 이 에러를 D3DERR_UNSUPPORTED 또는 D3DERR_OUTOFMEMORY 에러와 같게 취급한다.
- 3D 렌더링중에 D3DERR_DRIVERINTERNALERROR 가 발생했을 경우, 런타임은 IDirect3DDevice9::Present 호출 때에, 그 에러를 돌려준다. 애플리케이션은 다음의 어느쪽이든을 실행할 수 있다.
- 종료한다. 이 때, pop-up 윈도우를 표시해, 디스플레이 어댑터에 문제가 있기 (위해)때문에 애플리케이션을 속행할 수 없는 것을 나타내, 어댑터 메이커에 문의하도록(듯이) 사용자에 요구한다.
- IDirect3DDevice9::Reset 를 호출해 재부팅을 시도한다. 이것은 기본적으로는 장치의 손실로부터 회복하는 패스와 같다. IDirect3DDevice9::Reset 가 D3DERR_DRIVERINTERNALERROR 로 실패했을 경우, 애플리케이션은 즉시 종료해, 어댑터 메이커에 문의하도록 요구하는 메시지를 표시할 필요가 있다.