The virtual_monitor used for non-interactive service executions do not have an adapter set. Avoid segfaulting and poisoning the mutex in such cases.
/cc @rbernon
From: Tatsuyuki Ishi ishitatsuyuki@gmail.com
The virtual_monitor used for non-interactive service executions do not have an adapter set. Avoid segfaulting and poisoning the mutex in such cases. --- dlls/win32u/sysparams.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/dlls/win32u/sysparams.c b/dlls/win32u/sysparams.c index 44ee33c80f0..acda600b43c 100644 --- a/dlls/win32u/sysparams.c +++ b/dlls/win32u/sysparams.c @@ -2569,6 +2569,9 @@ LONG WINAPI NtUserQueryDisplayConfig( UINT32 flags, UINT32 *paths_count, DISPLAY if (!(monitor->dev.state_flags & DISPLAY_DEVICE_ACTIVE)) continue;
+ if (!monitor->adapter) + continue; + adapter_index = monitor->adapter->id; gpu_luid = &monitor->adapter->gpu_luid; output_id = monitor->output_id;
For the record, from a quick test it looks like QueryDisplayConfig returns ERROR_ACCESS_DENIED in services.
This merge request was approved by Rémi Bernon.