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