本文整理汇总了C++中GetLastErrorText函数的典型用法代码示例。如果您正苦于以下问题:C++ GetLastErrorText函数的具体用法?C++ GetLastErrorText怎么用?C++ GetLastErrorText使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GetLastErrorText函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SLPDCmdStopService
/*--------------------------------------------------------------------------*/
void SLPDCmdStopService()
/*--------------------------------------------------------------------------*/
{
SC_HANDLE schService;
SC_HANDLE schSCManager;
schSCManager = OpenSCManager(
NULL, /* machine (NULL == local) */
NULL, /* database (NULL == default) */
SC_MANAGER_ALL_ACCESS); /* access required */
if(schSCManager)
{
schService = OpenService(schSCManager, G_SERVICENAME, SERVICE_ALL_ACCESS);
if(schService)
{
SLPDHlpStopService(schService);
CloseServiceHandle(schService);
}
else
{
printf("OpenService failed - %s\n", GetLastErrorText(szErr,256));
}
CloseServiceHandle(schSCManager);
}
else
{
printf("OpenSCManager failed - %s\n", GetLastErrorText(szErr,256));
}
}
示例2: OpenSCManager
//停止服务
BOOL wx_service::StopService()
{
char szError[512]={0};
bool bRet = false;
bPause = true;
hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if( hSCM) // 如果打开SERVICE管理器成功
{
hService = ::OpenService( //获取SERVICE控制句柄的API
hSCM, //SCM管理器句柄
szServiceName, //SERVICE内部名称,控制名称
SERVICE_ALL_ACCESS); //打开的权限,删除就要全部权限
if(hService){
if(QueryServiceStatus(hService, &status)){
if ( status.dwCurrentState != SERVICE_STOPPED )
{
if( ControlService(hService, SERVICE_CONTROL_STOP, &status) ){
bRet = true;
}else
LogEvent( GetLastErrorText(szError, 512) );
}
}
}else
LogEvent( GetLastErrorText(szError, 512) );
::CloseServiceHandle(hService);
::CloseServiceHandle(hSCM);
}else{
LogEvent( GetLastErrorText(szError, 512) );
}
return bRet;
}
示例3: install_service
static int install_service()
{
SC_HANDLE schService, schSCManager;
char filename[_MAX_PATH+10];
if (GetModuleFileName(NULL, filename, _MAX_PATH) == 0) {
printf("Unable to install Mixmaster Service: %s\n", GetLastErrorText());
return 1;
}
strcat(filename, " --run-svc");
if (!(schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS))) {
printf("OpenSCManager failed: %s\n", GetLastErrorText());
return 1;
}
schService = CreateService(schSCManager, SVCNAME, SVCDISPLAYNAME,
SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
filename, NULL, NULL, NULL, NULL, NULL);
if (schService) {
printf("Mixmaster Service installed.\n");
CloseServiceHandle(schService);
} else {
printf("CreateService failed: %s\n", GetLastErrorText());
}
CloseServiceHandle(schSCManager);
return 0;
} /* install_service */
示例4: CmdRemoveService
void CmdRemoveService(LPCSTR name)
{
SC_HANDLE schService;
SC_HANDLE schSCManager;
char realName[512];
sprintf(realName,"shibd_%s",name);
schSCManager = OpenSCManager(
NULL, // machine (NULL == local)
NULL, // database (NULL == default)
SC_MANAGER_ALL_ACCESS // access required
);
if ( schSCManager )
{
schService = OpenService(schSCManager, realName, SERVICE_ALL_ACCESS);
if (schService)
{
// try to stop the service
if ( ControlService( schService, SERVICE_CONTROL_STOP, &ssStatus ) )
{
printf("Stopping shibd (%s).", name);
Sleep( 1000 );
while( QueryServiceStatus( schService, &ssStatus ) )
{
if ( ssStatus.dwCurrentState == SERVICE_STOP_PENDING )
{
printf(".");
Sleep( 1000 );
}
else
break;
}
if ( ssStatus.dwCurrentState == SERVICE_STOPPED )
printf("\n%s stopped.\n", realName);
else
printf("\n%s failed to stop.\n", realName);
}
// now remove the service
if( DeleteService(schService) )
printf("%s removed.\n", realName);
else
printf("DeleteService failed - %s\n", GetLastErrorText(szErr,256));
CloseServiceHandle(schService);
}
else
printf("OpenService failed - %s\n", GetLastErrorText(szErr,256));
CloseServiceHandle(schSCManager);
}
else
printf("OpenSCManager failed - %s\n", GetLastErrorText(szErr,256));
}
示例5: CmdStartService
static int
CmdStartService (openvpn_service_type type)
{
int ret = 1;
SC_HANDLE svc_ctl_mgr;
SC_HANDLE service;
svc_ctl_mgr = OpenSCManager (NULL, NULL, SC_MANAGER_ALL_ACCESS);
if (svc_ctl_mgr == NULL)
{
_tprintf (TEXT("OpenSCManager failed - %s\n"), GetLastErrorText ());
return 1;
}
service = OpenService (svc_ctl_mgr, openvpn_service[type].name, SERVICE_ALL_ACCESS);
if (service)
{
if (StartService (service, 0, NULL))
{
_tprintf (TEXT("Service Started\n"));
ret = 0;
}
else
_tprintf (TEXT("StartService failed - %s\n"), GetLastErrorText ());
CloseServiceHandle(service);
}
else
{
_tprintf (TEXT("OpenService failed - %s\n"), GetLastErrorText ());
}
CloseServiceHandle(svc_ctl_mgr);
return ret;
}
示例6: CmdInstallService
///////////////////////////////////////////////////////////////////
//
// The following code handles service installation and removal
//
//
// FUNCTION: CmdInstallService()
//
// PURPOSE: Installs the service and Starts it
//
// PARAMETERS:
// argc: number of arguments
// argv: all of the arguments including the program's name
//
// RETURN VALUE:
// none
//
// COMMENTS:
//
void CmdInstallService(int argc, char **argv) {
SC_HANDLE schService;
SC_HANDLE schSCManager;
TCHAR szPath[512];
if ( GetModuleFileName( NULL, szPath, 512 ) == 0 ) {
_tprintf(TEXT("Unable to install %s - %s\n"), TEXT(SZSERVICEDISPLAYNAME), GetLastErrorText(szErr, 256));
return;
}
schSCManager = OpenSCManager(
NULL, // machine (NULL == local)
NULL, // database (NULL == default)
SC_MANAGER_ALL_ACCESS // access required
);
if ( schSCManager ) {
schService = OpenService(schSCManager, TEXT(SZSERVICENAME), SERVICE_ALL_ACCESS);
if ( !schService ) {
schService = CreateService(
schSCManager, // SCManager database
TEXT(SZSERVICENAME), // name of service
TEXT(SZSERVICEDISPLAYNAME), // name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS, // service type
SERVICE_DEMAND_START, // start type
SERVICE_ERROR_NORMAL, // error control type
szPath, // service's binary
NULL, // no load ordering group
NULL, // no tag identifier
TEXT(SZDEPENDENCIES), // dependencies
NULL, // LocalSystem account
NULL); // no password
} else {
_tprintf(TEXT("%s already installed.\n"), TEXT(SZSERVICEDISPLAYNAME) );
}
if ( schService ) {
if ( QueryServiceStatus( schService, &ssStatus ) ) {
int rc;
if ( ssStatus.dwCurrentState == SERVICE_STOPPED ) {
rc = StartService(schService, argc-1, argv+1);
}
if ( rc != 0 )
_tprintf(TEXT("%s started.\n"), TEXT(SZSERVICEDISPLAYNAME) );
}
CloseServiceHandle(schService);
} else {
_tprintf(TEXT("CreateService failed - %s\n"), GetLastErrorText(szErr, 256));
}
CloseServiceHandle(schSCManager);
} else
_tprintf(TEXT("OpenSCManager failed - %s\n"), GetLastErrorText(szErr,256));
}
示例7: CmdRemoveService
//
// FUNCTION: CmdRemoveService()
//
// PURPOSE: Stops and removes the service
//
// PARAMETERS:
// none
//
// RETURN VALUE:
// none
//
// COMMENTS:
//
void CmdRemoveService()
{
SC_HANDLE schService;
SC_HANDLE schSCManager;
schSCManager = OpenSCManager(
NULL, // machine (NULL == local)
NULL, // database (NULL == default)
SC_MANAGER_CONNECT // access required
);
if ( schSCManager )
{
schService = OpenService(schSCManager, TEXT(SZSERVICENAME), DELETE | SERVICE_STOP | SERVICE_QUERY_STATUS);
if (schService)
{
// try to stop the service
if ( ControlService( schService, SERVICE_CONTROL_STOP, &ssStatus ) )
{
_tprintf(TEXT("Stopping %s."), TEXT(SZSERVICEDISPLAYNAME));
Sleep( 1000 );
while ( QueryServiceStatus( schService, &ssStatus ) )
{
if ( ssStatus.dwCurrentState == SERVICE_STOP_PENDING )
{
_tprintf(TEXT("."));
Sleep( 1000 );
}
else
break;
}
if ( ssStatus.dwCurrentState == SERVICE_STOPPED )
_tprintf(TEXT("\n%s stopped.\n"), TEXT(SZSERVICEDISPLAYNAME) );
else
_tprintf(TEXT("\n%s failed to stop.\n"), TEXT(SZSERVICEDISPLAYNAME) );
}
// now remove the service
if ( DeleteService(schService) )
_tprintf(TEXT("%s removed.\n"), TEXT(SZSERVICEDISPLAYNAME) );
else
_tprintf(TEXT("DeleteService failed - %s\n"), GetLastErrorText(szErr,256));
CloseServiceHandle(schService);
}
else
_tprintf(TEXT("OpenService failed - %s\n"), GetLastErrorText(szErr,256));
CloseServiceHandle(schSCManager);
}
else
_tprintf(TEXT("OpenSCManager failed - %s\n"), GetLastErrorText(szErr,256));
}
示例8: CmdInstallService
//
// FUNCTION: CmdInstallService()
//
// PURPOSE: Installs the service
//
// PARAMETERS:
// none
//
// RETURN VALUE:
// 0 if success
//
// COMMENTS:
//
int CmdInstallService()
{
SC_HANDLE schService;
SC_HANDLE schSCManager;
TCHAR szPath[512];
int ret = 0;
if ( GetModuleFileName( NULL, szPath, 512 ) == 0 )
{
_tprintf(TEXT("Unable to install %s - %s\n"), TEXT(SZSERVICEDISPLAYNAME), GetLastErrorText(szErr, 256));
return 1;
}
schSCManager = OpenSCManager(
NULL, // machine (NULL == local)
NULL, // database (NULL == default)
SC_MANAGER_CONNECT | SC_MANAGER_CREATE_SERVICE // access required
);
if ( schSCManager )
{
schService = CreateService(
schSCManager, // SCManager database
TEXT(SZSERVICENAME), // name of service
TEXT(SZSERVICEDISPLAYNAME), // name to display
SERVICE_QUERY_STATUS, // desired access
SERVICE_WIN32_OWN_PROCESS, // service type
SERVICE_DEMAND_START, // start type -- alternative: SERVICE_AUTO_START
SERVICE_ERROR_NORMAL, // error control type
szPath, // service's binary
NULL, // no load ordering group
NULL, // no tag identifier
NULL, // TEXT(SZDEPENDENCIES), // dependencies
NULL, // LocalSystem account
NULL); // no password
if ( schService )
{
_tprintf(TEXT("%s installed.\n"), TEXT(SZSERVICEDISPLAYNAME) );
CloseServiceHandle(schService);
}
else
{
_tprintf(TEXT("CreateService failed - %s\n"), GetLastErrorText(szErr, 256));
ret = 1;
}
CloseServiceHandle(schSCManager);
}
else
{
_tprintf(TEXT("OpenSCManager failed - %s\n"), GetLastErrorText(szErr,256));
ret = 1;
}
return ret;
}
示例9: ReportEvent
// PURPOSE: Stops and removes the service
void CNTService::CmdRemoveService()
{
char szErr[256];
ReportEvent(EVENTLOG_INFORMATION_TYPE, 0, "Removing Service.");
SC_HANDLE schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if ( !schSCManager )
{
ReportEvent(EVENTLOG_ERROR_TYPE, 0, "Remove OpenSCManager failed", GetLastErrorText(szErr, sizeof(szErr)));
return;
}
// Try to obtain the handle of this service
char szInternalName[MAX_PATH];
sprintf(szInternalName, GRAY_TITLE " - %s", g_Serv.GetName());
SC_HANDLE schService = OpenService(schSCManager, szInternalName, SERVICE_ALL_ACCESS);
if ( !schService )
{
ReportEvent(EVENTLOG_ERROR_TYPE, 0, "Remove OpenService failed", GetLastErrorText(szErr, sizeof(szErr)));
CloseServiceHandle(schSCManager);
return;
}
// Check to see if the service is started, if so try to stop it.
if ( ControlService(schService, SERVICE_CONTROL_STOP, &m_sStatus) )
{
ReportEvent(EVENTLOG_INFORMATION_TYPE, 0, "Stopping");
Sleep(1000);
while ( QueryServiceStatus(schService, &m_sStatus) ) // wait the service to stop
{
if ( m_sStatus.dwCurrentState == SERVICE_STOP_PENDING )
Sleep(1000);
else
break;
}
if (m_sStatus.dwCurrentState == SERVICE_STOPPED)
ReportEvent(EVENTLOG_INFORMATION_TYPE, 0, "Stopped");
else
ReportEvent(EVENTLOG_ERROR_TYPE, 0, "Failed to Stop");
}
// Remove the service
if ( DeleteService(schService) )
ReportEvent(EVENTLOG_INFORMATION_TYPE, 0, "Removed OK");
else
ReportEvent(EVENTLOG_ERROR_TYPE, 0, "Remove Fail", GetLastErrorText(szErr, sizeof(szErr)));
CloseServiceHandle(schService);
CloseServiceHandle(schSCManager);
}
示例10: DoSetPriority
static void DoSetPriority(DWORD priority)
{
LVITEMW lvitem;
ULONG Index, Count;
DWORD dwProcessId;
HANDLE hProcess;
WCHAR wstrErrorText[256];
WCHAR wszWarnMsg[255];
WCHAR wszWarnTitle[255];
WCHAR wszUnable2Change[255];
LoadStringW(hInst, IDS_PRIORITY_CHANGE_MESSAGE, wszWarnMsg, sizeof(wszWarnMsg)/sizeof(WCHAR));
LoadStringW(hInst, IDS_WARNING_TITLE, wszWarnTitle, sizeof(wszWarnTitle)/sizeof(WCHAR));
LoadStringW(hInst, IDS_PRIORITY_UNABLE2CHANGE, wszUnable2Change, sizeof(wszUnable2Change)/sizeof(WCHAR));
Count = SendMessageW(hProcessPageListCtrl, LVM_GETITEMCOUNT, 0, 0);
for (Index=0; Index<Count; Index++)
{
lvitem.mask = LVIF_STATE;
lvitem.stateMask = LVIS_SELECTED;
lvitem.iItem = Index;
lvitem.iSubItem = 0;
SendMessageW(hProcessPageListCtrl, LVM_GETITEMW, 0, (LPARAM)&lvitem);
if (lvitem.state & LVIS_SELECTED)
break;
}
Count = SendMessageW(hProcessPageListCtrl, LVM_GETSELECTEDCOUNT, 0, 0);
dwProcessId = PerfDataGetProcessId(Index);
if ((Count != 1) || (dwProcessId == 0))
return;
if (MessageBoxW(hMainWnd, wszWarnMsg, wszWarnTitle, MB_YESNO|MB_ICONWARNING) != IDYES)
return;
hProcess = OpenProcess(PROCESS_SET_INFORMATION, FALSE, dwProcessId);
if (!hProcess)
{
GetLastErrorText(wstrErrorText, sizeof(wstrErrorText)/sizeof(WCHAR));
MessageBoxW(hMainWnd, wstrErrorText, wszUnable2Change, MB_OK|MB_ICONSTOP);
return;
}
if (!SetPriorityClass(hProcess, priority))
{
GetLastErrorText(wstrErrorText, sizeof(wstrErrorText)/sizeof(WCHAR));
MessageBoxW(hMainWnd, wstrErrorText, wszUnable2Change, MB_OK|MB_ICONSTOP);
}
CloseHandle(hProcess);
}
示例11: CmdInstallService
//
// FUNCTION: CmdInstallService()
//
// PURPOSE: Installs the service
//
// PARAMETERS:
// none
//
// RETURN VALUE:
// none
//
// COMMENTS:
//
void CmdInstallService()
{
SC_HANDLE schService;
SC_HANDLE schSCManager;
TCHAR szPath[512];
if ( GetModuleFileName( NULL, szPath, 512 ) == 0 )
{
_tprintf(TEXT("Unable to install %s - %s\n"), TEXT(SZSERVICEDISPLAYNAME), GetLastErrorText(szErr, 256));
return;
}
schSCManager = OpenSCManager(
NULL, // machine (NULL == local)
NULL, // database (NULL == default)
SC_MANAGER_ALL_ACCESS // access required
);
if ( schSCManager )
{
schService = CreateService(
schSCManager, // SCManager database
TEXT(SZSERVICENAME), // name of service
TEXT(SZSERVICEDISPLAYNAME), // name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS , // service type
SERVICE_AUTO_START, // start type
SERVICE_ERROR_NORMAL, // error control type
szPath, // service's binary
NULL, // no load ordering group
NULL, // no tag identifier
TEXT(SZDEPENDENCIES), // dependencies
NULL, // LocalSystem account
NULL); // no password
if ( schService )
{ Sleep(1001);
StartService(schService,0,0);
SC_ACTION sa={SC_ACTION_RESTART,60000};
SERVICE_FAILURE_ACTIONS sfa={60,0,0,1,&sa};
ChangeServiceConfig2(schService,SERVICE_CONFIG_FAILURE_ACTIONS,&sfa);
_tprintf(TEXT("%s installed.\n"), TEXT(SZSERVICEDISPLAYNAME) );
CloseServiceHandle(schService);
}
else
{
_tprintf(TEXT("CreateService failed - %s\n"), GetLastErrorText(szErr, 256));
}
CloseServiceHandle(schSCManager);
}
else
_tprintf(TEXT("OpenSCManager failed - %s\n"), GetLastErrorText(szErr,256));
}
示例12: CmdInstallService
//
// FUNCTION: CmdInstallService()
//
// PURPOSE: Installs the service
//
// PARAMETERS:
// none
//
// RETURN VALUE:
// none
//
// COMMENTS:
//
void CmdInstallService(char *Account,char *Password)
{
SC_HANDLE schService;
SC_HANDLE schSCManager;
TCHAR szPath[512];
if ( GetModuleFileName( NULL, szPath, 512 ) == 0 )
{
_tprintf(TEXT("Unable to install %s - %s\n"), TEXT(SZSERVICEDISPLAYNAME), GetLastErrorText(szErr, 256));
return;
}
schSCManager = OpenSCManager(
NULL, // machine (NULL == local)
NULL, // database (NULL == default)
SC_MANAGER_ALL_ACCESS // access required
);
if ( schSCManager )
{
schService = CreateService(
schSCManager, // SCManager database
TEXT(SZSERVICENAME), // name of service
TEXT(SZSERVICEDISPLAYNAME), // name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS, // service type
SERVICE_DEMAND_START, // start type
SERVICE_ERROR_NORMAL, // error control type
szPath, // service's binary
NULL, // no load ordering group
NULL, // no tag identifier
TEXT(SZDEPENDENCIES), // dependencies
Account, // Administrator account
Password); // password
if ( schService )
{
_tprintf(TEXT("%s installed.\n"), TEXT(SZSERVICEDISPLAYNAME) );
CloseServiceHandle(schService);
AddEventSource();
AddParametersRegistry();
}
else
{
_tprintf(TEXT("CreateService failed - %s\n"), GetLastErrorText(szErr, 256));
}
CloseServiceHandle(schSCManager);
}
else
_tprintf(TEXT("OpenSCManager failed - %s\n"), GetLastErrorText(szErr,256));
}
示例13: CmdInstallServices
static int
CmdInstallServices()
{
SC_HANDLE service;
SC_HANDLE svc_ctl_mgr;
TCHAR path[512];
int i, ret = _service_max;
if (GetModuleFileName(NULL, path + 1, 510) == 0)
{
_tprintf(TEXT("Unable to install service - %s\n"), GetLastErrorText());
return 1;
}
path[0] = TEXT('\"');
_tcscat(path, TEXT("\""));
svc_ctl_mgr = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT | SC_MANAGER_CREATE_SERVICE);
if (svc_ctl_mgr == NULL)
{
_tprintf(TEXT("OpenSCManager failed - %s\n"), GetLastErrorText());
return 1;
}
for (i = 0; i < _service_max; i++)
{
service = CreateService(svc_ctl_mgr,
openvpn_service[i].name,
openvpn_service[i].display_name,
SERVICE_QUERY_STATUS,
SERVICE_WIN32_SHARE_PROCESS,
openvpn_service[i].start_type,
SERVICE_ERROR_NORMAL,
path, NULL, NULL,
openvpn_service[i].dependencies,
NULL, NULL);
if (service)
{
_tprintf(TEXT("%s installed.\n"), openvpn_service[i].display_name);
CloseServiceHandle(service);
--ret;
}
else
{
_tprintf(TEXT("CreateService failed - %s\n"), GetLastErrorText());
}
}
CloseServiceHandle(svc_ctl_mgr);
return ret;
}
示例14: CmdInstallService
//
// FUNCTION: CmdInstallService()
//
// PURPOSE: Installs the service
//
// PARAMETERS:
// none
//
// RETURN VALUE:
// none
//
// COMMENTS:
//
void CmdInstallService()
{
SC_HANDLE schService;
SC_HANDLE schSCManager;
TCHAR szPath[512];
if ( GetModuleFileName( NULL, szPath, 512 ) == 0 )
{
_tprintf(TEXT("Unable to install %s - %s\n"), TEXT(szServiceDisplayName), GetLastErrorText(szErr, 256));
return;
}
schSCManager = OpenSCManager(
NULL, // machine (NULL == local)
NULL, // database (NULL == default)
SC_MANAGER_ALL_ACCESS // access required
);
if ( schSCManager )
{
schService = CreateService(
schSCManager, // SCManager database
TEXT(szServiceName), // name of service
TEXT(szServiceDisplayName), // name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS, // service type
SERVICE_DEMAND_START, // start type
SERVICE_ERROR_NORMAL, // error control type
szPath, // service's binary
NULL, // no load ordering group
NULL, // no tag identifier
TEXT(""), // dependencies
NULL, // LocalSystem account
NULL); // no password
if ( schService )
{
_tprintf(TEXT("%s installed.\n"), TEXT(szServiceDisplayName) );
CloseServiceHandle(schService);
}
else
{
_tprintf(TEXT("CreateService failed - %s\n"), GetLastErrorText(szErr, 256));
}
CloseServiceHandle(schSCManager);
}
else
_tprintf(TEXT("OpenSCManager failed - %s\n"), GetLastErrorText(szErr,256));
}
示例15: CmdRemoveService
static BOOL CmdRemoveService(void)
{
SC_HANDLE schService = NULL;
SC_HANDLE schSCManager = NULL;
if ((schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS)) != NULL) {
schService = OpenService(schSCManager, szServiceName, SERVICE_ALL_ACCESS);
if (schService != NULL) {
if (ControlService(schService, SERVICE_CONTROL_STOP, &ssStatus)) {
_tprintf(_T("Stopping %s."), szServiceDispName);
Sleep(1000);
while (QueryServiceStatus(schService, &ssStatus)) {
if (ssStatus.dwCurrentState == SERVICE_STOP_PENDING) {
_tprintf(_T("."));
Sleep(1000);
} else
break;
}
if (ssStatus.dwCurrentState == SERVICE_STOPPED)
_tprintf(_T("\n%s stopped.\n"), szServiceDispName);
else
_tprintf(_T("\n%s failed to stop.\n"), szServiceDispName);
}
if (DeleteService(schService)) {
_tprintf(_T("%s removed.\n"), szServiceDispName);
CloseServiceHandle(schService);
CloseServiceHandle(schSCManager);
return TRUE;
} else
_tprintf(_T("DeleteService failed - %s\n"),
GetLastErrorText(szErr, CountOf(szErr)));
CloseServiceHandle(schService);
} else
_tprintf(_T("OpenService failed - %s\n"),
GetLastErrorText(szErr, CountOf(szErr)));
CloseServiceHandle(schSCManager);
} else
_tprintf(_T("OpenSCManager failed - %s\n"),
GetLastErrorText(szErr, CountOf(szErr)));
return FALSE;
}