| |||||||||||||||||||||
サイト内検索
カスタム検索
|
ISAPI フィルタ概要ISAPI フィルタISAPI フィルタ (Filter) は ISAPI エクステンション (Extension, 拡張) と並び、IIS の早期のバージョンから実装されている API のひとつです。ISAPI エクステンションが Script Handler エンジン的あるいは CGI 的に使用されるのに対して、 ISAPI フィルタは IIS の内部処理を横取りしてIISをカスタマイズすることを可能とするための API です。
例: スタティックコンテンツの HTTP 圧縮例として IIS 6 の HTTP 圧縮実装例をあげます。
ISAPI フィルタ DLL の構成ISAPI フィルタは DLL として実装されており、次の関数をエクスポートしなければなりません。 三つの関数をエクスポートする
通知の種類IIS の内部処理の様々な段階それぞれについて、ISAPI が通知を受けることができます。 以下がそれぞれの通知です。自己記述的な通知名なのでおよそその内容の見当がつくのではないでしょうか。
戻り値ISAPI は戻り値によって、通知のチェーンを断ち切ることも処理を終わらせることも、もちろん継続することも可能です。
戻り値は次の図のように使われます。
ISAPI Filter 開発のヒント知っていると便利(というか知らないときつい)点を三つだけあげてみました。
それぞれみていきましょう。 AllocMem
pFilterContext
2番目の点は意外と重要で、pFilterContext が NULL の場合が初期化されていない状態と考えて大丈夫です。 過去に MS の Redmond の開発者からコードレビュー等も受けたことがありますので、ドキュメントされていないのですが大丈夫と考えてよいでしょう。 SF_STATUS_REQ_READ_NEXT
IIS 5 が HTTP のヘッダの折り返しをサポートしないので、その回避方法として HTTP ヘッダを 改変したことがあるのですが、その時にこの通知を利用したことで大変楽に実装できました。 | ||||||||||||||||||||
© 2008-2010 小山圭介 All Rights Reserved. |
|||||||||||||||||||||