Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
De flesta av de säkerhetsförbättrade CRT-funktionerna, och många som inte är det, verifierar sina parametrar för saker som att kontrollera pekare för NULL
, att heltal hamnar i ett giltigt intervall eller att uppräkningsvärdena är giltiga. Om en ogiltig parameter hittas anropas den ogiltiga parameterhanteraren.
Ogiltig parameterhanterarrutin
När en C Runtime Library-funktion identifierar en ogiltig parameter samlar den in viss information om felet och anropar sedan ett makro som omsluter en ogiltig parameterhanterares sändningsfunktion. Som kommer att vara en av _invalid_parameter
, _invalid_parameter_noinfo
eller _invalid_parameter_noinfo_noreturn
. Vilken dispatch-funktion som anropas beror på om koden är en felsökningsversion, en detaljhandelsversion eller om felet inte anses vara återställningsbart.
I felsökningsversioner genererar det ogiltiga parametermakronet vanligtvis en misslyckad kontroll och en felsöknings brytpunkt innan funktionen dispatch anropas. När koden körs kan försäkran rapporteras till användaren i en dialogruta med "Abort", "Retry" och "Continue" eller liknande alternativ som är beroende av operativsystemet och CRT-versionen. Med de här alternativen kan användaren omedelbart avsluta programmet, koppla ett felsökningsprogram eller låta den befintliga koden fortsätta att köras som anropar funktionen dispatch.
Funktionen för sändning av ogiltiga parametervärden anropar den för närvarande tilldelade hanteraren för ogiltiga parametrar. Som standard anropar _invoke_watson
den ogiltiga parametern , vilket gör att programmet stängs och genererar en minidump. Om det är aktiverat av operativsystemet frågar en dialogruta användaren om de vill skicka kraschdumpen till Microsoft för analys.
Du kan ändra det här beteendet med hjälp av funktionerna _set_invalid_parameter_handler
eller _set_thread_local_invalid_parameter_handler
för att ange den ogiltiga parameterhanteraren till din egen funktion. Om den funktion du anger inte avslutar programmet returneras kontrollen till funktionen som tog emot de ogiltiga parametrarna. I CRT:n stoppar dessa funktioner normalt funktionskörningen, sätter errno
till en felkod och returnerar en felkod. I många fall är både errno
-värdet och returvärdet EINVAL
, för att indikera en ogiltig parameter. I vissa fall returneras en mer specifik felkod, till exempel EBADF
för en felaktig filpekare som skickas som en parameter.
Mer information om errno
finns i errno
, _doserrno
, _sys_errlist
och _sys_nerr
.