windows win32 c++/c services服務編寫sample demo
阿新 • • 發佈:2018-12-02
windows的服務程式不是簡單的寫一個console控制檯程式然後加入服務就能執行成功的,需要遵循一定的程式碼規範,程式需要與系統的 SCM 互動,否則就會剛執行就被系統停止
兩個windows 服務程式的sample demo
the-complete-service-sample–Microsoft
使用 C++ 編寫的基礎 Windows 服務
可以對照以上使用windows api編寫,以下簡單總結windows服務程式
服務程式總體看就是一個console控制檯程式,服務 install (CreateService,含使用GetModuleFileName獲取的當前應用程式檔案路徑,可以加啟動引數,路徑有空格需要 引號 包起來) 到 SCM (service control manager database)後開始啟動服務,每次服務開始啟動,都會從main開始(無引數)執行,然後呼叫 StartServiceCtrlDispatcher 去開始找到服務entry point執行入口開始函式
所以一般都加個 在main中處理類似install引數,去安裝或解除安裝服務。
服務程式是由SCM管理,main 裡面呼叫 StartServiceCtrlDispatcher 之後,SCM 才能知道你對應的事件(Start, Stop, Pause, Continue, and Shutdown)的執行函式