Dela via


Parameterverifiering

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_noinfoeller _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_watsonden 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 errnofinns i errno, _doserrno, _sys_errlistoch _sys_nerr.

Se även

Säkerhetsfunktioner i CRT
.lib