@1 定義全域性變數。主要為設定服務控制代碼和狀態。
@2 新增init初始化函式。
@3 新增安裝和刪除服務函式。
@4 新增服務主線程函式和控制函式。
@5 在主線程函式裡註冊控制函式和程式執行主體
@6 在 main主函式內註冊新增安裝,刪除,註冊主函式。
大致的主函式:
int apientry winmain(hinstance hinstance,
hinstance hprevinstance,lpstr lpcmdline,int ncmdshow),};
if (stricmp(lpcmdline, "/install") == 0)
else if (stricmp(lpcmdline, "/uninstall") == 0)
else
}return 0;
}建立服務函式為:
sc_handle createservice(
sc_handle hscmanager, //服務控制管理程式維護的登記資料庫的控制代碼,由系統函式openscmanager 返回
lpctstr lpservicename, //以null 結尾的服務名,用於建立登記資料庫中的關鍵字
lpctstr lpdisplayname, //以null 結尾的服務名,用於使用者介面標識服務
dword dwdesiredaccess, //指定服務返回型別
dword dwservicetype, //指定服務型別
dword dwstarttype, //指定何時啟動服務
dword dwerrorcontrol, //指定服務啟動失敗的嚴重程度
lpctstr lpbinarypathname, //指定服務程式二進位制檔案的路徑
lpctstr lploadordergroup, //指定順序裝入的服務組名
lpdword lpdwtagid, //忽略,null
lpctstr lpdependencies, //指定啟動該服務前必須先啟動的服務或服務組
lpctstr lpservicestartname, //以null 結尾的字串,指定服務帳號。如是null,則表示使用localsystem 帳號
lpctstr lppassword //以null 結尾的字串,指定對應的口令。為null表示無口令。但使用localsystem時填null
開啟服務函式為:
sc_handle winapi openservice(_in_ sc_handle hscmanager,
_in_ lpctstr lpservicename,
_in_ dword dwdesiredaccess
);
具體詳略檢視msdn文件。
停止服務函式為:
bool winapi controlservice(
_in_ sc_handle hservice,
_in_ dword dwcontrol,
_out_ lpservice_status lpservicestatus
);刪除服務函式為:
bool winapi deleteservice(
_in_ sc_handle hservice
);
MVS編寫MFC應用程式知識點總結
hinstance和hwnd的區別 二者都是表示控制代碼,前者是應用程式的控制代碼,後者是視窗的控制代碼。程序中的每個dll模組被全域性唯一的32位元組的hinstance控制代碼標識,只有在特定的程序內部有效,控制代碼代表了dll模組在虛擬空間中的其實位址。在win32中,hinstance和hm...
關於MongoDB的一點總結
今天推送引擎註冊在dubbo上的服務總是自動會關閉掉,查了一下發現是system.in.read 的原因,導致自動關閉。但是還是不太明白,別人執行spring的時候,只要啟動以後就不會自動關閉,而我的spring剛啟動就關閉了,找了半天都沒有解決,沒辦法,只好用了最笨的方法 while true 而...
關於演算法的一點總結
分解問題的角度 fix 某一維度,嘗試另一維度上的所有可能 a.可能是array的 i,j pointers,b.可能是矩形的長與寬,c.可能是tree的每乙個subtree,d.可能是情景題的每一對pair 求所有解的,暴力上backtracking吧 如果問最短 最少的,先想bfs dp這對好 ...