// ****************************************************************************************************************************************************************************** // Aplicación HIDRA // Copyright 2003-2005 José Manuel Alonso. Todos los derechos reservados. // Fichero: servicio.h // Descripción: // Este proyecto implementa el servicio hidra en un ordenador con plataforma windows NT. Este fichero aporta las funciones para crear el servicio // ****************************************************************************************************************************************************************************** //____________________________________________________________________________________________________________________________ // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A // PARTICULAR PURPOSE. // // Copyright (C) 1993-1997 Microsoft Corporation. All Rights Reserved. // // MODULE: service.h // AUTHOR: Craig Link // // Comments: The use of this header file and the accompanying service.c // file simplifies the process of writting a service. You as a developer // simply need to follow the TODO's outlined in this header file, and // implement the ServiceStart() and ServiceStop() functions. // // There is no need to modify the code in service.c. Just add service.c // to your project and link with the following libraries... // // libcmt.lib kernel32.lib advapi.lib shell32.lib // // This code also supports unicode. Be sure to compile both service.c and // and code #include "service.h" with the same Unicode setting. // // Upon completion, your code will have the following command line interface // // -? to display this list // -install to install the service // -remove to remove the service // -debug to run as a console app for debugging // // Note: This code also implements Ctrl+C and Ctrl+Break handlers // when using the debug option. These console events cause // your ServiceStop routine to be called // // Also, this code only handles the OWN_SERVICE service type // running in the LOCAL_SYSTEM security context. // // To control your service ( start, stop, etc ) you may use the // Services control panel applet or the NET.EXE program. // // To aid in writing/debugging service, the // SDK contains a utility (MSTOOLS\BIN\SC.EXE) that // can be used to control, configure, or obtain service status. // SC displays complete status for any service/driver // in the service database, and allows any of the configuration // parameters to be easily changed at the command line. // For more information on SC.EXE, type SC at the command line. // //____________________________________________________________________________________________________________________________ #include #include #include #include #include #include "registrow.h" #ifndef _SERVICE_H #define _SERVICE_H #ifdef __cplusplus extern "C" { #endif // name of the executable #define SZAPPNAME "ogAdmWinClient" // internal name of the service #define SZSERVICENAME "Cliente Opengnsys" // displayed name of the service #define SZSERVICEDISPLAYNAME "Cliente Opengnsys" // list of service dependencies - "dep1\0dep2\0\0" #define SZDEPENDENCIES "" #define SERVIDOR_DEFAULT "0.0.0.0" #define PUERTO_DEFAULT "2003" #define IPLOCAL_DEFAULT "0.0.0.0" #define CHKREGISTRY(f) if (!(f)) { return 0;} #define RMVREGISTRY(f) if (!(f)) { return 0;} #define TOMAPARAMINT(p) p=atoi(&argv[i][3]); #define TOMAPARAMSTR(p) strcpy(p,&argv[i][3]); #define HIVE HKEY_LOCAL_MACHINE // Rama del registro donde estarán los parametros de conexión #define BASEKEY "SOFTWARE\\opengnsys" // Key del registro para parametros de conexión #define BASE "SOFTWARE\\opengnsys\\cliente" // SubKey del registro para parametros de conexión //____________________________________________________________________________________________________________________________ // SERVICE_STATUS ssStatus; // current status of the service SERVICE_STATUS_HANDLE sshStatusHandle; // //____________________________________________________________________________________________________________________________ // ServiceStart()must be defined by in your code. // The service should use ReportStatusToSCMgr to indicate // progress. This routine must also be used by StartService() // to report to the SCM when the service is running. // // If a ServiceStop procedure is going to take longer than // 3 seconds to execute, it should spawn a thread to // execute the stop code, and return. Otherwise, the // ServiceControlManager will believe that the service has // stopped responding // //____________________________________________________________________________________________________________________________ VOID ServiceStart(DWORD dwArgc, LPTSTR *lpszArgv); VOID ServiceStop(); //____________________________________________________________________________________________________________________________ // The following are procedures which // may be useful to call within the above procedures, // but require no implementation by the user. // They are implemented in service.c // // FUNCTION: ReportStatusToSCMgr() // // PURPOSE: Sets the current status of the service and // reports it to the Service Control Manager // // PARAMETERS: // dwCurrentState - the state of the service // dwWin32ExitCode - error code to report // dwWaitHint - worst case estimate to next checkpoint // // RETURN VALUE: // TRUE - success // FALSE - failure //____________________________________________________________________________________________________________________________ BOOL ReportStatusToSCMgr(DWORD dwCurrentState, DWORD dwWin32ExitCode, DWORD dwWaitHint); //____________________________________________________________________________________________________________________________ // FUNCTION: AddToMessageLog(LPTSTR lpszMsg) // // PURPOSE: Allows any thread to log an error message // // PARAMETERS: // lpszMsg - text for message // // RETURN VALUE: // none //____________________________________________________________________________________________________________________________ void AddToMessageLog(LPTSTR lpszMsg); //____________________________________________________________________________________________________________________________ // #ifdef __cplusplus } #endif #endif