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

  1. //-----------------------------------------------------------------------------
  2. // Ssperrcode.h
  3. //                                                  
  4. //
  5. //
  6. //  Copyright (c)1998-99 Microsoft Corporation, All Rights Reserved
  7. //-----------------------------------------------------------------------------
  8.  
  9. /************************************************************************************************\
  10. |*                                                                                              *|
  11. |* Each error has been classified by several features which are severity, facility, action      *|
  12. |* object, and reason. Severity is the recoverability of the error, whether it was only the     *|
  13. |* call to the provider that failed or whether it's a symptom of a larger failure. Facility     *|
  14. |* is the facility that was being accessed when the failure occurred. Action is the action that *|
  15. |* failed. Object is the object that the action was being preformed on. And reason is the       *|
  16. |* reason for failure (which may or may not be known). In addition to the error code, the       *|
  17. |* error object (see SspError.h) also allows two other pieces to information to be returned,    *|
  18. |* a variant that describes the object (in some cases it may be the object) and a variant that  *|
  19. |* describes the reason. In many cases this will be an additional error code reported by a      *|
  20. |* a particular module.                                                                         *|
  21. |*                                                                                              *|
  22. \************************************************************************************************/
  23.  
  24.  
  25. // Error code bitfields:
  26. //
  27. //  31-30: Severity (2 bits)
  28. //  29-28: Reserved (2 bits)
  29. //  27-22: Facility (6 bits)
  30. //  21-16: Action   (6 bits)
  31. //  15- 8: Object   (8 bits)
  32. //   7- 0: Reason   (8 bits)
  33.  
  34. #if !defined(__ssperrcode_H)
  35. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  36. #define      __ssperrcode_H
  37. #pragma once
  38.  
  39.  
  40. #define MKERR(S,F,A,O,R)  ((0x03UL & (S))<<30 | (0x3FUL & (F))<<22 | (0x3FUL & (A))<<16 |\
  41. (0xFFUL & (O))<<8  | (0xFF & (R)))
  42.  
  43. namespace SspEC
  44. {
  45.     const DWORD dwSMASK = MKERR(0xFF,0,0,0,0);
  46.     const DWORD dwFMASK = MKERR(0,0xFF,0,0,0);
  47.     const DWORD dwAMASK = MKERR(0,0,0xFF,0,0);
  48.     const DWORD dwOMASK = MKERR(0,0,0,0xFF,0);
  49.     const DWORD dwRMASK = MKERR(0,0,0,0,0xFF);
  50.     
  51.     
  52.     enum e_severity
  53.     {
  54.             S_NONE,
  55.             S_FUNC,     // functional, can continue
  56.             S_MINOR,    // minor system error, can use other functions of SMS
  57.             S_MAJOR     // totally hosed, shut down
  58.     };
  59.     
  60.     enum e_facility 
  61.     {
  62.             F_NONE, 
  63.             F_INT,      // internal
  64.             F_NET,      // network
  65.             F_FILE,     // file
  66.             F_COM,      // COM
  67.             F_SQL,      // SQL
  68.             F_CIMOM,    // CIMOM
  69.             F_BC,       // base classes
  70.             F_MEM,      // memory
  71.             F_SEC,      // security
  72.             F_REG       // registry
  73.     };
  74.     
  75.     enum e_action
  76.     {
  77.             A_NONE,
  78.             A_CREAT,    // create
  79.             A_OPEN,     // open
  80.             A_DEL,      // delete
  81.             A_READ,     // read
  82.             A_WRITE,    // write
  83.             A_PERST,    //  persist     (create and write)
  84.             A_INST,     // instantiate (open and read)
  85.             A_VAL,      // validate
  86.             A_EXEC,     // execute
  87.             A_LOCK      // lock/unlock
  88.     };
  89.     
  90.     enum e_object
  91.     {
  92.         O_NONE,
  93.             O_FACILITY,
  94.             O_DESCRIPTOR,
  95.             O_DATAFILE,
  96.             O_DIRECTORY,
  97.             O_CONNECTION,
  98.             O_TRANSACTION,
  99.             O_PARAMETER,
  100.             O_PROPERTY,
  101.             O_METHOD,
  102.             O_INSTANCE,
  103.             O_DATA,
  104.             O_RIGHTS,
  105.             O_ROW,
  106.             O_MEMORY,
  107.             O_QUERY,
  108.             O_COLLECTION,
  109.             O_USER,
  110.             O_FILELINE,
  111.             O_RESOURCE
  112.     };
  113.     
  114.     enum e_reason
  115.     {
  116.             R_NONE,          // no further information
  117.             R_WINAPI,        // Win API failure, additional info is GetLastError()
  118.             R_SQL,           // failure in call to SQL server, additional info is failure code
  119.             R_COM,           // failure of call to COM method, additional info is HRESULT
  120.             R_PDFERROR,      // PDF problem
  121.             R_DISTSRC,       // problem with software distribution
  122.             R_COLLERR,       // collection error
  123.             R_TOKITSQL,      // Site control file SQL error
  124.             R_TOKENITEM,     // Site control file error
  125.             R_OFFERSRC,      // Advertisement error
  126.             R_MFCFE,         // MFC CFileException, additional info is in cause code
  127.             R_SITE,          // Site file error
  128.             R_READONLY,      // attempt to write to read only object
  129.             R_TIMEOUT,       // action timed out
  130.             R_NOTFOUND,      // object not found - error object returns not found status when set
  131.             R_ALREADYEXISTS, // object already exists
  132.             R_BADHANDLE,     // invalid pointer or handle
  133.             R_BADDATA,       // data is corrupt
  134.             R_BADPARAM,      // bad parameter passed
  135.             R_NETERR,        // network error
  136.             R_NOTSUPPORTED,  // not supported - error object returns not supported status when set
  137.             R_BADPROP,       // bad property
  138.             R_INVALIDMTD,    // invalid method - error object returns invalid method status when set
  139.             R_STATMSG,       // status message error
  140.             R_FIELDNO,       // reason is field number starting at 0
  141.             R_QUERYSRC       // problem with query object
  142.     };
  143.     
  144.     inline DWORD MkErr(e_facility F, e_action A, e_object O, e_severity S=S_NONE, e_reason R=R_NONE)
  145.     {
  146.         return MKERR(S,F,A,O,R);
  147.     }
  148.     
  149.     //**** Predefined error codes, these are the values we're actually using ****/
  150.     //                     some are used more than others
  151.     //
  152.     //**** NOTE: Reason bits may be set in the returned error code even if they are not
  153.     //           set below. Unless the reason bits are set in the code below, 
  154.     //           mask off the reason bits before comparing error codes.
  155.     
  156.     const DWORD E_NONE(            MkErr(F_NONE, A_NONE,  O_NONE, S_NONE, R_NONE) );
  157.     
  158.     // can't connect to the registry
  159.     const DWORD E_REG_CREAT_CONN( MkErr(F_REG,  A_CREAT, O_CONNECTION, S_MAJOR)  );
  160.     // can't get data from registry
  161.     const DWORD E_REG_OPEN_DATA(   MkErr(F_REG,  A_OPEN,  O_DATA,       S_MAJOR)  );
  162.     
  163.     // can't connect to CIMOM
  164.     const DWORD E_CIMOM_CREAT_CONN( MkErr(F_REG, A_CREAT, O_CONNECTION, S_MAJOR)  );
  165.     
  166.     // CoCreateInstance failed
  167.     const DWORD E_COM_CREAT_INST( MkErr(F_COM, A_CREAT, O_INSTANCE, S_MAJOR) );
  168.     
  169.     const DWORD E_FILE_CREATE_DIR( MkErr(F_FILE, A_CREAT, O_DIRECTORY,S_MINOR)  );
  170.     const DWORD E_FILE_PERST_FILE( MkErr(F_FILE, A_PERST, O_DATAFILE,S_MINOR)   );
  171.     const DWORD E_FILE_INST_FILE(  MkErr(F_FILE, A_INST,  O_DATAFILE,S_MINOR)   );
  172.     const DWORD E_FILE_OPEN_FILE(  MkErr(F_FILE, A_OPEN,  O_DATAFILE,S_MINOR)   );
  173.     const DWORD E_FILE_WRITE_FILE( MkErr(F_FILE, A_WRITE, O_DATAFILE,S_MINOR)   );
  174.     const DWORD E_FILE_CREAT_FILE( MkErr(F_FILE, A_CREAT, O_DATAFILE,S_MINOR)   );
  175.     
  176.     // can't create network connection
  177.     const DWORD E_NET_CREAT_CONN(  MkErr(F_NET,  A_CREAT, O_CONNECTION, S_MAJOR) );
  178.     // can't read from network connections
  179.     const DWORD E_NET_READ_CONN(   MkErr(F_NET,  A_READ,  O_CONNECTION, S_MAJOR) );
  180.     
  181.     // can't allocate memory
  182.     const DWORD E_MEM_CREAT_MEM(   MkErr(F_MEM, A_CREAT,    O_MEMORY, S_MAJOR)     );
  183.     
  184.     // can't validate parameter, bad parameter passed
  185.     const DWORD E_INT_VAL_PARAM(   MkErr(F_INT,  A_VAL,   O_PARAMETER, S_FUNC)  );
  186.     // can't validate data, internal data error
  187.     const DWORD E_INT_VAL_DATA(    MkErr(F_INT,  A_VAL,   O_DATA, S_MINOR)       );
  188.     // invalid method call
  189.     const DWORD E_INT_VAL_METHOD(  MkErr(F_INT, A_VAL,   O_METHOD, S_FUNC, R_INVALIDMTD)     );
  190.     // unsupported method
  191.     const DWORD E_INT_VAL_METHOD_NS(  MkErr(F_INT,  A_VAL,   O_METHOD, S_FUNC, R_NOTSUPPORTED)     );
  192.     // can't create object instance
  193.     const DWORD E_INT_CREAT_INST(  MkErr(F_INT,  A_CREAT, O_INSTANCE, S_MAJOR)   );
  194.     // can't get/find property in object
  195.     const DWORD E_INT_OPEN_PROP(   MkErr(F_INT,  A_OPEN,  O_PROPERTY, S_MINOR)   );
  196.     // instance passed in with bad properties
  197.     const DWORD E_INT_VAL_PARAM_BP( MkErr(F_INT, A_VAL, O_PARAMETER, S_FUNC, R_BADPROP) );
  198.     
  199.     // can't write an instance of a read only class
  200.     const DWORD E_INT_WRITE_INST_RO(  MkErr(F_INT,  A_WRITE, O_INSTANCE, S_FUNC, R_READONLY) );
  201.     const DWORD E_INT_WRITE_INST(  MkErr(F_INT,  A_WRITE, O_INSTANCE, S_FUNC));
  202.     // can't create instance that already exists
  203.     const DWORD E_INT_CREAT_INST_AE(  MkErr(F_INT, A_CREAT, O_INSTANCE, S_FUNC, R_ALREADYEXISTS)  );
  204.     // can't update instance that doesn't exists
  205.     const DWORD E_INT_WRITE_INST_NF(  MkErr(F_INT, A_WRITE, O_INSTANCE, S_FUNC, R_NOTFOUND)  );
  206.     const DWORD E_INT_OPEN_INST( MkErr(F_INT, A_OPEN, O_INSTANCE, S_MINOR, R_NOTFOUND));
  207.     const DWORD E_INT_DEL_INST ( MkErr(F_INT, A_DEL,  O_INSTANCE, S_MINOR));
  208.     const DWORD E_INT_PERST_INST ( MkErr(F_INT, A_PERST, O_INSTANCE, S_MINOR));
  209.     
  210.     
  211.     // can't update collections
  212.     const DWORD E_INT_WRITE_COLL( MkErr(F_INT, A_WRITE, O_COLLECTION, S_MINOR) );
  213.     // can't verify collection (couldn't verify member class name)
  214.     const DWORD E_INT_VAL_COLL( MkErr(F_INT, A_VAL, O_COLLECTION, S_FUNC));
  215.     // could not lock the collection
  216.     const DWORD E_INT_LOCK_COLL(MkErr(F_INT, A_LOCK, O_COLLECTION, S_FUNC));
  217.     
  218.     // bad WQL query/ can't parse query
  219.     const DWORD E_INT_VAL_QUERY( MkErr(F_INT, A_VAL, O_QUERY, S_FUNC) );
  220.     // unsupported query
  221.     const DWORD E_INT_VAL_QUERY_NS( MkErr(F_INT, A_VAL, O_QUERY, S_FUNC, R_NOTSUPPORTED) );
  222.     
  223.     
  224.     // can't get SQL connection
  225.     const DWORD E_SQL_CREAT_CONN(  MkErr(F_SQL, A_CREAT,    O_CONNECTION, S_MAJOR)  );
  226.     // general SQL problem
  227.     const DWORD E_SQL_VAL_CONN(    MkErr(F_SQL,  A_VAL,   O_CONNECTION, S_MAJOR)  );
  228.     // can't open transaction
  229.     const DWORD E_SQL_CREAT_TRANS( MkErr(F_SQL,  A_CREAT, O_TRANSACTION, S_MAJOR) );
  230.     // can't commit transaction
  231.     const DWORD E_SQL_WRITE_TRANS( MkErr(F_SQL,  A_WRITE, O_TRANSACTION, S_MAJOR) );
  232.     // can't exec stored procedure
  233.     const DWORD E_SQL_EXEC_METHOD( MkErr(F_SQL,  A_EXEC,  O_METHOD,     S_MAJOR) );
  234.     // can't exec query
  235.     const DWORD E_SQL_EXEC_QUERY(  MkErr(F_SQL,  A_EXEC,  O_QUERY,      S_MINOR) );
  236.     // can't find/retrieve row
  237.     const DWORD E_SQL_OPEN_ROW(    MkErr(F_SQL,  A_OPEN,  O_ROW,        S_MINOR) );
  238.     // can't retrieve data
  239.     const DWORD E_SQL_READ_ROW(   MkErr(F_SQL,  A_WRITE, O_ROW,        S_MAJOR) );
  240.     // can't insert row
  241.     const DWORD E_SQL_PERST_ROW(   MkErr(F_SQL,  A_PERST, O_ROW,        S_MINOR) );
  242.     // can't delete row
  243.     const DWORD E_SQL_DEL_ROW(     MkErr(F_SQL,  A_DEL,   O_ROW,        S_MINOR) );
  244.     // can't update row
  245.     const DWORD E_SQL_WRITE_ROW(   MkErr(F_SQL,  A_WRITE, O_ROW,        S_MINOR) );
  246.     
  247.     // can't validate security rights
  248.     const DWORD E_SEC_VAL_RIGHT(   MkErr(F_SEC,  A_VAL,   O_RIGHTS, S_FUNC)     );
  249.     // can't initialize security descriptor
  250.     const DWORD E_SEC_CREAT_DESC(   MkErr(F_SEC,  A_INST,  O_DESCRIPTOR, S_MAJOR) );
  251.     // can't get rights for object
  252.     const DWORD E_SEC_OPEN_RIGHTS(  MkErr(F_SEC, A_OPEN,  O_RIGHTS, S_MINOR) );
  253.     // invalid user login
  254.     const DWORD E_SEC_VAL_USER(     MkErr(F_SEC, A_VAL,   O_USER, S_MINOR)   );
  255.     // Unable to get security source connection
  256.     const DWORD E_SEC_CREAT_CONN(   MkErr(F_SEC, A_CREAT, O_CONNECTION, S_MAJOR));
  257.     // Uncable to create instance of base class
  258.     const DWORD E_BC_CREAT_INST(    MkErr(F_BC, A_CREAT, O_INSTANCE, S_MAJOR));
  259.     // Request to read Resource/Group data with missing or incorrect collection limiting
  260.     const DWORD E_SEC_READ_COLLLIMIT(   MkErr(F_SEC, A_READ, O_RESOURCE, S_MINOR));
  261.     
  262.     
  263.     // can't read/parse line of text file
  264.     const DWORD E_INT_READ_LINE( MkErr(F_INT,A_READ,O_FILELINE,S_FUNC) );
  265.     
  266.     
  267. };
  268.  
  269.  
  270. /********** PDF Error Code and Warnings  **********/
  271. // when the reason bits are set to R_PDFERROR, SMS_ExtendedStatus will be one of these error codes
  272. #define PDF_NO_ERROR                0
  273. #define PDF_ERROR                   1
  274. #define PDF_ERROR_FILENOTFOUND      2
  275. #define PDF_ERROR_NOTPDF            3   // The file is not a PDF file
  276. #define PDF_ERROR_VERSION           4   // The file is not of a recognized PDF version
  277. #define PDF_ERROR_FILEIO            7   // Couldn't read the file
  278. #define PDF_ERROR_ICON_FILEIO       8   // Couldn't read the file icon
  279. #define PDF_ERROR_MISSINGNAME       9   // The PDF file is missing the package Name key
  280. #define PDF_ERROR_MISSINGLANG       11  // The PDF file is missing the package Language key
  281. #define PDF_ERROR_MISSINGPUB        12  // The PDF file is missing the package Publisher key
  282. #define PDF_ERROR_NOPROGS           13  // The PDF file has no programs defined
  283. #define PDF_ERROR_MISSINGPROGINFO   14  // The PDF is missing required program keys (1.0 (SMS 1.2) only)
  284. #define PDF_ERROR_PROGRMISSINGNAME  16  // A program is missing the Name key
  285. #define PDF_ERROR_PROGMISSINGCMDLN  17  // A program is missing the CommandLine key
  286. #define PDF_ERROR_BADTYPE           18  // The PDF is of the wrong type (it's a client component PDF)
  287. #define PDF_ERROR_DATABASE          19  // Database error accessing the supported platforms table.
  288. #define PDF_ERROR_DUPPROGRAM        20  // There are two programs with the same name.
  289. #define PDF_ERROR_LAST              21
  290.  
  291. // warning bits returned by SMS_PDF_Package.LoadPDF()
  292. #define BIT(N)                      (1UL<<(N))
  293. #define PDF_WARN_RUN                BIT(0)  // invalid Run info specified
  294. #define PDF_WARN_RESTART            BIT(1)  // invalid Restart info specified
  295. #define PDF_WARN_CANRUNWHEN         BIT(2)  // invalid AfterRunning info specified
  296. #define PDF_WARN_ASSIGNMENT         BIT(3)  // invalid Assignment info specified
  297. #define PDF_WARN_BADDEPNDPROG       BIT(4)  // invalid DependentProgram info specified
  298. #define PDF_WARN_BADDL              BIT(5)  // invalid SpecifyDrive info specified
  299. #define PDF_WARN_BADDISKSPREQ       BIT(6)  // invalid EstimatedDiskSpace info specified
  300. #define PDF_WARN_NOSUPCLINFO        BIT(7)  // no SupportedClients info specified
  301. #define PDF_WARN_BADSUPCLINFO       BIT(8)  // invalid SupportedClients info specified
  302. #define PDF_WARN_VER1PDF            BIT(9)  // version 1.0 file used
  303. #define PDF_WARN_REMPROGNOKEY       BIT(10) // RemoveProgram is set but no UninstallKey given
  304.  
  305.  
  306.  
  307. #pragma option pop /*P_O_Pop*/
  308. #endif