Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при вызове StartServiceCtrlDispatcher, Написание сервиса 
:(
    Опции темы
devmstr
Дата 18.4.2005, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



Что я делаю не так?


Код

#include <windows.h>

#define SERVICE_NAME "PowerService"

SERVICE_STATUS          ServiceStatus; 
SERVICE_STATUS_HANDLE   ServiceStatusHandle; 


VOID WINAPI  ServiceMain (DWORD argc, LPTSTR *argv); 
VOID WINAPI  ServiceCtrlHandler (DWORD code);

VOID ServiceInitialization();

int WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, INT nCmdShow)
{
    SERVICE_TABLE_ENTRY DispatchTable[]= 
   { 
      { SERVICE_NAME, ServiceMain     }, 
      { NULL,              NULL          } 
   }; 

    if (!StartServiceCtrlDispatcher(DispatchTable))
    {
        MessageBox(NULL,"Service's register dispatch error","Error",MB_OK|MB_ICONERROR); //Все время перехожу сюда!!!
        return 1;
    }
    
}



VOID WINAPI  ServiceMain (DWORD argc, LPTSTR *argv)
{
    ServiceStatus.dwServiceType                = SERVICE_WIN32;
    ServiceStatus.dwServiceSpecificExitCode = 0;
    ServiceStatus.dwWin32ExitCode            = 0;
    ServiceStatus.dwCheckPoint                = 0;
    ServiceStatus.dwControlsAccepted        = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_PAUSE_CONTINUE;
    ServiceStatus.dwWaitHint                = 0;
    ServiceStatus.dwCheckPoint                = SERVICE_START_PENDING;

    ServiceStatusHandle    = RegisterServiceCtrlHandler(SERVICE_NAME,ServiceCtrlHandler);

    if (ServiceStatusHandle == (SERVICE_STATUS_HANDLE)0)
    {
        MessageBox(NULL,"Service's register error","Error",MB_OK|MB_ICONERROR);
        return;
    }

    ServiceInitialization();

    ServiceStatus.dwCurrentState    = SERVICE_RUNNING;
    ServiceStatus.dwCheckPoint        = 0;
    ServiceStatus.dwWaitHint        = 0;


    MessageBox(NULL,"Ok","Ok",MB_OK|MB_ICONINFORMATION);
}

VOID WINAPI  ServiceCtrlHandler (DWORD code)
{
    switch(code) 
    { 
      case SERVICE_CONTROL_PAUSE: 
      // Do whatever it takes to pause here. 
         ServiceStatus.dwCurrentState = SERVICE_PAUSED; 
         break; 
 
      case SERVICE_CONTROL_CONTINUE: 
      // Do whatever it takes to continue here. 
         ServiceStatus.dwCurrentState = SERVICE_RUNNING; 
         break; 
 
      case SERVICE_CONTROL_STOP: 
      // Do whatever it takes to stop here. 
         ServiceStatus.dwWin32ExitCode = 0; 
         ServiceStatus.dwCurrentState  = SERVICE_STOPPED; 
         ServiceStatus.dwCheckPoint    = 0; 
         ServiceStatus.dwWaitHint      = 0; 

         if (!SetServiceStatus (ServiceStatusHandle, &ServiceStatus))
         { 
             MessageBox(NULL,"Service's set status error","Error",MB_OK|MB_ICONERROR);
             return;
         } 
   } 
   return; 

}


VOID ServiceInitialization()
{

}





[/code]

Это сообщение отредактировал(а) magician - 18.4.2005, 09:49


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0401 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.