パラメーターの検証

セキュリティが強化された CRT 関数の大部分と既存の関数の多くは自身のパラメーターを検証します。 この検証には、null ポインターのチェック、整数が有効な範囲内にあるかどうかのチェック、列挙値が有効かどうかのチェックなどがあります。 無効なパラメーターが見つかった場合、無効なパラメーター ハンドラーが実行されます。

無効なパラメーター ハンドラー ルーチン

無効なパラメーターが見つかると、C ランタイムは、現在割り当てられている無効なパラメーター ハンドラーを呼び出します。 既定により無効とされているパラメーターが見つかった場合、ワトソン博士のクラッシュ レポートが起動します。実行中のアプリケーションはクラッシュし、分析用のクラッシュ ダンプを Microsoft に提供するかどうかをユーザーに求めるメッセージが表示されます。 デバッグ モードでは、無効なパラメーターが見つかるとアサーション エラーになります。

この動作は、無効なパラメーター ハンドラーを独自の関数に設定する _set_invalid_parameter_handler 関数を使用することにより、変更できます。 指定した関数がアプリケーションを終了する場合、無効なパラメーターを受け取った関数に制御が戻ります。これらの関数は通常、実行が停止し、エラー コードを返し、errno をエラー コードに設定します。 多くの場合、errno 値と戻り値は両方とも EINVAL になり、無効なパラメーターを示します。 場合によっては、より具体的なエラー コードが返ります。たとえば、パラメーターとして渡された無効なファイル ポインターを示す EBADF などです。 errno の詳細については、「errno、_doserrno、_sys_errlist、および _sys_nerr」を参照してください。

参照

参照

C ランタイム ライブラリ

概念

CRT のセキュリティ機能