●HSE_REQ_SEND_URL: 重定向到本服务器上的一个URL,Buffer: 指向一重定向目标 URL字符串;DataType被忽略。
●HSE_REQ_SEND_RESPONSE_HEADER:发送响应头部给用户;Buffer: 指向包含头部的 字符串;DataType被忽略。
●HSE_REQ_DONE_WITH_SESSION: 通知服务器, 异步的请求处理已经完成。 Size, Buffer,DataType均被忽略。
●HSE_REQ_MAP_URL_TO_PATH: 映射一个逻辑路径到一个物理路径。Buffer:映射在 此缓冲区上完成;DataType被忽略。
HttpExtensionProc()函数的返回值必须使以下四个值(在Isapi2.hpp中定义)中的一个:
●HSE_STATUS_SUCCESS:所有进程已完成。
●HSE_STATUS_SUCCESS_AND_KEEP_CONN:所有进程已经完成,但希望保持连接以继 续进一步的交互。
●HSE_STATUS_PENDING: 进程未完成。 当扩展异步完成进程时, 将以参数 HSERRequest=HSE_REQ_DONE_WITH_SESSION调用ServerSupportFunction(),以提醒服务 器进程已完成。
●HSE_STATUS_ERROR:进程由于错误已异常终止。
清单3包含了处理一个"Hello World"网页请求的简单 但必要的逻辑。
---------清单3------------------------
int _export WINAPI HttpExtensionProc(Isapi2::TEXTENSION_CONTROL_BLOCK &ECB)
{
char my_string[256];
int length;
strcpy(my_string,"200 OK/r/nContext-Type:text/html");
length=strlen(my_string);
ECB.dwHttpStatusCode=200;
ECB.ServerSupportFunction(ECB.ConnID, HSE_REQ_SEND_RESPONSE_HEADER, my_string,length,NULL);//发送头部 strcpy(my_string,"Hello World!");
length=strlen(my_string);
ECB.WriteClient(ECB.ConnID,my_string,length,0); //发送数据给客户浏览器
return(HSE_STATUS_SUCCESS);
}
这是一个简单的例子,实际应用的ISAPI扩展将需要做比这更多的工作。
与GetExtenVersion()函数和TerninateExtension()函数不同,HttpExtensionProc ()函数对用户的行为产生作用。
1.3 TerminateExtension()函数
TerminateExtension() 函数在用户将卸载DLL时被调用,它是可选择的。传入参数 为dwFlages,类型为int,是以下两个值(在Isapi2.hpp中定义)中的一个:
保留:: http://www.qqread.com/bcb/d349884.html相关专题
- C/C++技术专题 (1640篇文章)
- Wlan组网----家庭专题 (4217篇文章)
- C/C++进阶技术文档 (821篇文章)
- C/C++应用实例 (104篇文章)
- C/C++相关文章 (130篇文章)
- 数字小键盘指法练习 (5501次浏览)
- 用WinSock控件编写网络聊天器 (2638次浏览)
- C++Builder注册表编程实例详解 (1568次浏览)
- C++ Builder VCL库函数简介 (1348次浏览)
- 在 C++ Builder中利用串行通信控件编程 (1213次浏览)
- C++ Builder中消息处理过程及应用 (1038次浏览)
- 将指定目录的结构装入TreeView中 (990次浏览)
- 用C++ Builder3 制作记事本 (818次浏览)
- Windows多线程间同步事件的控制方法 (787次浏览)
- C++Builder开发Web应用程序 (746次浏览)



