Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// File: smartsvc.hxx
//
// Contents: Smart service controller
//
// History: 01 May 1997 KyleP Created
//
//--------------------------------------------------------------------------
#pragma once
//
// smart pointer class for SC_HANDLEs
//
class CServiceHandle { public : CServiceHandle() { _h = 0; }
CServiceHandle( SC_HANDLE hSC ) : _h( hSC ) {}
~CServiceHandle() { Free(); }
void Set( SC_HANDLE h ) { _h = h; }
SC_HANDLE Get() { return _h; }
BOOL IsOk() { return (0 != _h); }
void Free() { if ( IsOk() ) CloseServiceHandle( _h ); _h = 0; }
private:
SC_HANDLE _h; };
//+-------------------------------------------------------------------------
//
// Function: WaitForSvc
//
// Synopsis: Stops a given service
//
// Arguments: xSC -- the service control manager
// pwcSVC -- name of the service to stop
//
// Returns: TRUE if the service was stopped
//
// History: 8-Jan-97 dlee Created
//
//--------------------------------------------------------------------------
inline BOOL WaitForSvc( CServiceHandle &x ) { SERVICE_STATUS svcStatus; if ( QueryServiceStatus( x.Get(), &svcStatus ) ) return SERVICE_STOP_PENDING == svcStatus.dwCurrentState || SERVICE_RUNNING == svcStatus.dwCurrentState || SERVICE_PAUSED == svcStatus.dwCurrentState;
return FALSE; } //WaitForSvc
|