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