home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / sysmgmt / sms / smsapi / common / status.inc
Encoding:
Text File  |  1996-10-15  |  6.1 KB  |  255 lines

  1. // **************************************************************************
  2. // Copyright (C) 1995 by Microsoft Corporation.
  3. //
  4. //  File: status.inc
  5. //
  6. //  This file is included by most of the samples. It contains a single
  7. //  function that translates an SMS status code into a string.
  8. //
  9. //  Author: Larry A. French
  10. //
  11. // **************************************************************************
  12.  
  13. // ====================================================================
  14. //
  15. // GetStatusName
  16. //
  17. // This function converts the numeric SMS return code value
  18. // into its mnemonic form.
  19. //
  20. // Parameters:
  21. //  SMS_STATUS stat
  22. //      The SMS return status code.
  23. //
  24. // Returns:
  25. //  const char*
  26. //      A pointer to a constant string containing the memonic name
  27. //      of the status value.
  28. //
  29. // ====================================================================
  30. const char *GetStatusName( SMS_STATUS stat )
  31. {
  32.     // For any status codes not in the following switch
  33.     // statement, the default cause converts it to a
  34.     // decimal value and stores the converted value in
  35.     // "szStatus".  Sixteen bytes should be enough to
  36.     // hold any such value.
  37.     // There should not be any such values.
  38.     //===================================================
  39.     static char szStatus[16];
  40.     const char* pszStat;
  41.  
  42.     switch(stat) {
  43.     case SMS_OK:
  44.         pszStat = "SMS_OK";
  45.         break;
  46.  
  47.     case SMS_MORE_DATA:
  48.         pszStat = "SMS_MORE_DATA";
  49.         break;
  50.  
  51.     case SMS_NO_MORE_DATA:
  52.         pszStat = "SMS_NO_MORE_DATA";
  53.         break;
  54.  
  55.     case SMS_FOLDER_NO_UPDATE:
  56.         pszStat = "SMS_FOLDER_NO_UPDATE";
  57.         break;
  58.  
  59.     case SMS_DUPLICATE_CONTAINER_ID:
  60.         pszStat = "SMS_DUPLICATE_CONTAINER_ID";
  61.         break;
  62.  
  63.     case SMS_DUPLICATE_FOLDER_ID:
  64.         pszStat = "SMS_DUPLICATE_FOLDER_ID";
  65.         break;
  66.  
  67.     case SMS_DUPLICATE_FILTER_ID:
  68.         pszStat = "SMS_DUPLICATE_FILTER_ID";
  69.         break;
  70.  
  71.     case SMS_DUPLICATE_FILTER:
  72.         pszStat = "SMS_DUPLICATE_FILTER";
  73.         break;
  74.  
  75.     case SMS_SCALAR_NO_UPDATE:
  76.         pszStat = "SMS_SCALAR_NO_UPDATE";
  77.         break;
  78.  
  79.     case SMS_SCALAR_WRONG_TYPE:
  80.         pszStat = "SMS_SCALAR_WRONG_TYPE";
  81.         break;
  82.  
  83.     case SMS_INVALID_CONTAINER_ID:
  84.         pszStat = "SMS_INVALID_CONTAINER_ID";
  85.         break;
  86.  
  87.     case SMS_INVALID_FOLDER_ID:
  88.         pszStat = "SMS_INVALID_FOLDER_ID";
  89.         break;
  90.  
  91.     case SMS_INVALID_FILTER_ID:
  92.         pszStat = "SMS_INVALID_FILTER_ID";
  93.         break;
  94.  
  95.     case SMS_CONTAINER_NO_UPDATE:
  96.         pszStat = "SMS_CONTAINER_NO_UPDATE";
  97.         break;
  98.  
  99.     case SMS_PARAMETER_ERROR:
  100.         pszStat = "SMS_PARAMETER_ERROR";
  101.         break;
  102.  
  103.     case SMS_UNSUPPORTED:
  104.         pszStat = "SMS_UNSUPPORTED";
  105.         break;
  106.  
  107.     case SMS_NOT_FOUND:
  108.         pszStat = "SMS_NOT_FOUND";
  109.         break;
  110.  
  111.     case SMS_PARENT_NOT_FOUND:
  112.         pszStat = "SMS_PARENT_NOT_FOUND";
  113.         break;
  114.  
  115.     case SMS_CANT_DELETE:
  116.         pszStat = "SMS_CANT_DELETE";
  117.         break;
  118.  
  119.     case SMS_NEW_FOLDER:
  120.         pszStat = "SMS_NEW_FOLDER";
  121.         break;
  122.  
  123.     case SMS_FOLDER_LINKED:
  124.         pszStat = "SMS_FOLDER_LINKED";
  125.         break;
  126.  
  127.     case SMS_RANGE_ERROR:
  128.         pszStat = "SMS_RANGE_ERROR";
  129.         break;
  130.  
  131.     case SMS_CONTAINER_NOT_POPULATED:
  132.         pszStat = "SMS_CONTAINER_NOT_POPULATED";
  133.         break;
  134.  
  135.     case SMS_CONTAINER_POPULATED:
  136.         pszStat = "SMS_CONTAINER_POPULATED";
  137.         break;
  138.  
  139.     case SMS_FILTER_NOT_PERSISTENT:
  140.         pszStat = "SMS_FILTER_NOT_PERSISTENT";
  141.         break;
  142.  
  143.     case SMS_INVALID_CONNECTION_HANDLE:
  144.         pszStat = "SMS_FILTER_NOT_PERSISTENT";
  145.         break;
  146.  
  147.     case SMS_INVALID_FILTER_TYPE:
  148.         pszStat = "SMS_INVALID_FILTER_TYPE";
  149.         break;
  150.  
  151.     case SMS_ERROR:
  152.         pszStat = "SMS_ERROR";
  153.         break;
  154.  
  155.     case SMS_SQL_ERROR:
  156.         pszStat = "SMS_SQL_ERROR";
  157.         break;
  158.  
  159.     case SMS_INVALID_DATASOURCE:
  160.         pszStat = "SMS_INVALID_DATA_SOURCE";
  161.         break;
  162.  
  163.     case SMS_INVALID_HANDLE:
  164.         pszStat = "SMS_INVALID_HANDLE";
  165.         break;
  166.  
  167.     case SMS_INVALID_FOLDER_TYPE:
  168.         pszStat = "SMS_INVALID_FOLDER_TYPE";
  169.         break;
  170.  
  171.     case SMS_CONNECT_FAILED:
  172.         pszStat = "SMS_CONNECT_FAILED";
  173.         break;
  174.  
  175.     case SMS_NO_CREATE:
  176.         pszStat = "SMS_NO_CREATE";
  177.         break;
  178.  
  179.     case SMS_FOLDER_NOT_MODIFIED:
  180.         pszStat = "SMS_FOLDER_NOT_MODIFIED";
  181.         break;
  182.  
  183.     case SMS_INCORRECT_FOLDER_TYPE:
  184.         pszStat = "SMS_INCORRECT_FOLDER_TYPE";
  185.         break;
  186.  
  187.     case SMS_INVALID_PARAMETER:
  188.         pszStat = "SMS_INVALID_PARAMETER";
  189.         break;
  190.  
  191.     case SMS_EMPTY:
  192.         pszStat = "SMS_EMPTY";
  193.         break;
  194.  
  195.     case SMS_NOT_READY:
  196.         pszStat = "SMS_NOT_READY";
  197.         break;
  198.  
  199.     case SMS_PARENT_ALREADY_COMMITTED:
  200.         pszStat = "SMS_PARENT_ALREADY_COMMITTED";
  201.         break;
  202.  
  203.     case SMS_FILTER_NO_MODIFY:
  204.         pszStat = "SMS_FILTER_NO_MODIFY";
  205.         break;
  206.  
  207.     case SMS_ALREADY_CONNECTED:
  208.         pszStat = "SMS_ALREADY_CONNECTED";
  209.         break;
  210.  
  211.     case SMS_COMMIT_FAILED:
  212.         pszStat = "SMS_COMMIT_FAILED";
  213.         break;
  214.  
  215.     case SMS_FOLDER_ALREADY_DELETED:
  216.         pszStat = "SMS_FOLDER_ALREADY_DELETED";
  217.         break;
  218.  
  219.     default:
  220.         sprintf(szStatus, "%ld", stat);
  221.         pszStat = szStatus;
  222.         break;
  223.  
  224.     }
  225.  
  226.     return( pszStat );
  227. }
  228.  
  229.  
  230.  
  231. // ====================================================================
  232. // DisplaySmsError
  233. //
  234. // Convert the SMS status value to a human-readable form and display it
  235. // along with an error message string.
  236. //
  237. // Input:
  238. //      const char* pszMessage
  239. //              Pointer to the error message string
  240. //
  241. //      SMS_STATUS stat
  242. //              A value returned from the SMS api.
  243. //
  244. // Returns: Nothing.
  245. //
  246. // ====================================================================
  247. void DisplaySmsError(const char* pszMessage, SMS_STATUS stat)
  248. {
  249.     const char* pszStat = GetStatusName(stat);
  250.     printf("%s: (status = %ld :  %s)\n", pszMessage, stat, pszStat);
  251. }
  252.  
  253. /* EOF: status.inc */
  254.  
  255.