|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
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); }
|
|
|
|
| |