|
// *********************************************************
// 停止中かどうか
// 戻り値 : true 停止中, false 停止中では無い(またはエラー)
// *********************************************************
BOOL LboxNTService::IsStopped( LboxString *LService )
{
return LboxNTService::IsStopped(
LService->szLboxString
);
}
BOOL LboxNTService::IsStopped( LPTSTR lpService )
{
SC_HANDLE hSCManager;
SC_HANDLE hService;
hSCManager = OpenSCManager(
this->lpMachineName,
NULL,
SC_MANAGER_ALL_ACCESS
);
if ( hSCManager == NULL ) {
return false;
}
hService = OpenService(
hSCManager,
lpService,
SERVICE_QUERY_STATUS
);
CloseServiceHandle( hSCManager );
if ( hService == NULL ) {
return false;
}
SERVICE_STATUS sc_sts;
BOOL bRet;
bRet = QueryServiceStatus( hService, &sc_sts );
if ( !bRet ) {
CloseServiceHandle( hService );
return false;
}
bRet = false;
if ( sc_sts.dwCurrentState == SERVICE_STOPPED ) {
bRet = true;
}
CloseServiceHandle( hService );
return bRet;
}
| |