![]() |
![]() |
![]() |
Reports the current cooperative-level status of the Microsoft Direct3D device for a windowed or full-screen application.
Syntax
HRESULT TestCooperativeLevel(VOID);
Return Value
If the method succeeds, the return value is D3D_OK, indicating that the device is operational and the calling application can continue.
If the method fails, the return value can be one of the following values (see Remarks).
D3DERR_DEVICELOST The device has been lost but cannot be reset at this time. Therefore, rendering is not possible. D3DERR_DEVICENOTRESET The device has been lost but can be reset at this time. D3DERR_DRIVERINTERNALERROR Internal driver error. Applications should generally shut down when receiving this error. For more information, see Driver Internal Errors.
Remarks
If the device is lost but cannot be restored at the current time, IDirect3DDevice9::TestCooperativeLevel returns the D3DERR_DEVICELOST return code. This would be the case, for example, when a full-screen device has lost focus. If an application detects a lost device, it should pause and periodically call IDirect3DDevice9::TestCooperativeLevel until it receives a return value of D3DERR_DEVICENOTRESET. The application may then attempt to reset the device by calling IDirect3DDevice9::Reset and, if this succeeds, restore the necessary resources and resume normal operation. Note that IDirect3DDevice9::Present will return D3DERR_DEVICELOST if the device is either "lost" or "not reset".
A call to IDirect3DDevice9::TestCooperativeLevel will fail if called on a different thread than that used to create the device being reset.