Megosztás a következőn keresztül:


Paraméter érvényesítése

A biztonsági szempontból továbbfejlesztett CRT-függvények többsége, és sok nem, ellenőrzi a paramétereket olyan dolgokra, mint például a mutatók NULLellenőrzése, az egész számok érvényes tartományba esnek, vagy az enumerálási értékek érvényesek. Ha érvénytelen paramétert talál, a rendszer meghívja az érvénytelen paraméterkezelőt.

Érvénytelen paraméterkezelő rutin

Ha a C futtatókörnyezeti kódtár függvény érvénytelen paramétert észlel, rögzíti a hibával kapcsolatos információkat, majd meghív egy makrót, amely egy érvénytelen paraméterkezelő diszpécserfüggvényt burkol. Melyik lesz az egyik _invalid_parameter, _invalid_parameter_noinfo, vagy _invalid_parameter_noinfo_noreturn. A küldési függvény meghívása attól függ, hogy a kód hibakeresési build- vagy kiskereskedelmi build-e, vagy a hiba nem tekinthető helyreállíthatónak.

Hibakeresési buildek esetén az érvénytelen paramétermakró általában sikertelen állítást és hibakereső töréspontot hoz létre a küldési függvény meghívása előtt. A kód futtatásakor az állítás egy olyan párbeszédpanelen jelenthető meg a felhasználónak, amely "Megszakítás", "Újrapróbálkozó" és "Folytatás" vagy hasonló választási lehetőségekkel rendelkezik, amelyek az operációs rendszertől és a CRT-verziótól függenek. Ezek a beállítások lehetővé teszik a felhasználó számára a program azonnali leállítását, hibakereső csatolását, vagy a meglévő kód futtatását, amely meghívja a küldési függvényt.

Az érvénytelen paraméterkezelő diszpécser függvény meghívja a jelenleg hozzárendelt érvénytelen paraméterkezelőt. Alapértelmezés szerint az érvénytelen paraméterhívások _invoke_watsonmiatt az alkalmazás bezárul, és létrehoz egy mini-memóriaképet. Ha az operációs rendszer engedélyezi, egy párbeszédpanel megkérdezi a felhasználót, hogy szeretné-e elemzésre elküldeni az összeomlási memóriaképet a Microsoftnak.

Ezt a viselkedést módosíthatja a függvények _set_invalid_parameter_handler használatával, vagy _set_thread_local_invalid_parameter_handler beállíthatja az érvénytelen paraméterkezelőt a saját függvényére. Ha a megadott függvény nem szünteti meg az alkalmazást, a rendszer visszaadja a vezérlőt annak a függvénynek, amely az érvénytelen paramétereket kapta. A CRT-ben ezek a függvények általában leállják a függvények végrehajtását, hibakódra vannak állítva errno , és hibakódot ad vissza. Sok esetben az errno érték és a visszatérési érték is EINVALérvénytelen paramétert jelez. Bizonyos esetekben egy pontosabb hibakód jelenik meg, például EBADF egy paraméterként átadott hibás fájlmutató esetében.

További információ: errno,errno , _doserrno_sys_errlistés _sys_nerr.

Lásd még

Biztonsági funkciók a CRT-ben
C futtatókörnyezeti (CRT) és C++ Standard Könyvtár (STL) .lib fájlok