Compartilhar via


Método ID3D12Device5::RemoveDevice (d3d12.h)

Você pode chamar RemoveDevice para indicar para o runtime do Direct3D 12 que o dispositivo de GPU encontrou um problema e não pode mais ser usado. Isso fará com que todas as cercas monitoradas dos dispositivos sejam sinalizadas. Normalmente, seu aplicativo não precisa chamar RemoveDevice explicitamente.

Sintaxe

void RemoveDevice();

Valor retornado

Nenhum

Comentários

Como a remoção do dispositivo dispara todas as cercas a serem sinalizadas para UINT64_MAX, você pode criar um retorno de chamada para a remoção do dispositivo usando um 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 com suporte Windows 10 Build 20348
Servidor mínimo com suporte Windows 10 Build 20348
Plataforma de Destino Windows
Cabeçalho d3d12.h