用C++Builder开发ISAPI扩展应用程序
xtensionProc () 函数返回前,在此放置HTTP状态码, //参见HTTP1.0规范定义 char lpszLogData[80]; //接收一记录信息字符串 char *lpszMethod; //命名请求方式的字符串的指针 char *lpszQueryString; //含一个GET请求查询的字符串指针 char *lpszPathInfo; //请求的字符串的指针 char *lpszPathTranslated; //把请求的字符串指针翻译为服务器的物理路径 unsigned cbTotalBytes; //请求中字节的全部数目 unsigned cbAvailable; //lpbData缓冲区长度 void *lpbData; //POST请求的数据缓冲区指针 char *lpszContentType; //识别请求的MIME内容类型的指针 TGetServerVariableProc GetServerVariable; /*检索服务器变量值的回调函数指针*/ TWriteClientProc WriteClient; //写数据给用户的回调函数的指针 TReadClientProc ReadClient; //检索用户数据的回调函数指针 TServerSupportFunctionProc ServerSupportFunction; /*支持其他操作的回调函数指针*/ } 这种结构包含服务请求和回调函数指针所需得信息,你可以调用它来获取信息或执 行操作,下面对其中的回调函数作一说明: (1)GetServerVariable函数 原型为: typedef BOOL _stdcall (*TgetServerVarableProc) (int hConn,*VariableName, void *Buff,int &Size); 调用这个函数来获取服务器变量(如CONTEXT_TYPE)和同请求一起收到的头部。如通 过请求, 则得到HTTP_COOKIE来检索Cookies头部的内容。参数说明:hConn为传入参数 ECB的连接句柄ConnID;VariableName为要检索的变量的名字(如HTTP_COOKIE);Buffer为 接收变量的缓冲区指针;Size为缓冲区大小,若由于缓冲区空间不够而失败,该值被改 变为必要的缓冲区大小。 (2)WriteClient函数 原型为: typedef BOOL _stdcall (*TWriteClientProc) (int ConnID,void *Buffer,int & Bytes,int dwReserver) 调用这个函数来发送响应内容给用户, 参数说明:ConnID为传入参数ECB中的连接 句柄ConnID; Buffer为包含写数据缓冲区的指针; Bytes为缓冲区数据的字节数; dwReserver保留。 (3)ReadClient函数 原型为: typedef BOOL _stdcall (*TReadClientProc) (int ConnID, void *Buffer,int & Size) 调用这个函数读取用户的附加数据,通过检验ECB中cbAvailable和cbTotalBytes的 值来确定是否调用此函数, 若cbTotalBytes大于cbAvailable;就表明有更多的数据需 要调用该函数去读取。 参数说明:ConnID为传入参数ECB中的连接句柄ConnID;Buffer 为读入数据存放的缓冲区;Size在调用时,传入Buffer缓冲区的大小,返回时,等于实 际读取的字节数。 (4)ServerSupportFunction函数 原型为: typedef BOOL _stdcall (*TServerSupportFunctionProc) (int hConn, int HSERRequest,void buffer,int &Size,PDWORD DataType); 这个函数实现其他一些操作,参数说明:hConn为传入参数ECB的连接句柄ConnID, HSERRequest为要实现操作的常量值。Size为Buffer缓冲区的大小,Buffer缓冲区指针; DataType为数据类型指针;其中Buffer和DataType的含义根据HSERRequest的值变化。 下面说明这个函数的几个主要操作(也就是HSERRequest的可用值,在Isapi2.hpp中 定义),以及对应不同的操作,参数Buffer,Size,DataType的不同含义: ●HSE_REQ_SEND_URL_REDIRECT_RESP: 重定向客户浏览器到另一个网址上的URL。 Buffer:指向一重定向目标URL字符串;DataType被忽略。 ●HSE_REQ_SEND_URL: 重定向到本服务器上的一个URL,Buffer: 指向一重定向目 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |