Das SHGetFileInfo gibt ein
Handle auf eine System-ImageList zurück. Die hat eine bestimmte Größe. An der Stelle gibt es aber noch keinen DeviceContext, der mit einem DPI-Wert dienen könnte. Auch kann das SHGetFileInfo nicht wissen, wo das Icon denn später gemalt werden soll.
Ich vermute mal, die Größe der Icons in der ImageList wird anhand der Skalierung des Primary Monitor ermittelt. Solange keine alternative SHGetFileInfoForDPI verfügbar ist, wird das wohl nichts mit dem auf Monitor DPI Anpassen.
Die Schwester-Funktion SHGetImageList ist auch nur Process DPI aware, also auch nichts mit per Monitor.