POP3SRV.C
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:4k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /******************************************************************************
  2. *       This is a part of the Microsoft Source Code Samples.
  3. *       Copyright (C) 1992-1997 Microsoft Corporation.
  4. *       All rights reserved. 
  5. *       This source code is only intended as a supplement to 
  6. *       Microsoft Development Tools and/or WinHelp documentation.
  7. *       See these sources for detailed information regarding the 
  8. *       Microsoft samples programs.
  9. ******************************************************************************/
  10. //+---------------------------------------------------------------------------
  11. //
  12. //  File:       pop3svr.c
  13. //
  14. //  Contents:
  15. //
  16. //  Classes:
  17. //
  18. //  Functions:
  19. //
  20. //----------------------------------------------------------------------------
  21. #include "pop3srvp.h"
  22. #pragma hdrstop
  23. BOOL    fService = TRUE;
  24. BOOL    fTestMode = FALSE;
  25. //
  26. // This table is the service dispatch table.  It lists the services in
  27. // this process by name, and the entry point to invoke to start them.  This
  28. // example has but one service, but this could be extended to include, for
  29. // instance, an SMTP server.  Be sure to have the prototype for your entry
  30. // point in a global header file, so that you don't get a compiler complaint.
  31. //
  32. SERVICE_TABLE_ENTRY Pop3SrvTable[] = {
  33.             {APPLICATION_NAME, Pop3SrvMain},
  34.             {NULL, NULL } };
  35. //+---------------------------------------------------------------------------
  36. //
  37. //  Function:   DoArgs
  38. //
  39. //  Synopsis:   This parses the process's start arguments, basically just to
  40. //              see if we have a -noservice flag so that we don't talk to the
  41. //              service controller.
  42. //
  43. //  Arguments:  [argc] --
  44. //              [argv] --
  45. //
  46. //  History:    1-09-95   RichardW   Created
  47. //
  48. //  Notes:
  49. //
  50. //----------------------------------------------------------------------------
  51. void
  52. DoArgs(
  53.     int argc,
  54.     char * argv[])
  55. {
  56.     int i;
  57.     char * arg;
  58.     for (i = 1; i < argc ; i++)
  59.     {
  60.         arg = argv[i];
  61.         if (*arg == '-')
  62.         {
  63.             //
  64.             // Ooo, an option.
  65.             //
  66.             if (_stricmp(arg, "-noservice") == 0)
  67.             {
  68.                 fService = FALSE;
  69.                 continue;
  70.             }
  71.             if (_stricmp(arg, "-testmode") == 0)
  72.             {
  73.                 fTestMode = TRUE;
  74.                 continue;
  75.             }
  76.         }
  77.     }
  78. }
  79. //+---------------------------------------------------------------------------
  80. //
  81. //  Function:   DoServiceController
  82. //
  83. //  Synopsis:   This calls into the service controller, and is never heard
  84. //              from again.
  85. //
  86. //  Arguments:  (none)
  87. //
  88. //  Requires:
  89. //
  90. //  Returns:
  91. //
  92. //  History:    1-09-95   RichardW   Created
  93. //
  94. //  Notes:
  95. //
  96. //----------------------------------------------------------------------------
  97. void
  98. DoServiceController(void)
  99. {
  100.     StartServiceCtrlDispatcher(Pop3SrvTable);
  101. }
  102. //+---------------------------------------------------------------------------
  103. //
  104. //  Function:   main
  105. //
  106. //  Synopsis:   Process entry point.  Unless we're told to start without
  107. //              the service controller, we quickly wait for a service start
  108. //              command.
  109. //
  110. //  Arguments:  [argc] --
  111. //              [argv] --
  112. //
  113. //  Requires:
  114. //
  115. //  Returns:
  116. //
  117. //  History:    1-09-95   RichardW   Created
  118. //
  119. //  Notes:
  120. //
  121. //----------------------------------------------------------------------------
  122. void
  123. main (int argc, char *argv[])
  124. {
  125.     //
  126.     // Initialize the debug support, by reading our debug level from the
  127.     // registry.
  128.     //
  129.     InitDebugSupport();
  130.     //
  131.     // Parse the arguments
  132.     //
  133.     DoArgs(argc, argv);
  134.     //
  135.     // If we're a service, go to the service controller, otherwise start
  136.     // the service immediately.
  137.     //
  138.     if (fService)
  139.     {
  140.         DoServiceController();
  141.     }
  142.     else
  143.     {
  144.         Pop3SrvMain(argc, NULL);
  145.     }
  146. }