code Last-Error

Lorsqu’une erreur se produit, la plupart des fonctions système retournent un code d’erreur, généralement 0, NULL ou –1. De nombreuses fonctions système définissent également un code d’erreur supplémentaire appelé code de dernière erreur. Ce code d’erreur est conservé séparément pour chaque thread en cours d’exécution ; une erreur dans un thread ne remplace pas le code de la dernière erreur dans un autre thread. N’importe quelle fonction peut appeler la fonction SetLastError ou SetLastErrorEx pour définir le code de dernière erreur pour le thread actuel. Ces fonctions sont principalement destinées aux bibliothèques de liens dynamiques (DLL), afin qu’elles puissent fournir des informations à l’application appelante. Notez que certaines fonctions appellent SetLastError ou SetLastErrorEx avec 0 lorsqu’elles réussissent, effaçant le code d’erreur défini par la dernière fonction ayant échoué, tandis que d’autres ne le font pas.

Une application peut récupérer le code de la dernière erreur à l’aide de la fonction GetLastError ; le code d’erreur peut en savoir plus sur ce qui s’est réellement produit pour faire échouer la fonction. La documentation relative aux fonctions système indique les conditions dans lesquelles la fonction définit le code de la dernière erreur.

Le système définit un ensemble de codes d’erreur qui peuvent être définis comme des codes de dernière erreur ou être retournés par ces fonctions. Les codes d’erreur sont des valeurs 32 bits (le bit 31 est le bit le plus significatif). Le bit 29 est réservé aux codes d’erreur définis par l’application ; aucun code d’erreur système n’a ce bit défini. Si vous définissez des codes d’erreur pour votre application, définissez ce bit pour indiquer que le code d’erreur a été défini par une application et pour vous assurer que les codes d’erreur n’entrent pas en conflit avec les codes d’erreur définis par le système. Pour plus d’informations, consultez WinError.h et Codes d’erreur système.