ID3D12Device5::RemoveDevice 方法 (d3d12.h)

您可以呼叫 RemoveDevice ,向 Direct3D 12 執行時間指出 GPU 裝置發生問題,且無法再使用。 這麼做會導致所有裝置的受監視柵欄收到訊號。 您的應用程式通常不需要明確呼叫 RemoveDevice

Syntax

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