#include
<
stdio.h
>
#include
<
windows.h
>
service_statusm_servicestatus;
service_status_handlem_servicestatushandle;
boolbrunning
=true
;void
winapiservicemain(dwordargc,lptstr
*argv);
//服務主函式
void
winapiservicectrlhandler(dwordopcode);
//服務控制函式
void
winapicmdstart(
void
);//
要啟動的程式函式
boolinstallservice();
//安裝服務的函式
booldeleteservice();
//刪除服務的函式
intmain(
intargc,
char
*argv)
if(strcmp(argv[1],
"-install")
==0)///
install
else
if(strcmp(argv[1],
"-remove")
==0)//
remove
else
//在進入點函式裡面要完成servicemain的初始化,
//準確點說是初始化乙個service_table_entry結構陣列,
//這個結構記錄了這個服務程式裡面所包含的所有服務的名稱
//和服務的進入點函式
service_table_entry
dispatchtable
=,};
//最後的null指明陣列的結束
startservicectrldispatcher(dispatchtable);
return0;
}void
winapiservicemain(dwordargc,lptstr
*argv)
void
winapiservicectrlhandler(dwordopcode)
//服務控制函式
return;}
boolinstallservice()
//安裝服務函式
lpctstrlpszbinarypathname
=strdir;
schservice
=createservice(schscmanager,
"windowsmgr",
"windowsmangercontrol",
//將服務的資訊新增到scm的資料庫
service_all_access,
//desiredaccess
service_win32_own_process,
//servicetype
service_auto_start,
//starttype
service_error_normal,
//errorcontroltype
lpszbinarypathname,
//service'sbinary
null,
//noloadorderinggroup
null,
//notagidentifier
null,
//nodependencies
null,
//localsystemaccount
null);
//nopassword
if(schservice
==null)
closeservicehandle(schservice);
return
true;}
booldeleteservice()
hservice
=openservice(schscmanager,
"windowsmgr
",service_all_access);
if(hservice
==null)
if(deletefile(chsyspath)==0
)else
printf(
"deletefileok! ");
if(deleteservice(hservice)==0
)return
false;if
(closeservicehandle(hservice)==0
)return
false
;else
return
true;}
void
winapicmdstart(
void)
微服務框架原始碼解析
springboot 自動配置主要通過 enableautoconfiguration,conditional,enableconfigurationproperties 或者 configurationproperties 等幾個註解來進行自動配置完成的。enableautoconfigurati...
spring原始碼框架
2.bean容器 讀取到bean的定義後,例項化bean,把bean資訊存放到容器 通過如下 進行例項化 class type field.gettype object o type.getconstructor newinstance 3.例項化以後不會直接放進容器,可以對例項化的bean進行增強...
Node框架Express原始碼
主檔案 function url.parse req.url,true let requestmethod req.method.tolowercase let i 0 function next err let layer 取出來的路徑 可能是正則型別 if err else else else ...