经过多天的努力 终于搞定了ISAPI 并不是完全搞定 符合自己的需求了
目前先写这些 看不懂的话 留言 我只会WINCE6.0 PB用的是6 其他的不懂了
需求WINCE 里面搭建个类似IIS 发布网站 做类似路由的网页 更改IP或者其他的
方式1、 用CGI 必须移植goahead
方式2、 用ISAPI 系统添加组件后支持
方式3、 COM组件
我用的是ISAPI方式实现的
WINCE 自带web服务器 但是不支持ASP 所以添加组件让他来支持ASP
参考 http://zxffl.blog.163.com/blog/static/25909762010102475353451/ wince6.0 web开发
图1
002
主要修改的的是以上2个图的内容
这个是tracker.dll
咱们自己修改tracker.dll中的内容
例如
看这里 判断URL中有没有修改IP 有的话自己修改了 这里用的是修改注册表的方法
if (strstr(lpEcb->lpszQueryString,"修改IP"))
{
//此处写修改IP的代码
// Dump the log
strcpy(outbuf, "content-type: text/html\r\n\r\n");
outbuflen = strlen(outbuf);
lpEcb->ServerSupportFunction(lpEcb->ConnID,
HSE_REQ_SEND_RESPONSE_HEADER,
NULL,
&outbuflen,
(LPDWORD)outbuf);
LPCTSTR lp_Path=TEXT("Comm\\DM9CE1\\Parms\\TcpIp");
LPCTSTR lp_Key=TEXT("IpAddress");
LPCTSTR lp_Val=TEXT("192.168.1.235");
bool bOk=false;
HKEY hKEY;
DWORD type_1=REG_SZ;
long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE, lp_Path, 0, KEY_WRITE,&hKEY));
if(ret0==ERROR_SUCCESS)
{
long ret1=::RegSetValueEx(hKEY, lp_Key, NULL, type_1, (LPBYTE)lp_Val, 100);
if(ret1==ERROR_SUCCESS)
{
::RegCloseKey(hKEY);
bOk=true;
}
}
if (bOk)
{
strcpy(outbuf,"<HTML><TITLE>IIS Tracker Log zhangsan</TITLE></HTML> \n\
<H1>192.168.1.235 修改成功</H1> \n\
<hr>\n");
}
else
{
strcpy(outbuf,"<HTML><TITLE>IIS Tracker Log zhangsan</TITLE></HTML> \n\
<H1>修改IP失败</H1> \n\
<hr>\n");
}
strlen(lp_Path);
//strcpy(outbuf,"<HTML><TITLE>IIS Tracker Log zhangsan</TITLE></HTML> \n\
// <H1>IIS Tracker Log 2012-0315</H1> \n\
// <hr>\n");
outbuflen = strlen(outbuf);
lpEcb->WriteClient(lpEcb->ConnID,
outbuf,
&outbuflen,
HSE_IO_SYNC);
EnterCriticalSection(&LogCS);
if (pLogStart > pLogStop)
{
DWORD firstbuflen = ((DWORD)pLogBuff + dwLogBuffSize) - (DWORD)pLogStart;
DWORD secondbuflen = (DWORD)pLogStop - (DWORD)pLogBuff;
DWORD outbuflen = firstbuflen + secondbuflen;
char *pOutput = (char*)HeapAlloc(GetProcessHeap(), 0, outbuflen);
memcpy(pOutput, pLogStart, firstbuflen);
memcpy(pOutput + firstbuflen, pLogBuff, secondbuflen);
LeaveCriticalSection(&LogCS);
lpEcb->WriteClient(lpEcb->ConnID,
pOutput,
&outbuflen,
HSE_IO_SYNC);
HeapFree(GetProcessHeap(), 0, pOutput);
}
else
{
outbuflen = (DWORD)pLogStop - (DWORD)pLogStart;
char *pOutput = (char*)HeapAlloc(GetProcessHeap(), 0, outbuflen);
memcpy(pOutput, pLogStart, outbuflen);
LeaveCriticalSection(&LogCS);
lpEcb->WriteClient(lpEcb->ConnID,
pOutput,
&outbuflen,
HSE_IO_SYNC);
HeapFree(GetProcessHeap(), 0, pOutput);
}
strcpy(outbuf, "\n</html>");
outbuflen = strlen(outbuf);
lpEcb->WriteClient(lpEcb->ConnID,
outbuf,
&outbuflen,
HSE_IO_SYNC);
return HSE_STATUS_SUCCESS;
}
if (strstr(lpEcb->lpszQueryString, "View"))
{
// Dump the log
strcpy(outbuf, "content-type: text/html\r\n\r\n");
outbuflen = strlen(outbuf);
lpEcb->ServerSupportFunction(lpEcb->ConnID,
HSE_REQ_SEND_RESPONSE_HEADER,
NULL,
&outbuflen,
(LPDWORD)outbuf);
strcpy(outbuf,"<HTML><TITLE>IIS Tracker Log</TITLE></HTML> \n\
<H1>IIS Tracker Log</H1> \n\
<hr>\n");
outbuflen = strlen(outbuf);
lpEcb->WriteClient(lpEcb->ConnID,
outbuf,
&outbuflen,
HSE_IO_SYNC);
EnterCriticalSection(&LogCS);
if (pLogStart > pLogStop)
{
DWORD firstbuflen = ((DWORD)pLogBuff + dwLogBuffSize) - (DWORD)pLogStart;
DWORD secondbuflen = (DWORD)pLogStop - (DWORD)pLogBuff;
DWORD outbuflen = firstbuflen + secondbuflen;
char *pOutput = (char*)HeapAlloc(GetProcessHeap(), 0, outbuflen);
memcpy(pOutput, pLogStart, firstbuflen);
memcpy(pOutput + firstbuflen, pLogBuff, secondbuflen);
LeaveCriticalSection(&LogCS);
lpEcb->WriteClient(lpEcb->ConnID,
pOutput,
&outbuflen,
HSE_IO_SYNC);
HeapFree(GetProcessHeap(), 0, pOutput);
}
else
{
outbuflen = (DWORD)pLogStop - (DWORD)pLogStart;
char *pOutput = (char*)HeapAlloc(GetProcessHeap(), 0, outbuflen);
memcpy(pOutput, pLogStart, outbuflen);
LeaveCriticalSection(&LogCS);
lpEcb->WriteClient(lpEcb->ConnID,
pOutput,
&outbuflen,
HSE_IO_SYNC);
HeapFree(GetProcessHeap(), 0, pOutput);
}
strcpy(outbuf, "\n</html>");
outbuflen = strlen(outbuf);
lpEcb->WriteClient(lpEcb->ConnID,
outbuf,
&outbuflen,
HSE_IO_SYNC);
return HSE_STATUS_SUCCESS;
}
if (strstr(lpEcb->lpszQueryString, "Clear"))
{
EnterCriticalSection(&LogCS);
pLogStart = pLogStop = pLogBuff;
LeaveCriticalSection(&LogCS);
Stamp(0);
strcpy(outbuf, "<FONT SIZE=+2> Log cleared.</FONT>\n");
LogWrite(outbuf, strlen(outbuf));
LogConfig();
strcpy(outbuf, "content-type: text/html\r\n\r\n");
outbuflen = strlen(outbuf);
lpEcb->ServerSupportFunction(lpEcb->ConnID,
HSE_REQ_SEND_RESPONSE_HEADER,
NULL,
&outbuflen,
(LPDWORD)outbuf);
strcpy(outbuf,"<HTML> \n\
<HEAD> \n\
<TITLE>IIS Tracker Utility</TITLE> \n\
</HEAD> \n\
<BODY> \n\
<H1>IIS Tracker Utility</H1> \n\
<H2>Log Successfully Cleared</H2>\n");
outbuflen = strlen(outbuf);
lpEcb->WriteClient(lpEcb->ConnID,
outbuf,
&outbuflen,
HSE_IO_SYNC);
ShowConfig(lpEcb);
strcpy(outbuf, "</BODY></HTML>");
outbuflen = strlen(outbuf);
lpEcb->WriteClient(lpEcb->ConnID,
outbuf,
&outbuflen,
HSE_IO_SYNC);
return HSE_STATUS_SUCCESS;
}
分享到:
相关推荐
3. **性能优化**:由于ISAPI扩展运行在Web服务器进程中,相比于CGI(Common Gateway Interface),ISAPI通常有更高的性能和更低的资源消耗。 4. **安全性增强**:ISAPI可以实现更精细的安全控制,比如访问权限验证、...
ISAPI (Internet Server Application Programming Interface) 和 CGI (Common Gateway Interface) 是两种常见的Web服务器扩展技术,用于在Internet Information Services (IIS) 上运行外部应用程序,从而处理HTTP...
### WINCE Web ISAPI实例开发详解 #### 一、引言 Windows CE(简称WinCE)作为微软针对嵌入式设备推出的操作系统,其轻量级特性非常适合移动设备及小型化计算机系统的应用需求。在WinCE环境下进行Web开发时,ISAPI...
在WINCE环境下,由于资源限制,我们可能需要选择轻量级的Web框架,如ASP.NET Core的嵌入式版本,或者使用简单的CGI(Common Gateway Interface)脚本来处理动态请求。 最后,安全性和稳定性是任何Web服务开发的重要...
ISAPI实用技术指南ISAPI
标题中的“HIKVISION ISAPI_2_Hikvision_HikvisionISAPI_海康isapi_ISAPI_SDK”指的是海康威视(HIKVISION)提供的一个ISAPI接口开发包,这是针对其网络视频监控设备(如IP摄像头)的软件开发工具包。ISAPI,全称是...
11. **扩展阅读**:可能还会提及其他相关技术,如ASP.NET、CGI和FastCGI,以便对比和理解ISAPI在Web服务器扩展中的位置和优势。 通过《ISAPI实用技术指南》,开发者可以深入理解ISAPI的工作机制,并具备开发高效、...
相比于传统的CGI(Common Gateway Interface),ISAPI在性能和效率上具有明显的优势。 ### 一、ISAPI简介 ISAPI是一种为IIS服务器设计的应用编程接口,它允许开发者创建DLL动态链接库文件,这些DLL可以在IIS服务器...
ISAPI扩展通常用于创建高性能、低级别的Web应用程序,它们直接与IIS服务器内核交互,提供比基于CGI(Common Gateway Interface)或者更高级别的Web框架如ASP.NET更快的响应速度。ISAPI扩展可以处理HTTP请求,执行...
相比于传统的 CGI(通用网关接口)方式,ISAPI 能够更加有效地管理资源并提供更丰富的功能。 #### ISAPI 的核心概念 ##### 1. **ISAPI 扩展 (ISA)** - **定义**:ISA 是一种 DLL 形式的程序,可以被 HTTP 服务器...
ISApi 中文帮助手册 ISApi rewrite 是一款强大的 URL 复写工具,可以轻松地配置 URL 的伪静态地址,并实现 URL 重定向。下面将详细介绍 ISApi rewrite 的配置和使用方法。 ISApi rewrite 的配置文件 -------------...
ISAPI(Internet Server Application Programming Interface)是微软提供的一种用于扩展IIS(Internet Information Services)功能的API,它允许开发者创建高性能的Web服务器应用程序。ISAPI Filter则是ISAPI的一个...
一个基于IIS系统的组件,其拥有强大的防ASP注入功能.能在ASP程序本身存在注入漏洞的情况下防御注入攻击。同时它还具备防数据库下载、防止数据库扩展名被修改为asp后插入ASP语句攻击等功能。内核全部采用C++编写,...
ISAPI_Rewrite3是一款由Helicon Tech公司开发的高效且功能强大的URL重写工具,专为IIS(Internet Information Services)服务器设计。这个组件允许Web开发者通过使用类似Apache mod_rewrite的规则,来管理和控制网站...
ISAPI(Internet Server Application Programming Interface)是微软提供的一种用于扩展Web服务器功能的接口,它允许开发者编写DLL(动态链接库)来扩展IIS(Internet Information Services)的功能,比如处理HTTP...
描述中提到了"**isapi_redirect-1.2.14.exe**"和"**isapi_redirect.dll**"这两个文件。`isapi_redirect-1.2.14.exe`是一个可执行文件,用于在Windows系统上安装ISAPI_Redirect模块。它包含了必要的组件和配置工具,...
ISAPI与CGI(Common Gateway Interface)类似,但ISAPI的性能更高,因为它是在内核模式下运行,而CGI是在用户模式下运行的。 在你提供的"ISAPI.rar"压缩包中,有两个主要的知识点:ISAPI GET请求处理和ISAPI POST...
在标题中提到的“wince6.0下web开发(二)之VS2005开发ISAPI”,涉及的知识点包括了在Windows CE 6.0操作系统中使用Visual Studio 2005开发环境进行Web开发,并且具体关注于ISAPI(Internet Server Application ...
ISAPI 2.0-PTZ 服务规范详解 ISAPI 2.0-PTZ 服务规范是基于 IP 监控 API 的 PTZ 服务规范,旨在为 PTZ 设备提供统一的控制和管理接口。本文将详细介绍 ISAPI 2.0-PTZ 服务规范的主要内容和技术要点。 1. 简介 ...