_set_invalid_parameter_handler を使用して、CRT 関数が無効なパラメーターを取得したときのプログラムの既定の動作をオーバーライドしています。これは、0xc0000417 (STATUS_INVALID_CRUNTIME_PARAMETER) でクラッシュします。
これは私のハンドラです:
void my_invalid_parameter_handler(
const wchar_t * expression,
const wchar_t * function,
const wchar_t * file,
unsigned int line,
uintptr_t pReserved
)
{
Log(L"Invalid parameter detected");
Log(L"expression= %s", expression);
Log(L"function= %s", function);
Log(L"file= %s", file);
Log(L"line= %d", line);
Log(L"pReserved= %p", pReserved);
}
情報をログに記録し、エラー レポートを送信したい。デバッグ ビルドではパラメーターを使用して有用な情報を取得できますが、リリース ビルドではすべてのパラメーターが NULL であり、あまり役に立ちません。リリース ビルドにも有用な情報を追加する方法はありますか?