home *** CD-ROM | disk | FTP | other *** search
- // --winwrap.h------------------------------------------------------------------
- //
- // Header file for Windows NT service (Windows application) shell for EDK
- // applications.
- //
- // Copyright (C) Microsoft Corp., 1986-1996. All Rights Reserved.
- // -----------------------------------------------------------------------------
-
- #ifndef _WINWRAP_H
- #pragma option push -b -a8 -pc -A- /*P_O_Push*/
- #define _WINWRAP_H
-
- #ifdef __cplusplus
- extern "C" {
- #endif // __cplusplus
-
- #define MAX_SERVICE_NAME_LENGTH 256
-
- //$--EDK_Service_Control_T---------------------------------------------------
- // Service control instructions returned by HrServiceWaitForControl().
- // --------------------------------------------------------------------------
- typedef enum _EDKServiceControl_T
- {
- EDK_SC_NONE = 0, // no change
- EDK_SC_PAUSE, // pause the service
- EDK_SC_CONTINUE, // continue the service
- EDK_SC_STOP, // stop the service
- EDK_SC_LAST // all values are less than this
- } EDK_SERVICE_CONTROL_T;
-
- //$--FIsService-----------------------------------------------------------------
- // Returns TRUE if the application is running as an NT service.
- // -----------------------------------------------------------------------------
- BOOL FIsService( // RETURNS: TRUE if service
- IN VOID); // no arguments
-
- //$--GetServiceStopEvent-------------------------------------------------------
- // Returns the handle for the service stop event.
- // -----------------------------------------------------------------------------
- HANDLE GetServiceStopEvent( // RETURNS: handle to stop event
- VOID); // no arguments
-
- //$--GetServiceInstance--------------------------------------------------------
- // Returns the handle for the service instance.
- // -----------------------------------------------------------------------------
- HANDLE GetServiceInstance( // RETURNS: handle to service instance
- VOID); // no arguments
-
- //$--HServiceCreateThread-----------------------------------------------------------
- // Create a wrapped thread.
- // -----------------------------------------------------------------------------
- HANDLE HServiceCreateThread( // RETURNS: handle
- IN LPLONG lplStartThreads, // number of running threads
- IN LPLONG lplStopThreads, // number of stopped threads
- IN LPSECURITY_ATTRIBUTES lpThreadAttributes, // thread attributes
- IN DWORD dwStackSize, // stack size
- IN LPTHREAD_START_ROUTINE lpStartAddress, // start address
- IN LPVOID lpParameter, // parameter
- IN DWORD dwCreationFlags, // creation flags
- OUT LPDWORD lpThreadId); // thread ID
-
- //$--SetServiceExitCode---------------------------------------------------------
- // This function is called by the application to set the service exit code.
- //
- // dwWin32ExitCode
- //
- // - specifies a Win32 error code that the service uses to
- // report an error that occurs when it is starting or
- // stopping. To return an error code specific to the service,
- // the service must set this value to
- // ERROR_SERVICE_SPECIFIC_ERROR to indicate that the
- // dwServiceSpecificExitCode member contains the error code.
- // The service should set this value to NO_ERROR when it is
- // running and on normal termination.
- //
- // dwServiceSpecificExitCode
- //
- // - specifies a service specific error code that the
- // service returns when an error occurs while the service is
- // starting or stopping. This value is ignored unless the
- // dwWin32ExitCode member is set to ERROR_SERVICE_SPECIFIC_ERROR.
- //
- // -----------------------------------------------------------------------------
- VOID SetServiceExitCode(
- IN DWORD dwWin32ExitCode, // Win32 exit code
- IN DWORD dwServiceSpecificExitCode);// service specific exit code
-
- //$--HrServiceConfirmStop----------------------------------------------------
- // This function is called by the application to indicate that it has stopped.
- // -----------------------------------------------------------------------------
- HRESULT HrServiceConfirmStop( // RETURNS: return code
- VOID); // no arguments
-
- //$--HrServiceGetName--------------------------------------------------------
- // The HrServiceGetName function can be used by any thread to get the
- // service name after the service has been started. lpszName must point to a
- // block of memory at least MAX_SERVICE_NAME_LENGTH+1 bytes in length.
- // -----------------------------------------------------------------------------
- HRESULT HrServiceGetName( // RETURNS: return code
- OUT LPSTR lpszName); // pointer to service name buffer
-
- //$--HrServiceGetArgv--------------------------------------------------------
- // The HrServiceGetArgv function can be used by any thread to get the
- // service argv[] after the service has been started.
- // -----------------------------------------------------------------------------
- HRESULT HrServiceGetArgv( // RETURNS: return code
- OUT DWORD *lpdwArgc, // pointer to argc address variable
- OUT LPSTR **lppszArgv); // pointer to argv[] address variable
-
- //$--FServiceReportStatus-------------------------------------------------------
- // This function is called by the private _ServiceMain() and
- // ServCtrlHandler() functions to update the service's status
- // to the service control manager.
- // -----------------------------------------------------------------------------
- BOOL FServiceReportStatus( // RETURNS: TRUE if successful
- IN DWORD dwCurrentState, // current state of service
- IN DWORD dwWin32ExitCode, // service Win32 exit code
- IN DWORD dwServiceSpecificExitCode, // service specific exit code
- IN DWORD dwCheckPoint, // check point number
- IN DWORD dwWaitHint); // time to wait
-
- //$--ServiceStop-------------------------------------------------------------
- // This function can be used by any thread to stop the service.
- // -----------------------------------------------------------------------------
- VOID ServiceStop( // RETURNS: nothing
- VOID); // no argument
-
-
- //$--HrServiceWaitForControl----------------------------------------------------
- // The HrServiceWaitForControl function can be used by any thread to get or
- // wait for service control after the service has been started.
- // -----------------------------------------------------------------------------
- HRESULT HrServiceWaitForControl( // RETURNS: return code
- IN DWORD dwTimeout, // time-out interval in milliseconds
- OUT EDK_SERVICE_CONTROL_T *pedksc); // pointer to service name buffer
-
- //$--HrServiceWaitForContinue---------------------------------------------------
- // The HrServiceWaitForContinue function can be used by any thread to get or
- // wait for service control after the service has been started.
- // -----------------------------------------------------------------------------
- HRESULT HrServiceWaitForContinue( // RETURNS: return code
- IN DWORD dwTimeout, // time-out interval in milliseconds
- OUT EDK_SERVICE_CONTROL_T *pedksc); // pointer to service name buffer
-
- //$--HrServiceWaitForStop-------------------------------------------------------
- // The HrServiceWaitForStop function can be used by any thread to get or
- // wait for service control after the service has been started.
- // -----------------------------------------------------------------------------
- HRESULT HrServiceWaitForStop( // RETURNS: return code
- IN DWORD dwTimeout, // time-out interval in milliseconds
- OUT EDK_SERVICE_CONTROL_T *pedksc); // pointer to service name buffer
-
- //$--HrServiceProcessControl---------------------------------------------------
- // Check for service control
- // -----------------------------------------------------------------------------
- HRESULT HrServiceProcessControl( // RETURNS: return code
- VOID); // no arguments
-
- //
- // The following service functions and extern variables are defined by the
- // application writer.
- //
-
- //$--HrServiceStartup---------------------------------------------------------
- // This function is called at startup to initialize the NT service.
- //------------------------------------------------------------------------------
- HRESULT HrServiceStartup( // RETURNS: return code
- IN HINSTANCE hInstance, // handle of current instance
- IN HINSTANCE hPrevInstance, // handle of previous instance
- IN HWND hwndMainWindow, // handle to main window
- IN LPSTR pszCmdLine); // pointer to command line
-
- //$--ServiceMain--------------------------------------------------------------
- // This function is given its own thread to execute.
- //------------------------------------------------------------------------------
- void ServiceMain( // RETURNS: nothing
- IN HANDLE hShutdownEvent); // Handle to Shutdown event object
-
- //$--HrServiceShutdown--------------------------------------------------------
- // This function is called when the user wants to shutdown.
- //------------------------------------------------------------------------------
- HRESULT HrServiceShutdown( // RETURNS: return value for WinMain
- VOID); // No arguments
-
- //------------------------------------------------------------------------------
-
- extern CHAR szAppName[]; // WNDCLASS class name
- extern CHAR szWindowTitle[]; // Application window title
-
- //------------------------------------------------------------------------------
-
- #ifdef __cplusplus
- }
- #endif // __cplusplus
-
- #pragma option pop /*P_O_Pop*/
- #endif
-