NTサービスプログラムについて
現在、NTサービスのプログラミングを行っているのですが、SCMへ状態を通知するSetServiceStatus()で必ずエラーが発生し困っています。
原因をご存知の方はいらっしゃらないでしょうか?
/////////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hThisInst,HINSTANCE hPrevInst,LPTSTR lpszArgs,int nCmdShow)
{
// エントリテーブルの初期化
SERVICE_TABLE_ENTRY dispatchTable[] =
{
{ "TEST SERVICE", (LPSERVICE_MAIN_FUNCTION)ServiceMain},
{ NULL, NULL }
};
//
// レジストリにデータを格納する関数をコール
//
// dispatchTableで設定したサービスを提供することをSCMに通知
StartServiceCtrlDispatcher(dispatchTable);
}
////////////////////////////////////////////////////////////////////////
SERVICE_STATUS_HANDLE sshStatusHandle;
void WINAPI ServiceMain(DWORD dwArgc, LPTSTR *lpszArgv)
{
static DWORD dwCheckPoint = 1;
// 制御ハンドラの登録
sshStatusHandle = RegisterServiceCtrlHandler("TEST SERVICE",ServiceCtrl);
ssStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
ssStatus.dwServiceSpecificExitCode = 0;
ssStatus.dwControlsAccepted = 0;
ssStatus.dwCheckPoint = dwCheckPoint++;
// SCMへ通知
SetServiceStatus( sshStatusHandle, &ssStatus);
// サービススタート
ServiceStart(dwArgc,lpszArgv );
// サービス停止をSCMに通知
return;
}