ID3D12Device5::RemoveDevice 方法 (d3d12.h)

可以调用 RemoveDevice ,以向 Direct3D 12 运行时指示 GPU 设备遇到问题,并且不能再使用。 这样做将导致所有设备的受监视围栏都收到信号。 应用程序通常不需要显式调用 RemoveDevice

语法

void RemoveDevice();

返回值

备注

由于设备删除会触发所有围栏的信号, 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
标头 d3d12.h