私は初めて Windows サービスに取り組んでおり、いくつかの努力の結果、C++ でプログラムによってサービスをインストールおよびアンインストールできるようになりました。ServiceMain および ServiceControlHandler 関数の処理方法をガイドする多くのチュートリアルを見つけました。問題は、最初にサービスをインストールし、次に同じプログラムで ServiceMain および ServiceControlHandler 関数を適用することを示すチュートリアルがないことです。
つまり、両方の機能を同じコードに統合しようとしていますが、機能していません。
ここに私がたどったいくつかのリンクがあります
http://www.codeproject.com/Articles/499465/Simple-Windows-Service-in-Cplusplus
http://www.devx.com/cplus/Article/9857/0/page/2
http://msdn.microsoft.com/en-us/library/ms683500(v=vs.85).aspx
私のソース コードは、SERVICE_TABLE_ENTRY を作成して StartServiceCtrlDispatcher(ServiceTable) を呼び出す前に、サービスをインストールする関数を呼び出したことを除いて、上記の例のほぼ正確なコピーです。
サービスは正しくインストールされますが、実行が開始されることはありません。実際、ServiceMain が呼び出されることはありません。
環境: Windows 7 64 ビット言語 C++ Visual Studio 2008