環境変数の意味を勘違いされてますね。
■ISAPI側の「SetEnvironmentVariable」はプラットフォームSDK用のAPI、すなわちWindows OSに定義されている環境変数を設定するときに使用するものです。
(例:PATHとか、TEMP等)
■ASP側の「Request.ServerVariables」は、HTTPやWebサーバー(IIS)固有の環境変数を取得する時に使用するものです。
(例:SERVER_NAME、REMOTE_ADDR等)
なので、そもそも「環境変数」の意味が違う(というか参照している場所が物理的に違う)、
いくらISAPI側で、「SetEnvironmentVariable」しても
ASP側でその環境変数を取得することはできません。
という前提をいれた上で、どこに環境変数を設定し、取得したいのでしょうか?
というのをまずは整理してから、ご質問下さい。
1.Webサーバー上に登録されているWindows OSの環境変数を設定&取得したいのか?
2.Webサーバー固有(IIS)で参照される環境変数を設定&取得したいのか?
恐らく私の想像だと、2.なのかなと思いますが、もし、2.であれば、
HttpFilterContextのメソッドに、AddResponseHeadersというメソッドがあるので、
そいつを使えば、できたと思います。(SF_NOTIFY_PREPROC_HEADERSのタイミングでいけると思います)
DWORD MyClass::OnPreprocHeaders(CHttpFilterContext *pfc,
PHTTP_FILTER_PREPROC_HEADERS pHeaders)
{ char env_value[1024];
long env_value_len = 1024;
pHeaders->AddHeader( pfc->m_pFC, "envname:", "bbb" );
pHeaders->GetHeader( pfc->m_pFC, "envname:", env_value, &env_value_len);
}
動作確認していないので、これでいけるのか保障はありませんが、もし動かないとかあれば、またご相談ください。