ハンドルリークテスト用 HTTP モジュールの作成
このページではハンドルリークを起こす HTTP モジュールを開発します。 もちろん、本番のサーバーにこんなものをインストールしてはいけませんよ! 以下のページでハンドルリークの調査方法を説明しています。このモジュールはそのための、いわば勉強用モジュールです。 勉強が終わったら忘れず削除してください。
関連ページ
ハンドルリークの調査方法 ~ ハンドルリークとは? | |
!htrace デバッグコマンドをハンドルリークのデバッグ方法 |
コード
基本的に ページレベル HTTP モジュールの開発 (サンプルコード) と全く同様です。
myhttpmod.cpp の中の一行だけ違います。CloseHandle の呼び出しをコメントアウトしています。
(省略) if ( FAILED(hr) ) { pHttpResponse->SetStatus( 500, "Server Error", 0, hr); } // CloseHandle ( hFile ); ::OutputDebugString ( TEXT( "Exit MyHttpModule::OnBeginRequest" ) ); return RQ_NOTIFICATION_FINISH_REQUEST; }
これにより、CreateFile でオープンしたファイルハンドルをリークさせています。