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 |