經過多天的努力 終于搞定了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;
}
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

