@@ -33,6 +33,12 @@ NTSYSAPI NTSTATUS WINAPI DestroyPhysicalMonitorInternal(
3333 _In_ HANDLE hMonitor
3434);
3535
36+ NTSTATUS WINAPI GetPhysicalMonitorDescription (
37+ _In_ HANDLE hMonitor,
38+ _In_ DWORD dwPhysicalMonitorDescriptionSizeInChars,
39+ _Out_ LPWSTR szPhysicalMonitorDescription
40+ );
41+
3642static const char * detectWithWmi (FFlist* result)
3743{
3844 FFWmiQuery query (L" SELECT CurrentBrightness, InstanceName FROM WmiMonitorBrightness WHERE Active = true" , nullptr , FFWmiNamespace::WMI);
@@ -91,7 +97,20 @@ static const char* detectWithDdcci(const FFDisplayServerResult* displayServer, F
9197 if (NT_SUCCESS (ffDDCCIGetVCPFeature (physicalMonitor, 0x10 /* luminance */ , NULL , &curr, &max)))
9298 {
9399 FFBrightnessResult* brightness = (FFBrightnessResult*) ffListAdd (result);
94- ffStrbufInitCopy (&brightness->name , &display->name );
100+ if (display->name .length > 0 )
101+ ffStrbufInitCopy (&brightness->name , &display->name );
102+ else
103+ {
104+ FF_LIBRARY_LOAD_SYMBOL_LAZY (gdi32, GetPhysicalMonitorDescription)
105+ if (ffGetPhysicalMonitorDescription)
106+ {
107+ wchar_t description[128 /* MUST be PHYSICAL_MONITOR_DESCRIPTION_SIZE*/ ];
108+ if (NT_SUCCESS (ffGetPhysicalMonitorDescription (physicalMonitor, ARRAY_SIZE (description), description)))
109+ ffStrbufInitWS (&brightness->name , description);
110+ }
111+ if (brightness->name .length == 0 )
112+ ffStrbufSetNWS (&brightness->name , deviceName.Length / 2 , deviceName.Buffer );
113+ }
95114 brightness->max = max;
96115 brightness->min = 0 ;
97116 brightness->current = curr;
0 commit comments