使用ISAI EXTENSION开发IIS5.1插件

之前一直没做过服务器插件,前段使用用到这个技术,写出来供像我一样的新手看看。

 

作IIS服务器插件可以使用microsoft 提供的ISAPI FITER(过滤器) 和ISAPI EXTENSION(扩展)两种方式,

 

开发方式都差不多,这里只介绍ISAPI EXTENSION.

 

我用的是vs2005开发,很多人都问vs2005或以上版本没有像vc6那样的创建ISAPI 应用程序的向导怎么办,

 

MSDN介绍ISAPI的文档提到入口点函数(entry-point function),研究了下,觉得如果以dll形式提供插件,

 

应该就是利用vs2005创建一个动态链接库项目进行那几个入口点函数重写的过程吧。

 

于是新建一个dll工程,在dll.cpp定义msdn提到的那几个入口点函数:

 

1.BOOL WINAPI GetExtensionVersion( HSE_VERSION_INFO *pVer )

{

//这里可以把版本信息写入pVer结构体。

 

//最后返回TRUE,如果返回FALSE,IIS不会加载该插件。

 

}

 

 

2. DWORD WINAPI HttpExtensionProc( LPEXTENSION_CONTROL_BLOCK lpECB )

{

 

//这里写你的程序主体代码,一般会用到lpECB结构内的数据和函数,

//如lpEBC->GetServerVariable,lpEBC->WriteClient等

 

//如果使用同步方式读写数据,处理完成后可以返回 HSE_STATUS_SUCCESS

//如果使用异步步方式读写数据,调用WriteClient后可以返回 HSE_STATUS_PENDING,这时需要使用

ServerSupportFunction函数设置回调函数来处理异步数据。

}

 

3.BOOL WINAPI TerminateExtension( DWORD dwFlags )

{

  //retrun TRUE;

}

 

 

完成后到处dll,放到IIS5.1的目录下(可以自己新建一个虚拟目录),在目录应用程序配置中添加dll就OK了。

 

最后如果有知道如何调试的朋友麻烦指点一下,谢谢,我使用vs2005“附加到进程” 功能到dllHOSt和Intonet几个进程都

 

无法调试。

 

 

 

 

你可能感兴趣的:(Microsoft,服务器,dll,IIS,extension,winapi)