На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Starting a Service



To start a service, the following example opens a handle to an installed database and then specifies the handle in a call to the StartService function. It can be used to start either a service or a driver service, but this example assumes that a service is being started. After starting the service, the program uses the members of the SERVICE_STATUS structure returned by the QueryServiceStatus function to track the progress of the service.

VOID StartSampleService()
{
SERVICE_STATUS ssStatus;
DWORD dwOldCheckPoint;

schService = OpenService(
schSCManager, // SCM database
TEXT("Sample_Srv"), // service name
SERVICE_ALL_ACCESS);

if (schService == NULL)
MyErrorExit("OpenService");

if (!StartService(
schService, // handle to service
0, // number of arguments
NULL) ) // no arguments

{
MyErrorExit("StartService");
}
else
printf("Service start pending\n");

// Check the status until the service is running.

if (!QueryServiceStatus(
schService, // handle to service
&ssStatus) ) // address of status information
MyErrorExit("QueryServiceStatus");

while (ssStatus.dwCurrentState != SERVICE_RUNNING)
{
// Save the current checkpoint.

dwOldCheckPoint = ssStatus.dwCheckPoint;


// Wait for the specified interval.

Sleep(ssStatus.dwWaitHint);

// Check the status again.

if (!QueryServiceStatus(
schService, // handle to service
&ssStatus) ) // address of status information
break;

// Break if the checkpoint has not been incremented.

if (dwOldCheckPoint >= ssStatus.dwCheckPoint)
break;
}

if (ssStatus.dwCurrentState == SERVICE_RUNNING)

printf("StartService SUCCESS\n");
else
{
printf("\nService not started: \n");
printf(" Current State: %d\n",
ssStatus.dwCurrentState);
printf(" Exit Code: %d\n", ssStatus.dwWin32ExitCode);
printf(" Service Specific Exit Code: %d\n",
ssStatus.dwServiceSpecificExitCode);
printf(" Check Point: %d\n", ssStatus.dwCheckPoint);
printf(" Wait Hint: %d\n", ssStatus.dwWaitHint);

}

CloseServiceHandle(schService);
}



Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Начинающий с Услуги



Чтобы начинать с услуги, следующий пример открывает ручку включенной базе данных затем определяет ручку на вызове в функцию StartService. Может быть использовано, чтобы запускать или услуга или драйверная услуга, но этот пример допускает что услуга запускается. После запуска услуги, программа использует участников структуры SERVICE_STATUS возвращанной функцией QueryServiceStatus, чтобы прослеживать прогресс услуги.

ПУСТОТА StartSampleService()
{
SERVICE_STATUS ssStatus;
DWORD dwOldCheckPoint;

schService = OpenService( schSCManager, // База данных ТЕКСТА SCM("Sample_Srv"), // имя услуги SERVICE_ALL_ACCESS);

если (schService == НЕДЕЙСТВИТЕЛЬНЫЙ) MyErrorExit("OpenService");

если (!StartService( schService, // РУЧКА, чтобы обслуживать 0, // количество аргументов НЕДЕЙСТВИТЕЛЬНОЕ) ) // никакие аргументы

{
MyErrorExit("StartService");
}
еще
printf(начало "Service pending\n");

// Проверьте статус пока услуга не будет работать.

если (!QueryServiceStatus( schService, // РУЧКА, чтобы услуга &ssStatus) ) // адрес информации статуса MyErrorExit("QueryServiceStatus");

пока (ssStatus.dwCurrentState != SERVICE_RUNNING)
{
// Сохраняемый текущая контрольная точка.

dwOldCheckPoint = ssStatus.dwCheckPoint;


// Ожидание определенный интервал.

Сон(ssStatus.dwWaitHint);

// Проверьте статус снова.

если (!QueryServiceStatus( schService, // РУЧКА, чтобы услуга &ssStatus) ) // адрес информационного прерывания статуса;

// Прерывание если контрольная точка не увеличена.

если прерывание (dwOldCheckPoint >= ssStatus.dwCheckPoint);
}

если (ssStatus.dwCurrentState == SERVICE_RUNNING)

printf("StartService SUCCESS\n");
еще
{
printf("\nService не запущенный: \n");
printf(" Текущее Состояние: %d\n", ssStatus.dwCurrentState);
printf(" Выходной Код: %d\n", ssStatus.dwWin32ExitCode);
printf(" Специфический Выходной Код Услуги: %d\n", ssStatus.dwServiceSpecificExitCode);
printf(" Контрольная Точка: %d\n", ssStatus.dwCheckPoint);
printf(" Намек Ожидания: %d\n", ssStatus.dwWaitHint);

}

CloseServiceHandle(schService);
}



Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz