經(jīng)過多天的努力 終于搞定了ISAPI 并不是完全搞定 符合自己的需求了
目前先寫這些 看不懂的話 留言 我只會(huì)WINCE6.0 PB用的是6 其他的不懂了
需求WINCE 里面搭建個(gè)類似IIS 發(fā)布網(wǎng)站 做類似路由的網(wǎng)頁(yè) 更改IP或者其他的
方式1、 用CGI 必須移植goahead
方式2、 用ISAPI 系統(tǒng)添加組件后支持
方式3、 COM組件
我用的是ISAPI方式實(shí)現(xiàn)的
WINCE 自帶web服務(wù)器 但是不支持ASP 所以添加組件讓他來支持ASP
參考 http://zxffl.blog.163.com/blog/static/25909762010102475353451/ wince6.0 web開發(fā)
圖1
002
主要修改的的是以上2個(gè)圖的內(nèi)容
這個(gè)是tracker.dll
咱們自己修改tracker.dll中的內(nèi)容
例如
看這里 判斷URL中有沒有修改IP 有的話自己修改了 這里用的是修改注冊(cè)表的方法
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; }
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
