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

Pablo Madi Dias pablo.dias em telemar.com.br
Ter Mar 22 11:12:29 -03 2005


	Márcio, compilei a função que você passou, mas está apresentando
alguns erros... será que vc podeia me dar uma ajuda? 

	Alguem que saiba C sabe o porque desse erro? Sei que é
incompatibilidade de tipos, no momento da conversão, mas como resolver?

	Segue o log do compilador:

Compiler: Default compiler
Executing  g++.exe...
g++.exe "C:\RegServ.cpp" -o "C:\RegServ.exe"
-I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include"
-I"C:\Dev-Cpp\include\c++\3.4.2\backward"
-I"C:\Dev-Cpp\include\c++\3.4.2\mingw32"  -I"C:\Dev-Cpp\include\c++\3.4.2"
-I"C:\Dev-Cpp\include"   -L"C:\Dev-Cpp\lib" 
C:\RegServ.cpp: In function `BOOL InstallService()':
C:\RegServ.cpp:43: error: invalid conversion from `void*' to `SC_HANDLE__*'
C:\RegServ.cpp:43: error:   initializing argument 1 of `SC_HANDLE__*
CreateServiceA(SC_HANDLE__*, const CHAR*, const CHAR*, DWORD, DWORD, DWORD,
DWORD, const CHAR*, const CHAR*, DWORD*, const CHAR*, const CHAR*, const
CHAR*)' C:\RegServ.cpp:48: error: invalid conversion from `void*' to
`SC_HANDLE__*' C:\RegServ.cpp:48: error:   initializing argument 1 of `BOOL
CloseServiceHandle(SC_HANDLE__*)' C:\RegServ.cpp: In function `BOOL
DeleteService()':
C:\RegServ.cpp:61: error: invalid conversion from `void*' to `SC_HANDLE__*'
C:\RegServ.cpp:61: error:   initializing argument 1 of `SC_HANDLE__*
OpenServiceA(SC_HANDLE__*, const CHAR*, DWORD)' C:\RegServ.cpp: In function
`int main(int, char**)':
C:\RegServ.cpp:98: error: invalid conversion from `const TCHAR*' to `CHAR*'
Execution terminated

	[]´s

-----Mensagem original-----
De: Marcio Morais [mailto:otherpan em yahoo.com.br]
Enviada em: sexta-feira, 18 de março de 2005 17:37
Para: FireBase
Assunto: Re: RES: RES: [firebase-br] Processo Firebird Server consumindo
CPU


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
>
>
>  
>




______________________________________________
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.




Mais detalhes sobre a lista de discussão lista