Last-Error Code

Wenn ein Fehler auftritt, geben die meisten Systemfunktionen einen Fehlercode zurück, in der Regel 0, NULL oder –1. Viele Systemfunktionen legen auch einen zusätzlichen Fehlercode fest, der als letzter Fehlercode bezeichnet wird. Dieser Fehlercode wird für jeden ausgeführten Thread separat verwaltet. Ein Fehler in einem Thread überschreibt den Code des letzten Fehlers in einem anderen Thread nicht. Jede Funktion kann die SetLastError- oder SetLastErrorEx-Funktion aufrufen, um den Letzten Fehlercode für den aktuellen Thread festzulegen. Diese Funktionen sind in erster Linie für DLL (Dynamic Link Libraries) vorgesehen, sodass sie informationen für die aufrufende Anwendung bereitstellen können. Beachten Sie, dass einige Funktionen SetLastError oder SetLastErrorEx mit 0 aufrufen, wenn sie erfolgreich sind, und der Fehlercode, der von der zuletzt fehlgeschlagenen Funktion festgelegt wurde, entfernt wird, während andere dies nicht tun.

Eine Anwendung kann den Code des letzten Fehlers mithilfe der GetLastError-Funktion abrufen. Der Fehlercode kann mehr darüber sagen, was tatsächlich aufgetreten ist, damit die Funktion fehlschlägt. In der Dokumentation für Systemfunktionen werden die Bedingungen angegeben, unter denen die Funktion den Code für den letzten Fehler festlegt.

Das System definiert eine Reihe von Fehlercodes, die als Letzte-Fehler-Codes festgelegt oder von diesen Funktionen zurückgegeben werden können. Fehlercodes sind 32-Bit-Werte (Bit 31 ist das wichtigste Bit). Bit 29 ist für anwendungsdefinierte Fehlercodes reserviert. Dieses Bit ist nicht im Systemfehlercode festgelegt. Wenn Sie Fehlercodes für Ihre Anwendung definieren, legen Sie dieses Bit fest, um anzugeben, dass der Fehlercode von einer Anwendung definiert wurde, und um sicherzustellen, dass die Fehlercodes nicht mit systemdefinierten Fehlercodes in Konflikt treten. Weitere Informationen finden Sie unter WinError.h und Systemfehlercodes.