2012年10月3日水曜日

今時廃れた ISAPI Extension dll ではまる。

 Visual Studio 2005 から IIS の ISAPI Extension のウィザードが消失しました。しかし、一応 CHttpServer が残ってたんで、そっちを使ってたんですが、リソースのロードができない。 デバッガで追ってると、AfxGetResourceHandle() が NULL を返してきます。なんじゃこれ? DLLMain は既に定義されていて、自前で、ここの制御が不可能な状態に持ってきて、hInstance が、どこにも保存されていないなんて、何の罰ゲームだよ?とぼやきながら、なんやかんやと、半日潰しました(環境整えたり、原因調べたりで)。  結局、Hoge.dll という ISAPI Extension だったとすると、
  static HINSTANCE g_hInstance;
  HINSTANCE AhoGetResourceHandle() { return g_hInstance; }
...

  CHogeExtension::CHogeExtension() {
    ...
    g_hInstance = GetModuleHandle("hoge.dll");
  }
と、こんな感じの対応でいけました。

0 件のコメント: