Поделиться через


Метод ID3D12Device5::RemoveDevice (d3d12.h)

Вы можете вызвать RemoveDevice , чтобы сообщить среде выполнения Direct3D 12, что устройство GPU столкнулось с проблемой и больше не может использоваться. Это приведет к тому, что все отслеживаемые заборы устройств будут сигнализироваться. Приложению обычно не требуется явный вызов RemoveDevice.

Синтаксис

void RemoveDevice();

Возвращаемое значение

None

Remarks

Так как удаление устройства активирует все ограждения для передачи UINT64_MAXсигналов , вы можете создать обратный вызов для удаления устройства с помощью события .

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
}

Требования

   
Минимальная версия клиента Windows 10 сборки 20348
Минимальная версия сервера Windows 10 сборки 20348
Целевая платформа Windows
Header d3d12.h