Ja, Windows XP und Windows Server 2003 werden von Microsoft nicht mehr unterstützt, aber als Anwendungsentwickler muss man alte Betriebssystemversionen leider manchmal noch etwas länger unterstützen, weil der eine oder andere Kunde „etwas“ länger zur Migration benötigt.
Erfreulicherweise liefert Microsoft mit Visual Studio 2015 weiterhin Build-Tools für Windows XP/2003 mit, allerdings hat sich in der Laufzeitbibliothek zum Windows SDK 10.0.10240.0 (mindestens) ein Fehler eingeschlichen, der den Windows XP/2003 Support etwas eischränkt:
Die Funktion „stat“ zur Ermittlung von Dateieigenschaften (Größe, Zeitstempel, Attribute, …) läuft unter Windows XP/2003 für Dateien grundsätzlich in einen Fehler und errno steht danach nichtssagend auf EINVAL. Erst ein Blick auf den Rückgabewert der Windows-API-Funktion „GetLastError“ liefert ERROR_CALL_NOT_IMPLEMENTED.
Ein Blick in den Quellcode der Universal Runtime erklärt das Problem: Die intern verwendete Hilfsfunktion „common_stat_handle_file_opened“ benutzt die Windows-API-Funktion „GetFileInformationByHandleEx“, die es erst ab Windows Vista/2008 gibt.
Mit dem Visual Studion 2015 Update 1 bzw. im Windows SDK 10.0.10586.0 hat Microsoft diesen Fehler korrigiert und benutzt die ältere Windows-API-Funktion „GetFileInformationByHandle“.
Warum das korrigierte Windows SDK evtl. trotz Installation des Update 1 nicht zum Einsatz kommt, erkläre ich in einem separaten Blog-Beitrag.
Pingback: Visual Studio 2015 Update 1: TargetUniversalCRTVersion wird nicht aktualisiert | daniel-weber.eu