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 |