Zhiyi Zhang (@zhiyi) commented about dlls/win32u/sysparams.c:
- for (mode = modes; mode && mode->dmSize; mode = NEXT_DEVMODEW(mode))
- {
if ((devmode->dmFields & DM_BITSPERPEL) && devmode->dmBitsPerPel && devmode->dmBitsPerPel != mode->dmBitsPerPel)
continue;
if ((devmode->dmFields & DM_PELSWIDTH) && devmode->dmPelsWidth != mode->dmPelsWidth)
continue;
if ((devmode->dmFields & DM_PELSHEIGHT) && devmode->dmPelsHeight != mode->dmPelsHeight)
continue;
if ((devmode->dmFields & DM_DISPLAYFREQUENCY) && devmode->dmDisplayFrequency && mode->dmDisplayFrequency &&
devmode->dmDisplayFrequency != 1 && devmode->dmDisplayFrequency != mode->dmDisplayFrequency)
continue;
if ((devmode->dmFields & DM_DISPLAYORIENTATION) && devmode->dmDisplayOrientation != mode->dmDisplayOrientation)
continue;
mode->dmFields |= DM_POSITION;
mode->dmPosition = devmode->dmPosition;
I don't think you should write to the user-provided structure. Please make a copy.