FC2ブログ

[Development][VC++] RaiseException()で任意のデータを渡す

#include <TCHAR.H>
#include <windows.h>
#include <stdio.h>


int _tmain(int argc, _TCHAR* argv[])
{
_EXCEPTION_POINTERS* info;
const char Ixa[]="その命、神に返しなさい."; // 例外ブロックに通知したい値(1)
int Nagosan=753; // 例外ブロックに通知したい値(2)
PVOID Rising[15]; // RaiseException()に渡す引数リストの実体


__try{
// イ・ク・サ・カ・イ・ザ・ー、フィ・ス・ト・オ・ン
Rising[0]=(PVOID)&Ixa; // 引数リストを作成中(1)
Rising[1]=(PVOID)&Nagosan; // 引数リストを作成中(2)
Rising[2]=NULL; // 引数リストを作成中(3)

// イ・ク・サ・カ・リ・バ・ー、ラ・イ・ズ・ア・ッ・プ
RaiseException(0xE000001,0,2,(const ULONG_PTR *)&Rising);
}
__except(info=GetExceptionInformation(),EXCEPTION_EXECUTE_HANDLER)
{
// ラ・イ・ジ・ン・グ
char buffer[1024];
::ZeroMemory(buffer,sizeof(buffer));
strcpy(buffer,(char*)info->ExceptionRecord->ExceptionInformation[0]);

printf("%s by %d",buffer,(int)info->ExceptionRecord->ExceptionInformation[1]);
DWORD exception_code=info->ExceptionRecord->ExceptionCode;
}


return 0;
}
スポンサーサイト



theme : プログラミング
genre : コンピュータ

FC2ブックマーク | この記事をokyuuへインポート | このエントリーを含むはてなブックマーク | ニフティクリップへ追加 | この記事をクリップ! | イザ!ブックマーク | POOKMARK Airlinesに登録する | del.icio.us |
動作未検証 | | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証

comment

管理者にだけメッセージを送る

カレンダー
11 | 2019/12 | 01
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
最近の記事
月別アーカイブ
カテゴリー
ブログ内検索
RSSフィード
リンク
いろいろリンクボタン
埋め込みe-Words