Método ID3D12Device5::RemoveDevice (d3d12.h)
Puede llamar a RemoveDevice para indicar al entorno de ejecución de Direct3D 12 que el dispositivo gpu encontró un problema y ya no se puede usar. Si lo hace, se señalizarán todas las vallas supervisadas de todos los dispositivos. Normalmente, la aplicación no necesita llamar explícitamente a RemoveDevice.
Sintaxis
void RemoveDevice();
Valor devuelto
Ninguno
Observaciones
Dado que la eliminación de dispositivos desencadena todas las vallas que se van a indicar a UINT64_MAX
, puede crear una devolución de llamada para la eliminación de dispositivos mediante un evento.
HANDLE deviceRemovedEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
assert(deviceRemovedEvent != NULL);
_deviceFence->SetEventOnCompletion(UINT64_MAX, deviceRemoved);
HANDLE waitHandle;
RegisterWaitForSingleObject(
&waitHandle,
deviceRemovedEvent,
OnDeviceRemoved,
_device.Get(), // Pass the device as our context
INFINITE, // No timeout
0 // No flags
);
void OnDeviceRemoved(PVOID context, BOOLEAN)
{
ID3D12Device* removedDevice = (ID3D12Device*)context;
HRESULT removedReason = removedDevice->GetDeviceRemovedReason();
// Perform app-specific device removed operation, such as logging or inspecting DRED output
}
Requisitos
Cliente mínimo compatible | Compilación 20348 de Windows 10 |
Servidor mínimo compatible | Compilación 20348 de Windows 10 |
Plataforma de destino | Windows |
Encabezado | d3d12.h |