服務框架原始碼

2021-08-22 16:07:01 字數 2472 閱讀 2611

#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 ...