パラメータの検証
更新 : 2007 年 11 月
セキュリティが強化された CRT 関数の大部分と既存の関数の多くは自身のパラメータを検証します。この検証には、null ポインタのチェック、整数が有効な範囲内にあるかどうかのチェック、列挙値が有効かどうかのチェックなどがあります。無効なパラメータが見つかった場合、無効なパラメータ ハンドラが実行されます。
無効なパラメータ ハンドラ ルーチン
無効なパラメータが見つかると、C ランタイムは、現在割り当てられている無効なパラメータ ハンドラを呼び出します。既定により無効とされているパラメータが見つかった場合、ワトソン博士のクラッシュ レポートが起動します。実行中のアプリケーションはクラッシュし、分析用のクラッシュ ダンプを Microsoft に提供するかどうかをユーザーに求めるメッセージが表示されます。デバッグ モードでは、無効なパラメータが見つかるとアサーション エラーになります。
この動作は、無効なパラメータ ハンドラを独自の関数に設定する _set_invalid_parameter_handler 関数を使用することにより、変更できます。指定した関数がアプリケーションを終了する場合、無効なパラメータを受け取った関数に制御が戻ります。これらの関数は通常、実行が停止し、エラー コードを返し、errno をエラー コードに設定します。多くの場合、errno 値と戻り値は両方とも EINVAL になり、無効なパラメータを示します。場合によっては、より具体的なエラー コードが返ります。たとえば、パラメータとして渡された無効なファイル ポインタを示す EBADF などです。errno の詳細については、「errno、_doserrno、_sys_errlist、および _sys_nerr」を参照してください。