#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#define SLEEP_TIME 5000
#define FILE_PATH "D:\\用戶目錄\\我的檔案\\Visual Studio 2013\\Projects\\ServiceTest\\ServiceTest\\log.txt"
SERVICE_STATUS Service_Status;
SERVICE_STATUS_HANDLE hService_Status;
BOOL bStatus = FALSE;
DWORD ErrorCode;
MEMORYSTATUS* AvaliableMem = { 0 };
int nSize;
char RealMem[1024] = { 0 };
void WINAPI ServiceMain(DWORD dwArgc,LPTSTR *lpszArgv);
void WINAPI ServiceCtrlHandler(DWORD flag);
int WriteToLog(char* log,DWORD ErrorCode)
{
FILE *hFile;
hFile = fopen(FILE_PATH, "a+");
if (hFile == NULL)
{
return -1;
}
else
{
fprintf(hFile, "%s\n Error Code :%d", log,ErrorCode);
fclose(hFile);
}
return 0;
}
void main(int argc, char* argv[])
{
SERVICE_TABLE_ENTRY Service_Table_Entry[2];
Service_Table_Entry[0].lpServiceName = "Demo";
Service_Table_Entry[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTIONA)ServiceMain;
Service_Table_Entry[1].lpServiceName = NULL;
Service_Table_Entry[1].lpServiceProc = NULL;
StartServiceCtrlDispatcher(Service_Table_Entry);
//if (StartServiceCtrlDispatcher(Service_Table_Entry)==FALSE)
//{
// ErrorCode=GetLastError();
// WriteToLog("StartServiceCtrlDispatcher失敗!\n",ErrorCode);
//}
}
void WINAPI ServiceMain(DWORD dwArgc, LPTSTR *lpszArgv)
{
Service_Status.dwServiceType = SERVICE_WIN32;
Service_Status.dwWaitHint = 0;
Service_Status.dwWin32ExitCode = 0;
Service_Status.dwControlsAccepted = SERVICE_ACCEPT_SHUTDOWN | SERVICE_ACCEPT_STOP;
Service_Status.dwCurrentState = SERVICE_START_PENDING;
Service_Status.dwCheckPoint = 0;
Service_Status.dwServiceSpecificExitCode = 0;
hService_Status = RegisterServiceCtrlHandler("Demo", ServiceCtrlHandler);
if (hService_Status==NULL)
{
ErrorCode = GetLastError();
WriteToLog("RegisterServiceCtrlHandler失敗!\n",0);
}
else
{
Service_Status.dwCurrentState = SERVICE_RUNNING;
}
SetServiceStatus(hService_Status, &Service_Status);
bStatus = TRUE;
while (bStatus)
{
GlobalMemoryStatus(AvaliableMem);
nSize = AvaliableMem->dwAvailPhys / 1024 / 1024;
sprintf_s(RealMem, 1024, "Avaliable Memory Is %d Mb", nSize);
WriteToLog(RealMem,0);
Sleep(SLEEP_TIME);
}
}
void WINAPI ServiceCtrlHandler(DWORD flag)
{
switch (flag)
{
case SERVICE_ACCEPT_SHUTDOWN:
bStatus = FALSE;
Service_Status.dwCurrentState = SERVICE_ACCEPT_SHUTDOWN;
break;
case SERVICE_ACCEPT_STOP:
bStatus = FALSE;
Service_Status.dwCurrentState = SERVICE_ACCEPT_STOP;
break;
default:
break;
}
SetServiceStatus(hService_Status, &Service_Status);
}
這個為什么啟動的時候第一次可以啟動 然后重繪后就又不行了 然后再重現啟動顯示 錯誤1067 行程意外終止 希望有師傅可以幫忙看看 解答下 謝謝啦~
uj5u.com熱心網友回復:
The Complete Service Sampleuj5u.com熱心網友回復:
你服務啟動后有沒有進入Run回圈uj5u.com熱心網友回復:
FILE_PATH "D:\\用戶目錄\\我的檔案\\Visual Studio 2013\\Projects\\ServiceTest\\ServiceTest\\log.txt"看看windows 系統日志, 有對這個檔案的寫入權限嗎
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/106609.html
標籤:硬件/系統
上一篇:MFC串口16進制接收問題
