//c/c++编写window服务的授权服务(二)
//定义授权服务的头文件LicenseService.h
#pragma once
//建立工程:win32控制平台应用程序
//LicenseService.cpp
//用C/C++编写的Window服务一例
//安装与反安装批处理.bat
//方法一:
//echo sc delete LicenseService
//echo sc create LicenseService binpath= E:\Debug\LicenseService.exe
//方法二:
//LicenseService.exe uninstall
//LicenseService.exe install
//LicenseService.exe exec
#include <winsock2.h>
#include <windows.h>
#include <stdio.h>
#include <iostream>
//#include <comdef.h>
#include <tchar.h>
#include <comutil.h>
#pragma comment(lib,"WS2_32.lib")
#define SLEEP_TIME 5000
#define LogFileName "LicenseService.txt"
#define MAX_PENDING_CONNECTS 4
using namespace std;
char* ServiceName="LicenseService";
enum EnumRunState
{
None=0,
Running=1,
Stoped=2,
Pause=3,
};
EnumRunState RunState;
WCHAR* CharPtr2ACharPtr(const char* src);
int WriteToLog(char* str);
char* GetCurDir(void);
char* CurExeDir; //全局变量当前可执行文件所在目录
int ReplaceStr(char *sSrc, char *sMatchStr, char *sReplaceStr);
char* UnionStr(const char* A,const char* B);
bool EqStr(const char* A,const char* B);
bool IsNumber(string str);
char* WinApi_Year_Month_Day();
//日期比较函数
unsigned long Compare_To_Date(char* datetime1,char* datetime2);
unsigned long Compare_To_Current_Date(char* datetime);
unsigned long Validate_Date(char* date,unsigned short * year,unsigned short * month,unsigned short * day);
//获取机器码函数
char* GetMachineCode(void);
char* GetCpuId(void);
char* md5(char* src);
//有使用权函数
bool IsLencense(void);
//获取ServerConfig.ini参数函数
bool GetServerConfig_ini(void);
//------------------------------------------
//定义文件操作的函数
//属性
FILE* fp;
char* filepath;
//方法
bool OpenFile(void);
int EndFile(void);
char* NextLine(void);
int CloseFile(void);
//------------------------------------------
//ServerConfig.ini
//服务器配置文件的全局参数变量
char* host;
char* port;
char* todate;
char* code;
//------------------------------------------
//定义变量和方法
SERVICE_STATUS ServiceStatus;
SERVICE_STATUS_HANDLE hStatus;
HANDLE terminateEvent; //事件
HANDLE threadHandle; //线程
//定义服务器控制函数
void ServiceMain(int argc,char** argv);
void ControlHandler(DWORD request);
//开始主机+端口监听函数 //Socket监听程序函数
void StartHostPortListen(char* ipaddr,int port);
DWORD WINAPI HandleSocket(LPVOID lpParam); //处理Socket请求函数
//
int InitService();
BOOL RunService(WCHAR* sSvcName);
VOID ResumeService();
VOID PauseService();
VOID StopService();
VOID terminate(DWORD error);
//
BOOL SendStatusToSCM (DWORD dwCurrentState,
DWORD dwWin32ExitCode,
DWORD dwServiceSpecificExitCode,
DWORD dwCheckPoint,
DWORD dwWaitHint);
//
void InstallService();
void UninstallService();
//
DWORD WINAPI ServiceThread(LPDWORD param);
//---the--end----