ID3D12Device5::RemoveDevice メソッド (d3d12.h)

RemoveDevice を呼び出して、GPU デバイスで問題が発生し、使用できなくなったことをDirect3D 12ランタイムに示すことができます。 これにより、すべてのデバイスの監視対象フェンスが通知されます。 通常、アプリケーションは 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