home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / winwrap.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  10KB  |  198 lines

  1. // --winwrap.h------------------------------------------------------------------
  2. //
  3. // Header file for Windows NT service (Windows application) shell for EDK
  4. // applications.
  5. // 
  6. // Copyright (C) Microsoft Corp., 1986-1996.  All Rights Reserved.
  7. // -----------------------------------------------------------------------------
  8.  
  9. #ifndef _WINWRAP_H
  10. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  11. #define _WINWRAP_H
  12.  
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif // __cplusplus
  16.  
  17. #define MAX_SERVICE_NAME_LENGTH 256
  18.  
  19. //$--EDK_Service_Control_T---------------------------------------------------
  20. //  Service control instructions returned by HrServiceWaitForControl().
  21. // --------------------------------------------------------------------------
  22. typedef enum _EDKServiceControl_T
  23. {
  24.     EDK_SC_NONE = 0,    // no change
  25.     EDK_SC_PAUSE,       // pause the service
  26.     EDK_SC_CONTINUE,    // continue the service
  27.     EDK_SC_STOP,        // stop the service
  28.     EDK_SC_LAST         // all values are less than this
  29. } EDK_SERVICE_CONTROL_T;
  30.  
  31. //$--FIsService-----------------------------------------------------------------
  32. //  Returns TRUE if the application is running as an NT service.
  33. // -----------------------------------------------------------------------------
  34. BOOL FIsService(                        // RETURNS: TRUE if service
  35.     IN VOID);                           // no arguments
  36.  
  37. //$--GetServiceStopEvent-------------------------------------------------------
  38. //  Returns the handle for the service stop event.
  39. // -----------------------------------------------------------------------------
  40. HANDLE GetServiceStopEvent(            // RETURNS: handle to stop event
  41.     VOID);                              // no arguments
  42.  
  43. //$--GetServiceInstance--------------------------------------------------------
  44. //  Returns the handle for the service instance.
  45. // -----------------------------------------------------------------------------
  46. HANDLE GetServiceInstance(             // RETURNS: handle to service instance
  47.     VOID);                              // no arguments
  48.  
  49. //$--HServiceCreateThread-----------------------------------------------------------
  50. //  Create a wrapped thread.
  51. // -----------------------------------------------------------------------------
  52. HANDLE HServiceCreateThread(                            // RETURNS: handle
  53.     IN  LPLONG lplStartThreads,                     // number of running threads
  54.     IN  LPLONG lplStopThreads,                      // number of stopped threads
  55.     IN  LPSECURITY_ATTRIBUTES lpThreadAttributes,   // thread attributes
  56.     IN  DWORD dwStackSize,                          // stack size
  57.     IN  LPTHREAD_START_ROUTINE lpStartAddress,      // start address
  58.     IN  LPVOID lpParameter,                         // parameter
  59.     IN  DWORD dwCreationFlags,                      // creation flags
  60.     OUT LPDWORD lpThreadId);                        // thread ID
  61.  
  62. //$--SetServiceExitCode---------------------------------------------------------
  63. //  This function is called by the application to set the service exit code.
  64. //
  65. //  dwWin32ExitCode
  66. //
  67. //      - specifies a Win32 error code that the service uses to
  68. //        report an error that occurs when it is starting or
  69. //        stopping. To return an error code specific to the service,
  70. //        the service must set this value to
  71. //        ERROR_SERVICE_SPECIFIC_ERROR to indicate that the
  72. //        dwServiceSpecificExitCode member contains the error code.
  73. //        The service should set this value to NO_ERROR when it is
  74. //        running and on normal termination. 
  75. //
  76. //  dwServiceSpecificExitCode
  77. //
  78. //      - specifies a service specific error code that the
  79. //        service returns when an error occurs while the service is
  80. //        starting or stopping. This value is ignored unless the
  81. //        dwWin32ExitCode member is set to ERROR_SERVICE_SPECIFIC_ERROR. 
  82. //      
  83. // -----------------------------------------------------------------------------
  84. VOID SetServiceExitCode(
  85.     IN DWORD dwWin32ExitCode,           // Win32 exit code
  86.     IN DWORD dwServiceSpecificExitCode);// service specific exit code
  87.  
  88. //$--HrServiceConfirmStop----------------------------------------------------
  89. //  This function is called by the application to indicate that it has stopped.
  90. // -----------------------------------------------------------------------------
  91. HRESULT HrServiceConfirmStop(        // RETURNS: return code
  92.     VOID);                              // no arguments
  93.  
  94. //$--HrServiceGetName--------------------------------------------------------
  95. //  The HrServiceGetName function can be used by any thread to get the
  96. //  service name after the service has been started. lpszName must point to a
  97. //  block of memory at least MAX_SERVICE_NAME_LENGTH+1 bytes in length.
  98. // -----------------------------------------------------------------------------
  99. HRESULT HrServiceGetName(            // RETURNS: return code
  100.     OUT LPSTR lpszName);                // pointer to service name buffer
  101.  
  102. //$--HrServiceGetArgv--------------------------------------------------------
  103. //  The HrServiceGetArgv function can be used by any thread to get the
  104. //  service argv[] after the service has been started.
  105. // -----------------------------------------------------------------------------
  106. HRESULT HrServiceGetArgv(            // RETURNS: return code
  107.     OUT DWORD  *lpdwArgc,               // pointer to argc address variable
  108.     OUT LPSTR **lppszArgv);             // pointer to argv[] address variable
  109.  
  110. //$--FServiceReportStatus-------------------------------------------------------
  111. //  This function is called by the private _ServiceMain() and
  112. //  ServCtrlHandler() functions to update the service's status
  113. //  to the service control manager.
  114. // -----------------------------------------------------------------------------
  115. BOOL FServiceReportStatus(              // RETURNS: TRUE if successful
  116.     IN DWORD dwCurrentState,            // current state of service
  117.     IN DWORD dwWin32ExitCode,           // service Win32 exit code
  118.     IN DWORD dwServiceSpecificExitCode, // service specific exit code
  119.     IN DWORD dwCheckPoint,              // check point number
  120.     IN DWORD dwWaitHint);               // time to wait
  121.  
  122. //$--ServiceStop-------------------------------------------------------------
  123. //  This function can be used by any thread to stop the service.
  124. // -----------------------------------------------------------------------------
  125. VOID ServiceStop(                    // RETURNS: nothing
  126.     VOID);                              // no argument
  127.  
  128.  
  129. //$--HrServiceWaitForControl----------------------------------------------------
  130. //  The HrServiceWaitForControl function can be used by any thread to get or
  131. //  wait for service control after the service has been started.
  132. // -----------------------------------------------------------------------------
  133. HRESULT HrServiceWaitForControl(        // RETURNS: return code
  134.     IN DWORD dwTimeout,                 // time-out interval in milliseconds
  135.     OUT EDK_SERVICE_CONTROL_T *pedksc); // pointer to service name buffer
  136.  
  137. //$--HrServiceWaitForContinue---------------------------------------------------
  138. //  The HrServiceWaitForContinue function can be used by any thread to get or
  139. //  wait for service control after the service has been started.
  140. // -----------------------------------------------------------------------------
  141. HRESULT HrServiceWaitForContinue(       // RETURNS: return code
  142.     IN DWORD dwTimeout,                 // time-out interval in milliseconds
  143.     OUT EDK_SERVICE_CONTROL_T *pedksc); // pointer to service name buffer
  144.  
  145. //$--HrServiceWaitForStop-------------------------------------------------------
  146. //  The HrServiceWaitForStop function can be used by any thread to get or
  147. //  wait for service control after the service has been started.
  148. // -----------------------------------------------------------------------------
  149. HRESULT HrServiceWaitForStop(           // RETURNS: return code
  150.     IN DWORD dwTimeout,                 // time-out interval in milliseconds
  151.     OUT EDK_SERVICE_CONTROL_T *pedksc); // pointer to service name buffer
  152.  
  153. //$--HrServiceProcessControl---------------------------------------------------
  154. //  Check for service control
  155. // -----------------------------------------------------------------------------
  156. HRESULT HrServiceProcessControl(       // RETURNS: return code
  157.     VOID);                              // no arguments
  158.  
  159. //
  160. //  The following service functions and extern variables are defined by the
  161. //  application writer.
  162. //
  163.  
  164. //$--HrServiceStartup---------------------------------------------------------
  165. //  This function is called at startup to initialize the NT service.
  166. //------------------------------------------------------------------------------
  167. HRESULT HrServiceStartup(             // RETURNS: return code
  168.     IN HINSTANCE hInstance,             // handle of current instance
  169.     IN HINSTANCE hPrevInstance,         // handle of previous instance
  170.     IN HWND hwndMainWindow,             // handle to main window
  171.     IN LPSTR pszCmdLine);               // pointer to command line
  172.  
  173. //$--ServiceMain--------------------------------------------------------------
  174. //  This function is given its own thread to execute.
  175. //------------------------------------------------------------------------------
  176. void ServiceMain(                     // RETURNS: nothing
  177.     IN HANDLE hShutdownEvent);          // Handle to Shutdown event object
  178.  
  179. //$--HrServiceShutdown--------------------------------------------------------
  180. //  This function is called when the user wants to shutdown.
  181. //------------------------------------------------------------------------------
  182. HRESULT HrServiceShutdown(            // RETURNS: return value for WinMain
  183.     VOID);                              // No arguments
  184.  
  185. //------------------------------------------------------------------------------
  186.  
  187. extern CHAR szAppName[];               // WNDCLASS class name
  188. extern CHAR szWindowTitle[];           // Application window title
  189.  
  190. //------------------------------------------------------------------------------
  191.  
  192. #ifdef __cplusplus
  193. }
  194. #endif // __cplusplus
  195.  
  196. #pragma option pop /*P_O_Pop*/
  197. #endif
  198.