`
wsql
  • 浏览: 11957960 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

WINCE ISAPI CGI ASP 小结

 
阅读更多

经过多天的努力 终于搞定了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;
	}


分享到:
评论

相关推荐

    ISAPI.rar_DEMO_WINCE isapi_goahead_isapi post_wince post

    3. **性能优化**:由于ISAPI扩展运行在Web服务器进程中,相比于CGI(Common Gateway Interface),ISAPI通常有更高的性能和更低的资源消耗。 4. **安全性增强**:ISAPI可以实现更精细的安全控制,比如访问权限验证、...

    ISAPI 和 CGI 限制.pdf

    ISAPI (Internet Server Application Programming Interface) 和 CGI (Common Gateway Interface) 是两种常见的Web服务器扩展技术,用于在Internet Information Services (IIS) 上运行外部应用程序,从而处理HTTP...

    WINCE web isapi实例开发详解

    ### WINCE Web ISAPI实例开发详解 #### 一、引言 Windows CE(简称WinCE)作为微软针对嵌入式设备推出的操作系统,其轻量级特性非常适合移动设备及小型化计算机系统的应用需求。在WinCE环境下进行Web开发时,ISAPI...

    WINCE+web+ISAPI实例开发详解

    在WINCE环境下,由于资源限制,我们可能需要选择轻量级的Web框架,如ASP.NET Core的嵌入式版本,或者使用简单的CGI(Common Gateway Interface)脚本来处理动态请求。 最后,安全性和稳定性是任何Web服务开发的重要...

    ISAPI实用技术指南ISAPI

    ISAPI实用技术指南ISAPI

    HIKVISION ISAPI_2_Hikvision_HikvisionISAPI_海康isapi_ISAPI_SDK

    标题中的“HIKVISION ISAPI_2_Hikvision_HikvisionISAPI_海康isapi_ISAPI_SDK”指的是海康威视(HIKVISION)提供的一个ISAPI接口开发包,这是针对其网络视频监控设备(如IP摄像头)的软件开发工具包。ISAPI,全称是...

    ISAPI 实用技术指南

    11. **扩展阅读**:可能还会提及其他相关技术,如ASP.NET、CGI和FastCGI,以便对比和理解ISAPI在Web服务器扩展中的位置和优势。 通过《ISAPI实用技术指南》,开发者可以深入理解ISAPI的工作机制,并具备开发高效、...

    ISAPI入门配置和程序-手把手教你用VC写ISAPI程序

    相比于传统的CGI(Common Gateway Interface),ISAPI在性能和效率上具有明显的优势。 ### 一、ISAPI简介 ISAPI是一种为IIS服务器设计的应用编程接口,它允许开发者创建DLL动态链接库文件,这些DLL可以在IIS服务器...

    易语言开发ISAPI脚本解释例程

    ISAPI扩展通常用于创建高性能、低级别的Web应用程序,它们直接与IIS服务器内核交互,提供比基于CGI(Common Gateway Interface)或者更高级别的Web框架如ASP.NET更快的响应速度。ISAPI扩展可以处理HTTP请求,执行...

    ISAPI 介绍

    相比于传统的 CGI(通用网关接口)方式,ISAPI 能够更加有效地管理资源并提供更丰富的功能。 #### ISAPI 的核心概念 ##### 1. **ISAPI 扩展 (ISA)** - **定义**:ISA 是一种 DLL 形式的程序,可以被 HTTP 服务器...

    IsApi 中文帮助手册

    ISApi 中文帮助手册 ISApi rewrite 是一款强大的 URL 复写工具,可以轻松地配置 URL 的伪静态地址,并实现 URL 重定向。下面将详细介绍 ISApi rewrite 的配置和使用方法。 ISApi rewrite 的配置文件 -------------...

    isapi实用技术 ISAPI FILTER

    ISAPI(Internet Server Application Programming Interface)是微软提供的一种用于扩展IIS(Internet Information Services)功能的API,它允许开发者创建高性能的Web服务器应用程序。ISAPI Filter则是ISAPI的一个...

    ASP-ISAPI通用防注入过滤器 v1.0

    一个基于IIS系统的组件,其拥有强大的防ASP注入功能.能在ASP程序本身存在注入漏洞的情况下防御注入攻击。同时它还具备防数据库下载、防止数据库扩展名被修改为asp后插入ASP语句攻击等功能。内核全部采用C++编写,...

    ISAPI_Rewrite3完美破解版

    ISAPI_Rewrite3是一款由Helicon Tech公司开发的高效且功能强大的URL重写工具,专为IIS(Internet Information Services)服务器设计。这个组件允许Web开发者通过使用类似Apache mod_rewrite的规则,来管理和控制网站...

    ISAPI filter,ISAPI Extension,delphi的一套ISAPI封装,for delphi2010

    ISAPI(Internet Server Application Programming Interface)是微软提供的一种用于扩展Web服务器功能的接口,它允许开发者编写DLL(动态链接库)来扩展IIS(Internet Information Services)的功能,比如处理HTTP...

    isapi_redirect-1.2.14

    描述中提到了"**isapi_redirect-1.2.14.exe**"和"**isapi_redirect.dll**"这两个文件。`isapi_redirect-1.2.14.exe`是一个可执行文件,用于在Windows系统上安装ISAPI_Redirect模块。它包含了必要的组件和配置工具,...

    ISAPI.rar_ISAPI_get post_isapi post

    ISAPI与CGI(Common Gateway Interface)类似,但ISAPI的性能更高,因为它是在内核模式下运行,而CGI是在用户模式下运行的。 在你提供的"ISAPI.rar"压缩包中,有两个主要的知识点:ISAPI GET请求处理和ISAPI POST...

    wince6.0下web开发(二)

    在标题中提到的“wince6.0下web开发(二)之VS2005开发ISAPI”,涉及的知识点包括了在Windows CE 6.0操作系统中使用Visual Studio 2005开发环境进行Web开发,并且具体关注于ISAPI(Internet Server Application ...

    ISAPI_2.0-PTZ Service.pdf

    ISAPI 2.0-PTZ 服务规范详解 ISAPI 2.0-PTZ 服务规范是基于 IP 监控 API 的 PTZ 服务规范,旨在为 PTZ 设备提供统一的控制和管理接口。本文将详细介绍 ISAPI 2.0-PTZ 服务规范的主要内容和技术要点。 1. 简介 ...

Global site tag (gtag.js) - Google Analytics