RES: RES: [firebase-br] Processo Firebird Server consumindo CPU

Marcio Morais otherpan em yahoo.com.br
Sex Mar 18 17:36:46 -03 2005


Essa função abaixo eu utilizo para registrar um serviço desenvolvido por 
mim no win XP, para compilar é só usar o Mingw, se prefirirem podem 
utilizar o Dev-C++ que quebra um galho.

Note que no cabeçalho se encontra o caminho do exe do serviço o nome e a 
ser exibido e o nome do serviço propriamente dito, não se vai qual exe 
que tem q declara do firebird, mas talvez dê para ajudar.

Se tiverem dificuldades, posso depois compilar com uma interface grafica 
e mandar para interessados.

[]'s
Marcio Morais


/***********************************************************************************************/
#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <Winsvc.h>
#include <tchar.h>

SERVICE_STATUS m_ServiceStatus;
SERVICE_STATUS_HANDLE m_ServiceStatusHandle;
BOOL bRunning=1;
void WINAPI ServiceMain(DWORD argc, LPTSTR *argv);
void WINAPI ServiceCtrlHandler(DWORD Opcode);
BOOL InstallService();
BOOL DeleteService();
LPCTSTR   lpszDisplayName="a_Marcio_service";
LPCTSTR   lpszServiceName="marcio_service";
LPCTSTR   szPath="C:\\Dev-Cpp\\servico.exe";

//-------------------------------------------------------------------------------------------------------------------------------
BOOL InstallService()
{
  char strDir[1024];
  HANDLE schSCManager,schService;
  GetCurrentDirectory(1024,strDir);

  schSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);

  if (schSCManager == NULL)
    return 0;

  schService = CreateService(
     schSCManager,
     lpszServiceName,
     lpszDisplayName, // service 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
     NULL, // no dependencies
     NULL, // LocalSystem account
     NULL); // no password

  if (schService == NULL)
    return 0;

  CloseServiceHandle(schService);
  return 0;
}
//-------------------------------------------------------------------------------------------------------------------------------
BOOL DeleteService()
{
  HANDLE schSCManager;
  SC_HANDLE hService;

  schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);

  if (schSCManager == NULL) { return 0; }

  hService=OpenService(schSCManager,lpszServiceName,DELETE);

  if (hService == NULL) { return 0; }

  if(! DeleteService(hService)) { return 0; }

  if(CloseServiceHandle(hService)==0) { return 0; }

return 1;
}
//-------------------------------------------------------------------------------------------------------------------------------
int main(int argc, char* argv[])
{
  if(argc>1)
  {
    if(strcmp(argv[1],"-i")==0)
    {
      if(InstallService())
        printf("\n\nService Installed Sucessfully\n");
      else
        printf("\n\nError Installing Service\n");
    }
    if(strcmp(argv[1],"-d")==0)
    {
      if(DeleteService())
        printf("\n\nService UnInstalled Sucessfully\n");
      else
        printf("\n\nError UnInstalling Service\n");
    }
    else
    {
      printf("\n\nUnknown Switch Usage\n\nFor Install use Srv1 -i\n\nFor 
UnInstall use Srv1 -d\n");
    }
  }
  else
  {
    SERVICE_TABLE_ENTRY DispatchTable[]= 
{{lpszDisplayName,ServiceMain},{NULL,NULL}};
    StartServiceCtrlDispatcher(DispatchTable);
  }
  return 0;
}

/**********************************************************************************************/




Pablo Madi Dias escreveu:

>	Eu já procurei bastante, mas não encontrei nada referente a isto
>também...
>
>-----Mensagem original-----
>De: Carlos H. Cantu [mailto:listas em warmboot.com.br]
>Enviada em: sexta-feira, 18 de março de 2005 16:34
>Para: FireBase
>Assunto: Re: RES: [firebase-br] Processo Firebird Server consumindo CPU
>
>
>Acho que sim... de uma procurada na Internet pra saber como registrar
>um serviço no windows. Eu acredito que vc dá o nome que quiser pra
>ele.
>
>[]s
>Cantu
>http://www.warmboot.com.br
>FireBase - http://www.FireBase.com.br
>
>
>PMD>         Cantu, o problema é que o sistema não fui eu quem desenvolveu,
>e não
>PMD> tenho os fontes... será que existiria alguma maneira de registrar o
>serviço
>PMD> do firebird 1.5.2 como Firebird Server, ao invés de "Firebird Server -
>PMD> Default Instance" ?
>
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>Esta mensagem, incluindo seus anexos, pode conter informações privilegiadas
>e/ou de caráter confidencial, não podendo ser retransmitida sem autorização
>do remetente. Se você não é o destinatário ou pessoa autorizada a recebê-la,
>informamos que o seu uso, divulgação, cópia ou arquivamento são proibidos.
>Portanto, se você recebeu esta mensagem por engano, por favor, nos informe
>respondendo imediatamente a este e-mail e em seguida apague-a.
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>
>  
>







Mais detalhes sobre a lista de discussão lista