📄 service.h
字号:
// 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//// <service exe> -? to display this list// <service exe> -install to install the service// <service exe> -remove to remove the service// <service exe> -debug <params> 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.///* * modified Mar.07, 2002 by Feng Qin <fqin@ncsa.uiuc.edu> * Mar.15, 2002 * * removed some functions we don't use at all * add code to start the service immediately after service is installed * * $Id: service.h,v 1.1.1.1 2004/05/18 01:50:44 kgibbs Exp $ */#ifndef _SERVICE_H#define _SERVICE_H#ifdef __cplusplusextern "C" {#endif////////////////////////////////////////////////////////////////////////////////// todo: change to desired strings////// name of the executable#define SZAPPNAME "IPerf"// internal name of the service#define SZSERVICENAME "IPerfService"// displayed name of the service#define SZSERVICEDISPLAYNAME "IPerf Service"// list of service dependencies - "dep1\0dep2\0\0"#define SZDEPENDENCIES ""//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// todo: 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();//////////////////////////////////////////////////////////////////////////////VOID WINAPI service_ctrl(DWORD dwCtrlCode);VOID WINAPI service_main(DWORD dwArgc, LPTSTR *lpszArgv);VOID CmdInstallService(int argc, char **argv);BOOL CmdRemoveService();BOOL CmdStartService(int argc, char **argv);LPTSTR GetLastErrorText( LPTSTR lpszBuf, DWORD dwSize );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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -