MQOA10.Odl
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:54k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //=--------------------------------------------------------------------------=
  2. // mqoa.ODL
  3. //=--------------------------------------------------------------------------=
  4. // Copyright  1995 - 1999  Microsoft Corporation.  All Rights Reserved.
  5. //
  6. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  7. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  8. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  9. // PARTICULAR PURPOSE.
  10. //=--------------------------------------------------------------------------=
  11. //
  12. // ODL file for the automation object(s) in this inproc server
  13. //
  14. //
  15. #include "dispids.h"
  16. //
  17. // resource ids
  18. //
  19. #include "resrc1.h"
  20. // can't include oaidl.h, so this will have to do
  21. //
  22. #define DISPID_NEWENUM -4
  23. // This is our implementation dll
  24. #define MQOADLL "mqoa.dll"
  25. //=--------------------------------------------------------------------------=
  26. // the libid for this type libray
  27. //
  28. [
  29.     uuid(D7D6E071-DCCD-11d0-AA4B-0060970DEBAE),
  30.     helpstring("Microsoft Message Queue 1.0 Object Library"),
  31.     helpstringdll(MQOADLL),
  32.     lcid(0x0000),
  33.     version(MSMQ10_LIB_VER)
  34. ]
  35. library MSMQ {
  36.     typedef short Boolean;
  37.     // standard imports
  38.     //
  39.     importlib("STDOLE32.TLB");
  40. #if 0
  41.     // assumes that typelib is on path
  42.     importlib("mqadminx.TLB");
  43. #endif // 0
  44.     typedef unsigned char BYTE;
  45.     typedef unsigned long ULONG;
  46.     typedef unsigned long DWORD;
  47.     typedef int BOOL;
  48.     // forwards defs
  49.     interface IMSMQQuery;
  50.     interface IMSMQQueueInfo;
  51.     interface IMSMQQueue;
  52.     interface IMSMQMessage;
  53.     interface IMSMQQueueInfos;
  54.     interface IMSMQEvent;
  55.     interface IMSMQTransaction;
  56.     interface IMSMQCoordinatedTransactionDispenser;
  57.     interface IMSMQTransactionDispenser;
  58.     // enums
  59.     //
  60.     // crypto stuff stolen from wincrypt.h
  61.     // UNDONE: note that due to midl bug can't use shift operators
  62.     //  in constant initializers so we use manifest constants.
  63.     //
  64. // ALG_ID crackers
  65. #define GET_ALG_CLASS(x)                (x & (7 << 13))
  66. #define GET_ALG_TYPE(x)                 (x & (15 << 9))
  67. #define GET_ALG_SID(x)                  (x & (511))
  68. // Algorithm classes
  69. #define ALG_CLASS_ANY                   (0)
  70. #define ALG_CLASS_SIGNATURE             (0x2000) // (1 << 13)
  71. #define ALG_CLASS_MSG_ENCRYPT           (0x4000) // (2 << 13)
  72. #define ALG_CLASS_DATA_ENCRYPT          (0x6000) // (3 << 13)
  73. #define ALG_CLASS_HASH                  (0x8000) // (4 << 13)
  74. #define ALG_CLASS_KEY_EXCHANGE          (0xA000) // (5 << 13)
  75. // Algorithm types
  76. #define ALG_TYPE_ANY                    (0)
  77. #define ALG_TYPE_DSS                    (0x200) // (1 << 9)
  78. #define ALG_TYPE_RSA                    (0x400) // (2 << 9)
  79. #define ALG_TYPE_BLOCK                  (0x600) // (3 << 9)
  80. #define ALG_TYPE_STREAM                 (0x800) // (4 << 9)
  81. // Generic sub-ids
  82. #define ALG_SID_ANY                     (0)
  83. // Some RSA sub-ids
  84. #define ALG_SID_RSA_ANY                 0
  85. #define ALG_SID_RSA_PKCS                1
  86. #define ALG_SID_RSA_MSATWORK            2
  87. #define ALG_SID_RSA_ENTRUST             3
  88. #define ALG_SID_RSA_PGP                 4
  89. // Some DSS sub-ids
  90. //
  91. #define ALG_SID_DSS_ANY                 0
  92. #define ALG_SID_DSS_PKCS                1
  93. #define ALG_SID_DSS_DMS                 2
  94. // Block cipher sub ids
  95. // DES sub_ids
  96. #define ALG_SID_DES                     1
  97. #define ALG_SID_3DES                    3
  98. #define ALG_SID_DESX                    4
  99. #define ALG_SID_IDEA                    5
  100. #define ALG_SID_CAST                    6
  101. #define ALG_SID_SAFERSK64               7
  102. #define ALD_SID_SAFERSK128              8
  103. // KP_MODE
  104. #define CRYPT_MODE_CBCI                 6       // ANSI CBC Interleaved
  105. #define CRYPT_MODE_CFBP                 7       // ANSI CFB Pipelined
  106. #define CRYPT_MODE_OFBP                 8       // ANSI OFB Pipelined
  107. #define CRYPT_MODE_CBCOFM               9       // ANSI CBC + OF Masking
  108. #define CRYPT_MODE_CBCOFMI              10      // ANSI CBC + OFM Interleaved
  109. // RC2 sub-ids
  110. #define ALG_SID_RC2                     2
  111. // Stream cipher sub-ids
  112. #define ALG_SID_RC4                     1
  113. #define ALG_SID_SEAL                    2
  114. // Hash sub ids
  115. #define ALG_SID_MD2                     1
  116. #define ALG_SID_MD4                     2
  117. #define ALG_SID_MD5                     3
  118. #define ALG_SID_SHA                     4
  119. #define ALG_SID_MAC                     5
  120. #define ALG_SID_RIPEMD                  6
  121. #define ALG_SID_RIPEMD160               7
  122. #define ALG_SID_SSL3SHAMD5              8
  123.     typedef 
  124.     [helpstringcontext(IDS_MQCALG)]
  125.     enum _MQCALG {
  126.       MQMSG_CALG_MD2        = (ALG_CLASS_HASH + ALG_TYPE_ANY + ALG_SID_MD2),
  127.       MQMSG_CALG_MD4        = (ALG_CLASS_HASH + ALG_TYPE_ANY + ALG_SID_MD4),
  128.       MQMSG_CALG_MD5        = (ALG_CLASS_HASH + ALG_TYPE_ANY + ALG_SID_MD5),
  129.       MQMSG_CALG_SHA        = (ALG_CLASS_HASH + ALG_TYPE_ANY + ALG_SID_SHA),
  130.       MQMSG_CALG_MAC        = (ALG_CLASS_HASH + ALG_TYPE_ANY + ALG_SID_MAC),
  131.       MQMSG_CALG_RSA_SIGN   = (ALG_CLASS_SIGNATURE + ALG_TYPE_RSA + ALG_SID_RSA_ANY),
  132.       MQMSG_CALG_DSS_SIGN   = (ALG_CLASS_SIGNATURE + ALG_TYPE_DSS + ALG_SID_DSS_ANY),
  133.       MQMSG_CALG_RSA_KEYX   = (ALG_CLASS_KEY_EXCHANGE+ALG_TYPE_RSA+ALG_SID_RSA_ANY),
  134.       MQMSG_CALG_DES        = (ALG_CLASS_DATA_ENCRYPT+ALG_TYPE_BLOCK+ALG_SID_DES),
  135.       MQMSG_CALG_RC2        = (ALG_CLASS_DATA_ENCRYPT+ALG_TYPE_BLOCK+ALG_SID_RC2),
  136.       MQMSG_CALG_RC4        = (ALG_CLASS_DATA_ENCRYPT+ALG_TYPE_STREAM+ALG_SID_RC4),
  137.       MQMSG_CALG_SEAL       = (ALG_CLASS_DATA_ENCRYPT+ALG_TYPE_STREAM+ALG_SID_SEAL)
  138.     } MQCALG;
  139.     typedef 
  140.     [helpstringcontext(IDS_MQTRANSACTION)]
  141.     enum _MQTRANSACTION {
  142.       MQ_NO_TRANSACTION             = 0,
  143.       MQ_MTS_TRANSACTION            = 1,
  144.       MQ_XA_TRANSACTION             = 2,
  145.       MQ_SINGLE_MESSAGE             = 3
  146.     } MQTRANSACTION;
  147.     typedef 
  148.     [helpstringcontext(IDS_RELOPS)]
  149.     enum _RELOPS {
  150.       REL_NOP = 0,
  151.       REL_EQ,
  152.       REL_NEQ,
  153.       REL_LT,
  154.       REL_GT,
  155.       REL_LE,
  156.       REL_GE,
  157.     } RELOPS;
  158.     //
  159.     // event/cursor related enums
  160.     // 
  161.     typedef 
  162.     [helpstringcontext(IDS_MQMSGCURSOR)]
  163.     enum _MQMSGCURSOR {
  164. MQMSG_FIRST = 0,
  165. MQMSG_CURRENT = 1,
  166. MQMSG_NEXT = 2
  167.     } MQMSGCURSOR;
  168.     //
  169.     // Message related enums
  170.     //
  171.     #define MQCLASS_CODE(s, r, code) ((s) + (r) + (code))
  172.     typedef 
  173.     [helpstringcontext(IDS_MQMSGCLASS)]
  174.     enum _MQMSGCLASS {
  175. MQMSG_CLASS_NORMAL                      = MQCLASS_CODE(0x0000, 0x0000, 0x00),
  176. MQMSG_CLASS_REPORT                      = MQCLASS_CODE(0x0000, 0x0000, 0x01),
  177. MQMSG_CLASS_ACK_REACH_QUEUE             = MQCLASS_CODE(0x0000, 0x0000, 0x02),
  178. MQMSG_CLASS_ACK_RECEIVE                 = MQCLASS_CODE(0x0000, 0x4000, 0x00),
  179. MQMSG_CLASS_NACK_BAD_DST_Q              = MQCLASS_CODE(0x8000, 0x0000, 0x00),
  180. MQMSG_CLASS_NACK_PURGED                 = MQCLASS_CODE(0x8000, 0x0000, 0x01),
  181. MQMSG_CLASS_NACK_REACH_QUEUE_TIMEOUT    = MQCLASS_CODE(0x8000, 0x0000, 0x02),
  182. MQMSG_CLASS_NACK_Q_EXCEED_QUOTA         = MQCLASS_CODE(0x8000, 0x0000, 0x03),
  183. MQMSG_CLASS_NACK_ACCESS_DENIED          = MQCLASS_CODE(0x8000, 0x0000, 0x04),
  184. MQMSG_CLASS_NACK_HOP_COUNT_EXCEEDED     = MQCLASS_CODE(0x8000, 0x0000, 0x05),
  185. MQMSG_CLASS_NACK_BAD_SIGNATURE          = MQCLASS_CODE(0x8000, 0x0000, 0x06),
  186. MQMSG_CLASS_NACK_BAD_ENCRYPTION         = MQCLASS_CODE(0x8000, 0x0000, 0x07),
  187. MQMSG_CLASS_NACK_COULD_NOT_ENCRYPT      = MQCLASS_CODE(0x8000, 0x0000, 0x08),
  188. MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_Q    = MQCLASS_CODE(0x8000, 0x0000, 0x09),
  189. MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_MSG  = MQCLASS_CODE(0x8000, 0x0000, 0x0A),
  190. MQMSG_CLASS_NACK_Q_DELETED              = MQCLASS_CODE(0x8000, 0x4000, 0x00),
  191. MQMSG_CLASS_NACK_Q_PURGED               = MQCLASS_CODE(0x8000, 0x4000, 0x01),
  192. MQMSG_CLASS_NACK_RECEIVE_TIMEOUT        = MQCLASS_CODE(0x8000, 0x4000, 0x02),
  193.     } MQMSGCLASS;
  194. #define DEF_MQMSG_DELIVERY_EXPRESS 0
  195. #define DEF_MQMSG_DELIVERY_RECOVERABLE 1
  196.     typedef 
  197.     [helpstringcontext(IDS_MQMSGDELIVERY)]
  198.     enum _MQMSGDELIVERY {
  199. MQMSG_DELIVERY_EXPRESS              = DEF_MQMSG_DELIVERY_EXPRESS,
  200. MQMSG_DELIVERY_RECOVERABLE          = DEF_MQMSG_DELIVERY_RECOVERABLE
  201.     } MQMSGDELIVERY;
  202. #define DEF_MQMSG_ACKNOWLEDGMENT_NONE 0x00
  203.     typedef [helpstringcontext(IDS_MQMSGACKNOWLEDGEMENT)] 
  204.     enum _MQMSGACKNOWLEDGEMENT {
  205. MQMSG_ACKNOWLEDGMENT_NONE           = DEF_MQMSG_ACKNOWLEDGMENT_NONE,
  206. MQMSG_ACKNOWLEDGMENT_POS_ARRIVAL    = 0x01,
  207. MQMSG_ACKNOWLEDGMENT_POS_RECEIVE    = 0x02,
  208. MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL    = 0x04,
  209. MQMSG_ACKNOWLEDGMENT_NEG_RECEIVE    = 0x08,
  210. MQMSG_ACKNOWLEDGMENT_NACK_REACH_QUEUE = 
  211.     /* MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL */ 0x04,
  212. MQMSG_ACKNOWLEDGMENT_FULL_REACH_QUEUE =
  213.     /* MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL */ 0x04 +
  214.     /* MQMSG_ACKNOWLEDGMENT_POS_ARRIVAL */ 0x01,
  215. MQMSG_ACKNOWLEDGMENT_NACK_RECEIVE =
  216.     /* MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL */ 0x04 +
  217.     /* MQMSG_ACKNOWLEDGMENT_NEG_RECEIVE */ 0x08,
  218. MQMSG_ACKNOWLEDGMENT_FULL_RECEIVE =
  219.     /* MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL */ 0x04 +
  220.     /* MQMSG_ACKNOWLEDGMENT_NEG_RECEIVE */ 0x08 +
  221.     /* MQMSG_ACKNOWLEDGMENT_POS_RECEIVE */ 0x02
  222.     } MQMSGACKNOWLEDGEMENT;
  223. #define DEF_MQMSG_JOURNAL_NONE 0
  224.     typedef [helpstringcontext(IDS_MQMSGJOURNAL)] 
  225.     enum _MQMSGJOURNAL {
  226.       MQMSG_JOURNAL_NONE = DEF_MQMSG_JOURNAL_NONE,
  227.       MQMSG_DEADLETTER = 1,
  228.       MQMSG_JOURNAL = 2
  229.     } MQMSGJOURNAL;
  230.     typedef [helpstringcontext(IDS_MQMSGTRACE)] enum _MQMSGTRACE {
  231.       MQMSG_TRACE_NONE = 0,
  232.       MQMSG_SEND_ROUTE_TO_REPORT_QUEUE = 1
  233.     } MQMSGTRACE;
  234. #define DEF_MQMSG_SENDERID_TYPE_SID 1
  235.     typedef [helpstringcontext(IDS_MQMSGSENDERIDTYPE)] enum _MQMSGSENDERIDTYPE {
  236.       MQMSG_SENDERID_TYPE_NONE = 0,
  237.       MQMSG_SENDERID_TYPE_SID = 1
  238.     } MQMSGSENDERIDTYPE;
  239. #define DEF_MQMSG_PRIV_LEVEL_NONE 0
  240.     typedef [helpstringcontext(IDS_MQMSGPRIVLEVEL)] enum _MQMSGPRIVLEVEL {
  241.       MQMSG_PRIV_LEVEL_NONE          = DEF_MQMSG_PRIV_LEVEL_NONE,
  242.       MQMSG_PRIV_LEVEL_BODY          = 1
  243.     } MQMSGPRIVLEVEL;
  244. #define DEF_MQMSG_AUTH_LEVEL_NONE 0
  245.     typedef [helpstringcontext(IDS_MQMSGAUTHLEVEL)] enum _MQMSGAUTHLEVEL {
  246.       MQMSG_AUTH_LEVEL_NONE = DEF_MQMSG_AUTH_LEVEL_NONE,
  247.       MQMSG_AUTH_LEVEL_ALWAYS = 1
  248.     } MQMSGAUTHLEVEL;
  249.     typedef [helpstringcontext(IDS_MQMSGIDSIZE)] enum _MQMSGIDSIZE {
  250.       MQMSG_MSGID_SIZE         = 20,
  251.       MQMSG_CORRELATIONID_SIZE = 20
  252.     } MQMSGIDSIZE;
  253.     typedef [helpstringcontext(IDS_MQMSGMAX)] enum _MQMSGMAX {
  254.       MQ_MAX_MSG_LABEL_LEN   = 249,
  255.     } MQMSGMAX;
  256.     //
  257.     // Queue related enums
  258.     //
  259.     typedef [helpstringcontext(IDS_MQSHARE)] enum _MQSHARE {
  260.     MQ_DENY_NONE = 0,
  261.     MQ_DENY_RECEIVE_SHARE = 1
  262.     } MQSHARE;
  263.     typedef [helpstringcontext(IDS_MQACCESS)] enum _MQACCESS {
  264.       MQ_RECEIVE_ACCESS = 1,
  265.       MQ_SEND_ACCESS = 2,
  266.       MQ_PEEK_ACCESS = 0x20
  267.     } MQACCESS;
  268. #define DEF_MQ_JOURNAL_NONE 0
  269.     typedef [helpstringcontext(IDS_MQJOURNAL)] enum _MQJOURNAL {
  270.       MQ_JOURNAL_NONE = DEF_MQ_JOURNAL_NONE,
  271.       MQ_JOURNAL = 1
  272.     } MQJOURNAL;
  273. #define DEF_MQ_TRANSACTIONAL_NONE 0
  274.     typedef [helpstringcontext(IDS_MQTRANSACTIONAL)] enum _MQTRANSACTIONAL {
  275.       MQ_TRANSACTIONAL_NONE = DEF_MQ_TRANSACTIONAL_NONE,
  276.       MQ_TRANSACTIONAL = 1
  277.     } MQTRANSACTIONAL;
  278. #define DEF_MQ_AUTHENTICATE_NONE 0
  279.     typedef [helpstringcontext(IDS_MQAUTHENTICATE)] enum _MQAUTHENTICATE {
  280.       MQ_AUTHENTICATE_NONE = DEF_MQ_AUTHENTICATE_NONE,
  281.       MQ_AUTHENTICATE = 1
  282.     } MQAUTHENTICATE;
  283. #define DEF_MQ_PRIV_LEVEL_OPTIONAL 1
  284.     typedef [helpstringcontext(IDS_MQPRIVLEVEL)] enum _MQPRIVLEVEL {
  285.       MQ_PRIV_LEVEL_NONE        = 0,
  286.       MQ_PRIV_LEVEL_OPTIONAL    = DEF_MQ_PRIV_LEVEL_OPTIONAL,
  287.       MQ_PRIV_LEVEL_BODY        = 2
  288.     } MQPRIVLEVEL;
  289.     typedef [helpstringcontext(IDS_MQPRIORITY)] enum _MQPRIORITY {
  290.       MQ_MIN_PRIORITY = 0,
  291.       MQ_MAX_PRIORITY = 7
  292.     } MQPRIORITY;
  293.     typedef [helpstringcontext(IDS_MQMAX)] enum _MQMAX {
  294.       MQ_MAX_Q_NAME_LEN      = 124,
  295.       MQ_MAX_Q_LABEL_LEN     = 124
  296.     } MQMAX;
  297.     //
  298.     // default property values
  299.     //
  300. // ((MQ_MAX_PRIORITY + MQ_MIN_PRIORITY) >> 1)
  301. #define DEF_DEFAULT_M_PRIORITY 3
  302.     typedef 
  303.     [helpstringcontext(IDS_MQDEFAULT)]
  304.     enum _MQDEFAULT {
  305.       DEFAULT_M_PRIORITY      = DEF_DEFAULT_M_PRIORITY,
  306.       DEFAULT_M_DELIVERY      = DEF_MQMSG_DELIVERY_EXPRESS,
  307.       DEFAULT_M_ACKNOWLEDGE   = DEF_MQMSG_ACKNOWLEDGMENT_NONE,
  308.       DEFAULT_M_JOURNAL       = DEF_MQMSG_JOURNAL_NONE,
  309.       DEFAULT_M_APPSPECIFIC   = 0,
  310.       DEFAULT_M_PRIV_LEVEL    = DEF_MQMSG_PRIV_LEVEL_NONE,
  311.       DEFAULT_M_AUTH_LEVEL    = DEF_MQMSG_AUTH_LEVEL_NONE,
  312.       DEFAULT_M_SENDERID_TYPE = DEF_MQMSG_SENDERID_TYPE_SID,
  313.       DEFAULT_Q_JOURNAL       = DEF_MQ_JOURNAL_NONE,
  314.       DEFAULT_Q_BASEPRIORITY  = 0,
  315.       DEFAULT_Q_QUOTA         = 0xFFFFFFFF,
  316.       DEFAULT_Q_JOURNAL_QUOTA = 0xFFFFFFFF,
  317.       DEFAULT_Q_TRANSACTION   = DEF_MQ_TRANSACTIONAL_NONE,
  318.       DEFAULT_Q_AUTHENTICATE  = DEF_MQ_AUTHENTICATE_NONE,
  319.       DEFAULT_Q_PRIV_LEVEL    = DEF_MQ_PRIV_LEVEL_OPTIONAL
  320.     } MQDEFAULT;
  321.     //
  322.     // Security related enums
  323.     //
  324.     //
  325.     // some required NT stuff
  326.     //
  327. #define DELETE                           (0x00010000)
  328. #define READ_CONTROL                     (0x00020000)
  329. #define WRITE_DAC                        (0x00040000)
  330. #define WRITE_OWNER                      (0x00080000)
  331. #define SYNCHRONIZE                      (0x00100000)
  332. //
  333. // Queue security flags
  334. //
  335. #if 0
  336.     typedef [helpstringcontext(1)] enum _MQSECFLAGS {
  337.       MQSEC_DELETE_MESSAGE                = 0x1,
  338.       MQSEC_PEEK_MESSAGE                  = 0x2,
  339.       MQSEC_WRITE_MESSAGE                 = 0x4,
  340.       MQSEC_DELETE_JOURNAL_MESSAGE        = 0x8,
  341.       MQSEC_SET_QUEUE_PROPERTIES          = 0x10,
  342.       MQSEC_GET_QUEUE_PROPERTIES          = 0x20,
  343.       MQSEC_DELETE_QUEUE                  = DELETE,
  344.       MQSEC_GET_QUEUE_PERMISSIONS         = READ_CONTROL,
  345.       MQSEC_CHANGE_QUEUE_PERMISSIONS      = WRITE_DAC,
  346.       MQSEC_TAKE_QUEUE_OWNERSHIP          = WRITE_OWNER,
  347.       MQSEC_RECEIVE_MESSAGE               = (MQSEC_DELETE_MESSAGE +
  348.      MQSEC_PEEK_MESSAGE),
  349.       MQSEC_RECEIVE_JOURNAL_MESSAGE       = (MQSEC_DELETE_JOURNAL_MESSAGE +
  350.      MQSEC_PEEK_MESSAGE),
  351.       MQSEC_QUEUE_GENERIC_READ            = (MQSEC_GET_QUEUE_PROPERTIES +
  352.      MQSEC_GET_QUEUE_PERMISSIONS +
  353.      MQSEC_RECEIVE_MESSAGE +
  354.      MQSEC_RECEIVE_JOURNAL_MESSAGE),
  355.       MQSEC_QUEUE_GENERIC_WRITE           = (MQSEC_GET_QUEUE_PROPERTIES +
  356.      MQSEC_GET_QUEUE_PERMISSIONS +
  357.      MQSEC_WRITE_MESSAGE),
  358.       MQSEC_QUEUE_GENERIC_EXECUTE         = 0,
  359.       MQSEC_QUEUE_GENERIC_ALL             = (MQSEC_RECEIVE_MESSAGE +
  360.      MQSEC_RECEIVE_JOURNAL_MESSAGE +
  361.      MQSEC_WRITE_MESSAGE +
  362.      MQSEC_SET_QUEUE_PROPERTIES +
  363.      MQSEC_GET_QUEUE_PROPERTIES +
  364.      MQSEC_DELETE_QUEUE +
  365.      MQSEC_GET_QUEUE_PERMISSIONS +
  366.      MQSEC_CHANGE_QUEUE_PERMISSIONS +
  367.      MQSEC_TAKE_QUEUE_OWNERSHIP)
  368.     } MQSECFLAGS;
  369. #endif // 0
  370.     //
  371.     // Return codes
  372.     //
  373. #define FACILITY_MQ                         0x0E
  374. // #define MQ_E_BASE                          (0xC0000000 + (FACILITY_MQ << 16))
  375. // #define MQ_I_BASE                          (0x40000000 + (FACILITY_MQ << 16))
  376. #define MQ_E_BASE                          (0xC00E0000)
  377. #define MQ_I_BASE                          (0x400E0000)
  378. //********************************************************************
  379. //                       E R R O R / S T A T U S   C O D E S
  380. //********************************************************************
  381.     typedef [helpstringcontext(IDS_MQERROR)] enum _MQERROR {
  382. //
  383. // MessageId: MQ_ERROR
  384. //
  385. // MessageText:
  386. //
  387. //  GenericError
  388. //
  389.  MQ_ERROR                         = 0xC00E0001,
  390. //
  391. // MessageId: MQ_ERROR_PROPERTY
  392. //
  393. // MessageText:
  394. //
  395. //  One or more of the passed properites are invalid.
  396. //
  397.  MQ_ERROR_PROPERTY                = 0xC00E0002,
  398. //
  399. // MessageId: MQ_ERROR_QUEUE_NOT_FOUND
  400. //
  401. // MessageText:
  402. //
  403. //  The queue is not registered in the DS
  404. //
  405.  MQ_ERROR_QUEUE_NOT_FOUND         = 0xC00E0003,
  406. //
  407. // MessageId: MQ_ERROR_QUEUE_EXISTS
  408. //
  409. // MessageText:
  410. //
  411. //  A queue with the same pathname is already registered
  412. //
  413.  MQ_ERROR_QUEUE_EXISTS            = 0xC00E0005,
  414. //
  415. // MessageId: MQ_ERROR_INVALID_PARAMETER
  416. //
  417. // MessageText:
  418. //
  419. //  An invalid parameter passed to a function.
  420. //
  421.  MQ_ERROR_INVALID_PARAMETER       = 0xC00E0006,
  422. //
  423. // MessageId: MQ_ERROR_INVALID_HANDLE
  424. //
  425. // MessageText:
  426. //
  427. //  An invalid handle passed to a function.
  428. //
  429.  MQ_ERROR_INVALID_HANDLE          = 0xC00E0007,
  430. //
  431. // MessageId: MQ_ERROR_OPERATION_CANCELLED
  432. //
  433. // MessageText:
  434. //
  435. //  The operation was cancelled before it could be completed.
  436. //
  437.  MQ_ERROR_OPERATION_CANCELLED     = 0xC00E0008,
  438. //
  439. // MessageId: MQ_ERROR_SHARING_VIOLATION
  440. //
  441. // MessageText:
  442. //
  443. //  Sharing violation. The queue is already opened for exclusive receive.
  444. //
  445.  MQ_ERROR_SHARING_VIOLATION       = 0xC00E0009,
  446. //
  447. // MessageId: MQ_ERROR_SERVICE_NOT_AVAILABLE
  448. //
  449. // MessageText:
  450. //
  451. //  The Message Queues service is not available
  452. //
  453.  MQ_ERROR_SERVICE_NOT_AVAILABLE   = 0xC00E000B,
  454. //
  455. // MessageId: MQ_ERROR_MACHINE_NOT_FOUND
  456. //
  457. // MessageText:
  458. //
  459. //  The specified machine could not be found.
  460. //
  461.  MQ_ERROR_MACHINE_NOT_FOUND       = 0xC00E000D,
  462. //
  463. // MessageId: MQ_ERROR_ILLEGAL_SORT
  464. //
  465. // MessageText:
  466. //
  467. //  Illegal sort specified in MQLocateBegin (e.g., duplicate columns).
  468. //
  469.  MQ_ERROR_ILLEGAL_SORT            = 0xC00E0010,
  470. //
  471. // MessageId: MQ_ERROR_ILLEGAL_USER
  472. //
  473. // MessageText:
  474. //
  475. //  The user is an illegal user.
  476. //
  477.  MQ_ERROR_ILLEGAL_USER            = 0xC00E0011,
  478. //
  479. // MessageId: MQ_ERROR_UNSUPPORTED_DBMS
  480. //
  481. // MessageText:
  482. //
  483. //  Current version of Database Management System is not supported.
  484. //
  485.  MQ_ERROR_UNSUPPORTED_DBMS        = 0xC00E0012,
  486. //
  487. // MessageId: MQ_ERROR_NO_DS
  488. //
  489. // MessageText:
  490. //
  491. //  No connection with this site's controller(s).
  492. //
  493.  MQ_ERROR_NO_DS                   = 0xC00E0013,
  494. //
  495. // MessageId: MQ_ERROR_ILLEGAL_QUEUE_PATHNAME
  496. //
  497. // MessageText:
  498. //
  499. //  Illegal queue path name.
  500. //
  501.  MQ_ERROR_ILLEGAL_QUEUE_PATHNAME  = 0xC00E0014,
  502. //
  503. // MessageId: MQ_ERROR_ILLEGAL_PROPERTY_VALUE
  504. //
  505. // MessageText:
  506. //
  507. //  Illegal property value.
  508. //
  509.  MQ_ERROR_ILLEGAL_PROPERTY_VALUE  = 0xC00E0018,
  510. //
  511. // MessageId: MQ_ERROR_ILLEGAL_PROPERTY_VT
  512. //
  513. // MessageText:
  514. //
  515. //  Invalid VARTYPE value.
  516. //
  517.  MQ_ERROR_ILLEGAL_PROPERTY_VT     = 0xC00E0019,
  518. //
  519. // MessageId: MQ_ERROR_BUFFER_OVERFLOW
  520. //
  521. // MessageText:
  522. //
  523. //  The buffer supplied to MQReceiveMessage for message body retrieval
  524. //  was too small. The message is not removed from the queue and part
  525. //  of the message body that fits in the buffer was copied.
  526. //
  527.  MQ_ERROR_BUFFER_OVERFLOW         = 0xC00E001A,
  528. //
  529. // MessageId: MQ_ERROR_IO_TIMEOUT
  530. //
  531. // MessageText:
  532. //
  533. //  The MQReceiveMessage IO timeout has expired
  534. //
  535.  MQ_ERROR_IO_TIMEOUT              = 0xC00E001B,
  536. //
  537. // MessageId: MQ_ERROR_ILLEGAL_CURSOR_ACTION
  538. //
  539. // MessageText:
  540. //
  541. //  MQ_ACTION_PEEK_NEXT specified to MQReceiveMessage can not be used with
  542. //  the current cursor position.
  543. //
  544.  MQ_ERROR_ILLEGAL_CURSOR_ACTION   = 0xC00E001C,
  545. //
  546. // MessageId: MQ_ERROR_MESSAGE_ALREADY_RECEIVED
  547. //
  548. // MessageText:
  549. //
  550. //  A message that is currently pointed at by the cursor has been removed from
  551. //  the queue by another process or by another call to MQReceiveMessage
  552. //  without the use of this cursor.
  553. //
  554.  MQ_ERROR_MESSAGE_ALREADY_RECEIVED = 0xC00E001D,
  555. //
  556. // MessageId: MQ_ERROR_ILLEGAL_FORMATNAME
  557. //
  558. // MessageText:
  559. //
  560. //  The given format name is invalid.
  561. //
  562.  MQ_ERROR_ILLEGAL_FORMATNAME      = 0xC00E001E,
  563. //
  564. // MessageId: MQ_ERROR_FORMATNAME_BUFFER_TOO_SMALL
  565. //
  566. // MessageText:
  567. //
  568. //  The format name buffer supplied to the api was too small
  569. //  to fit the format name
  570. //
  571.  MQ_ERROR_FORMATNAME_BUFFER_TOO_SMALL = 0xC00E001F,
  572. //
  573. // MessageId: MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION
  574. //
  575. // MessageText:
  576. //
  577. //  The requested operation for the specified format name is not
  578. //  supported (e.g., delete a direct queue format name).
  579. //
  580.  MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION = 0xC00E0020,
  581. //
  582. // MessageId: MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR
  583. //
  584. // MessageText:
  585. //
  586. //  The specified security descriptor is not a valid security descriptor.
  587. //
  588.  MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR = 0xC00E0021,
  589. //
  590. // MessageId: MQ_ERROR_SENDERID_BUFFER_TOO_SMALL
  591. //
  592. // MessageText:
  593. //
  594. //  The passed buffer for the user ID property is too small.
  595. //
  596.  MQ_ERROR_SENDERID_BUFFER_TOO_SMALL = 0xC00E0022,
  597. //
  598. // MessageId: MQ_ERROR_SECURITY_DESCRIPTOR_TOO_SMALL
  599. //
  600. // MessageText:
  601. //
  602. //  The size of the buffer passed to MQGetQueueSecurity is too small.
  603. //
  604.  MQ_ERROR_SECURITY_DESCRIPTOR_TOO_SMALL = 0xC00E0023,
  605. //
  606. // MessageId: MQ_ERROR_CANNOT_IMPERSONATE_CLIENT
  607. //
  608. // MessageText:
  609. //
  610. //  The RPC server can not impersonate the client application, hence security
  611. //  credentials could not be verified.
  612. //
  613.  MQ_ERROR_CANNOT_IMPERSONATE_CLIENT = 0xC00E0024,
  614. //
  615. // MessageId: MQ_ERROR_ACCESS_DENIED
  616. //
  617. // MessageText:
  618. //
  619. //  Access is denied.
  620. //
  621.  MQ_ERROR_ACCESS_DENIED           = 0xC00E0025,
  622. //
  623. // MessageId: MQ_ERROR_PRIVILEGE_NOT_HELD
  624. //
  625. // MessageText:
  626. //
  627. //  Client does not have the required privileges to perform the operation.
  628. //
  629.  MQ_ERROR_PRIVILEGE_NOT_HELD      = 0xC00E0026,
  630. //
  631. // MessageId: MQ_ERROR_INSUFFICIENT_RESOURCES
  632. //
  633. // MessageText:
  634. //
  635. //  Insufficient resources to perform operation.
  636. //
  637.  MQ_ERROR_INSUFFICIENT_RESOURCES  = 0xC00E0027,
  638. //
  639. // MessageId: MQ_ERROR_USER_BUFFER_TOO_SMALL
  640. //
  641. // MessageText:
  642. //
  643. //  Request failed because user buffer is too small to hold the returned information
  644. //
  645.  MQ_ERROR_USER_BUFFER_TOO_SMALL   = 0xC00E0028,
  646. //
  647. // MessageId: MQ_ERROR_MESSAGE_STORAGE_FAILED
  648. //
  649. // MessageText:
  650. //
  651. //  Could not store a recoverable or journal message. Message was not sent
  652. //
  653.  MQ_ERROR_MESSAGE_STORAGE_FAILED  = 0xC00E002A,
  654. //
  655. // MessageId: MQ_ERROR_SENDER_CERT_BUFFER_TOO_SMALL
  656. //
  657. // MessageText:
  658. //
  659. //  The passed buffer for the user certificate property is too small.
  660. //
  661.  MQ_ERROR_SENDER_CERT_BUFFER_TOO_SMALL = 0xC00E002B,
  662. //
  663. // MessageId: MQ_ERROR_INVALID_CERTIFICATE
  664. //
  665. // MessageText:
  666. //
  667. //  The passed buffer for the user certificate property is too small.
  668. //
  669.  MQ_ERROR_INVALID_CERTIFICATE     = 0xC00E002C,
  670. //
  671. // MessageId: MQ_ERROR_CORRUPTED_INTERNAL_CERTIFICATE
  672. //
  673. // MessageText:
  674. //
  675. //  The internal MSMQ certificate is corrupted.
  676. //
  677.  MQ_ERROR_CORRUPTED_INTERNAL_CERTIFICATE = 0xC00E002D,
  678. //
  679. // MessageId: MQ_ERROR_INTERNAL_USER_CERT_EXIST
  680. //
  681. // MessageText:
  682. //
  683. //  The internal MSMQ certificate already exist for this user.
  684. //
  685.  MQ_ERROR_INTERNAL_USER_CERT_EXIST = 0xC00E002E,
  686. //
  687. // MessageId: MQ_ERROR_NO_INTERNAL_USER_CERT
  688. //
  689. // MessageText:
  690. //
  691. //  The internal MSMQ certificate for the user does not exist.
  692. //
  693.  MQ_ERROR_NO_INTERNAL_USER_CERT   = 0xC00E002F,
  694. //
  695. // MessageId: MQ_ERROR_CORRUPTED_SECURITY_DATA
  696. //
  697. // MessageText:
  698. //
  699. //  A cryptogrphic function has failed.
  700. //
  701.  MQ_ERROR_CORRUPTED_SECURITY_DATA = 0xC00E0030,
  702. //
  703. // MessageId: MQ_ERROR_CORRUPTED_PERSONAL_CERT_STORE
  704. //
  705. // MessageText:
  706. //
  707. //  The personal certificate store is corrupted.
  708. //
  709.  MQ_ERROR_CORRUPTED_PERSONAL_CERT_STORE = 0xC00E0031,
  710. //
  711. // MessageId: MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION
  712. //
  713. // MessageText:
  714. //
  715. //  The computer does not support encryption operations.
  716. //
  717.  MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION = 0xC00E0033,
  718. //
  719. // MessageId: MQ_ERROR_BAD_SECURITY_CONTEXT
  720. //
  721. // MessageText:
  722. //
  723. //  Bad security context.
  724. //
  725.  MQ_ERROR_BAD_SECURITY_CONTEXT    = 0xC00E0035,
  726. //
  727. // MessageId: MQ_ERROR_COULD_NOT_GET_USER_SID
  728. //
  729. // MessageText:
  730. //
  731. //  Could not get the SID information out of the thread token.
  732. //
  733.  MQ_ERROR_COULD_NOT_GET_USER_SID  = 0xC00E0036,
  734. //
  735. // MessageId: MQ_ERROR_COULD_NOT_GET_ACCOUNT_INFO
  736. //
  737. // MessageText:
  738. //
  739. //  Could not get the account information for the user.
  740. //
  741.  MQ_ERROR_COULD_NOT_GET_ACCOUNT_INFO = 0xC00E0037,
  742. //
  743. // MessageId: MQ_ERROR_ILLEGAL_MQCOLUMNS
  744. //
  745. // MessageText:
  746. //
  747. //  Invalid MQCOLUMNS parameter
  748. //
  749.  MQ_ERROR_ILLEGAL_MQCOLUMNS       = 0xC00E0038,
  750. //
  751. // MessageId: MQ_ERROR_ILLEGAL_PROPID
  752. //
  753. // MessageText:
  754. //
  755. //  Invalid propid value
  756. //
  757.  MQ_ERROR_ILLEGAL_PROPID          = 0xC00E0039,
  758. //
  759. // MessageId: MQ_ERROR_ILLEGAL_RELATION
  760. //
  761. // MessageText:
  762. //
  763. //  Invalid relation value in restriction
  764. //
  765.  MQ_ERROR_ILLEGAL_RELATION        = 0xC00E003A,
  766. //
  767. // MessageId: MQ_ERROR_ILLEGAL_PROPERTY_SIZE
  768. //
  769. // MessageText:
  770. //
  771. //  ILLEGAL Property Buffer Size
  772. //
  773.  MQ_ERROR_ILLEGAL_PROPERTY_SIZE   = 0xC00E003B,
  774. //
  775. // MessageId: MQ_ERROR_ILLEGAL_RESTRICTION_PROPID
  776. //
  777. // MessageText:
  778. //
  779. //  Invalid propid value in MQRESTRICTION paramter
  780. //
  781.  MQ_ERROR_ILLEGAL_RESTRICTION_PROPID = 0xC00E003C,
  782. //
  783. // MessageId: MQ_ERROR_ILLEGAL_MQQUEUEPROPS
  784. //
  785. // MessageText:
  786. //
  787. //  Illegal MQQUEUEPROPS paramter, either null or with zero properties
  788. //
  789.  MQ_ERROR_ILLEGAL_MQQUEUEPROPS    = 0xC00E003D,
  790. //
  791. // MessageId: MQ_ERROR_PROPERTY_NOTALLOWED
  792. //
  793. // MessageText:
  794. //
  795. //  Invalid propid for the requested operation (e.g. PROPID_Q_INSTANCE
  796. //  in MQSetQueueProperties)
  797. //
  798.  MQ_ERROR_PROPERTY_NOTALLOWED     = 0xC00E003E,
  799. //
  800. // MessageId: MQ_ERROR_INSUFFICIENT_PROPERTIES
  801. //
  802. // MessageText:
  803. //
  804. //  Not all the required properties for the operation were specified
  805. //  in the input paramters
  806. //
  807.  MQ_ERROR_INSUFFICIENT_PROPERTIES = 0xC00E003F,
  808. //
  809. // MessageId: MQ_ERROR_MACHINE_EXISTS
  810. //
  811. // MessageText:
  812. //
  813. //  Computer with the same name already exists in the site.
  814. //
  815.  MQ_ERROR_MACHINE_EXISTS          = 0xC00E0040,
  816. //
  817. // MessageId: MQ_ERROR_ILLEGAL_MQQMPROPS
  818. //
  819. // MessageText:
  820. //
  821. //  Illegal MQQMPROPS paramter, either null or with zero properties
  822. //
  823.  MQ_ERROR_ILLEGAL_MQQMPROPS       = 0xC00E0041,
  824. //
  825. // MessageId: MQ_ERROR_DS_IS_FUL,
  826. //
  827. // MessageText:
  828. //
  829. //  DS is full
  830. //
  831.  MQ_ERROR_DS_IS_FULL              = 0xC00E0042,
  832. //
  833. // MessageId: MQ_ERROR_DS_ERROR
  834. //
  835. // MessageText:
  836. //
  837. //  Internal DS error.
  838. //
  839.  MQ_ERROR_DS_ERROR                = 0xC00E0043,
  840. //
  841. // MessageId: MQ_ERROR_INVALID_OWNER
  842. //
  843. // MessageText:
  844. //
  845. //  Invalid object owner. For example MQCreateQueue failed because the QM
  846. //  object is invalid
  847. //
  848.  MQ_ERROR_INVALID_OWNER           = 0xC00E0044,
  849. //
  850. // MessageId: MQ_ERROR_UNSUPPORTED_ACCESS_MODE
  851. //
  852. // MessageText:
  853. //
  854. //  The specified access mode is not supported.
  855. //
  856.  MQ_ERROR_UNSUPPORTED_ACCESS_MODE = 0xC00E0045,
  857. //
  858. // MessageId: MQ_ERROR_RESULT_BUFFER_TOO_SMALL
  859. //
  860. // MessageText:
  861. //
  862. //  The supplied result buffer is too small
  863. //
  864.  MQ_ERROR_RESULT_BUFFER_TOO_SMALL = 0xC00E0046,
  865. //
  866. // MessageId: MQ_ERROR_DELETE_CN_IN_USE
  867. //
  868. // MessageText:
  869. //
  870. //  The Connected Network can not be deleted, it is in use.
  871. //
  872.  MQ_ERROR_DELETE_CN_IN_USE        = 0xC00E0048,
  873. //
  874. // MessageId: MQ_ERROR_NO_RESPONSE_FROM_OBJECT_SERVER
  875. //
  876. // MessageText:
  877. //
  878. //  No response from object owner.
  879. //
  880.  MQ_ERROR_NO_RESPONSE_FROM_OBJECT_SERVER = 0xC00E0049,
  881. //
  882. // MessageId: MQ_ERROR_OBJECT_SERVER_NOT_AVAILABLE
  883. //
  884. // MessageText:
  885. //
  886. //  Object owner is not reachable.
  887. //
  888.  MQ_ERROR_OBJECT_SERVER_NOT_AVAILABLE = 0xC00E004A,
  889. //
  890. // MessageId: MQ_ERROR_QUEUE_NOT_AVAILABLE
  891. //
  892. // MessageText:
  893. //
  894. //  Error while reading from a queue residing on a remote computer
  895. //
  896.  MQ_ERROR_QUEUE_NOT_AVAILABLE     = 0xC00E004B,
  897. //
  898. // MessageId: MQ_ERROR_DTC_CONNECT
  899. //
  900. // MessageText:
  901. //
  902. //  Cannot connect to MS DTC
  903. //
  904.  MQ_ERROR_DTC_CONNECT             = 0xC00E004C,
  905. //
  906. // MessageId: MQ_ERROR_TRANSACTION_IMPORT
  907. //
  908. // MessageText:
  909. //
  910. //  Cannot import the transaction
  911. //
  912.  MQ_ERROR_TRANSACTION_IMPORT      = 0xC00E004E,
  913. //
  914. // MessageId: MQ_ERROR_TRANSACTION_USAGE
  915. //
  916. // MessageText:
  917. //
  918. //  Wrong transaction usage
  919. //
  920.  MQ_ERROR_TRANSACTION_USAGE       = 0xC00E0050,
  921. //
  922. // MessageId: MQ_ERROR_TRANSACTION_SEQUENCE
  923. //
  924. // MessageText:
  925. //
  926. //  Wrong transaction operations sequence
  927. //
  928.  MQ_ERROR_TRANSACTION_SEQUENCE    = 0xC00E0051,
  929. //
  930. // MessageId: MQ_ERROR_MISSING_CONNECTOR_TYPE
  931. //
  932. // MessageText:
  933. //
  934. //  Connector Type is mandatory when sending Acknowledgment or secure message
  935. //
  936.  MQ_ERROR_MISSING_CONNECTOR_TYPE  = 0xC00E0055,
  937. //
  938. // MessageId: MQ_ERROR_STALE_HANDLE
  939. //
  940. // MessageText:
  941. //
  942. //  The Queue manager service has been restarted. The queue handle
  943. //  is stale, and should be closed.
  944. //
  945.  MQ_ERROR_STALE_HANDLE            = 0xC00E0056,
  946. //
  947. // MessageId: MQ_ERROR_TRANSACTION_ENLIST
  948. //
  949. // MessageText:
  950. //
  951. //  Cannot enlist the transaction
  952. //
  953.  MQ_ERROR_TRANSACTION_ENLIST      = 0xC00E0058,
  954. //
  955. // MessageId: MQ_ERROR_QUEUE_DELETED
  956. //
  957. // MessageText:
  958. //
  959. //  The queue was deleted. Messages can not be received anymore using this
  960. //  queue handle. The handle should be closed
  961. //
  962.  MQ_ERROR_QUEUE_DELETED           = 0xC00E005A,
  963. //
  964. // MessageId: MQ_ERROR_ILLEGAL_CONTEXT
  965. //
  966. // MessageText:
  967. //
  968. //  Invalid context parameter ( MQLocateBegin).
  969. //
  970.  MQ_ERROR_ILLEGAL_CONTEXT         = 0xC00E005B,
  971. //
  972. // MessageId: MQ_ERROR_ILLEGAL_SORT_PROPID
  973. //
  974. // MessageText:
  975. //
  976. //  Invalid propid value in MQSORTSET
  977. //
  978.  MQ_ERROR_ILLEGAL_SORT_PROPID     = 0xC00E005C,
  979. //
  980. // MessageId: MQ_ERROR_LABEL_TOO_LONG
  981. //
  982. // MessageText:
  983. //
  984. //  The passed label is too long. It should be less or equal to MQ_MAX_MSG_LABEL_LEN
  985. //
  986.  MQ_ERROR_LABEL_TOO_LONG          = 0xC00E005D,
  987. //
  988. // MessageId: MQ_ERROR_LABEL_BUFFER_TOO_SMALL
  989. //
  990. // MessageText:
  991. //
  992. //  The label buffer supplied to the api was too small
  993. //
  994.  MQ_ERROR_LABEL_BUFFER_TOO_SMALL  = 0xC00E005E,
  995. //
  996. // MessageId: MQ_ERROR_MQIS_SERVER_EMPTY
  997. //
  998. // MessageText:
  999. //
  1000. //  The list of MQIS servers (in registry) is empty.
  1001. //
  1002.  MQ_ERROR_MQIS_SERVER_EMPTY       = 0xC00E005F,
  1003. //
  1004. // MessageId: MQ_ERROR_MQIS_READONLY_MODE
  1005. //
  1006. // MessageText:
  1007. //
  1008. //  MQIS database is in readonly mode.
  1009. //
  1010.  MQ_ERROR_MQIS_READONLY_MODE      = 0xC00E0060,
  1011. //
  1012. //
  1013. // MessageId: MQ_ERROR_SYMM_KEY_BUFFER_TOO_SMALL
  1014. //
  1015. // MessageText:
  1016. //
  1017. //  The passed buffer for the Symmetric key property is too small.
  1018. //
  1019.  MQ_ERROR_SYMM_KEY_BUFFER_TOO_SMALL     = 0xC00E0061,
  1020. //
  1021. //
  1022. // MessageId: MQ_ERROR_SIGNATURE_BUFFER_TOO_SMALL
  1023. //
  1024. // MessageText:
  1025. //
  1026. //  The passed buffer for the Signature property is too small.
  1027. //
  1028.  MQ_ERROR_SIGNATURE_BUFFER_TOO_SMALL    = 0xC00E0062,
  1029. //
  1030. //
  1031. // MessageId: MQ_ERROR_PROV_NAME_BUFFER_TOO_SMALL
  1032. //
  1033. // MessageText:
  1034. //
  1035. //  The passed buffer for the Provider name property is too small.
  1036. //
  1037.  MQ_ERROR_PROV_NAME_BUFFER_TOO_SMALL    = 0xC00E0063,
  1038. //
  1039. //
  1040. // MessageId: MQ_ERROR_ILLEGAL_OPERATION
  1041. //
  1042. // MessageText:
  1043. //
  1044. //  The operation is illegal on foreign message queuing system
  1045. //
  1046.  MQ_ERROR_ILLEGAL_OPERATION             = 0xC00E0064,
  1047. //
  1048. //
  1049. // MessageId: MQ_ERROR_WRITE_NOT_ALLOWED
  1050. //
  1051. // MessageText:
  1052. //
  1053. //  Another MQIS server is being installed, write operations to the
  1054. //  database are not allowed at this stage.
  1055. //
  1056.  MQ_ERROR_WRITE_NOT_ALLOWED             = 0xC00E0065,
  1057.     } MQERROR;
  1058. //
  1059. // Informational
  1060. //
  1061.     typedef [helpstringcontext(IDS_MQWARNING)] enum _MQWARNING {
  1062. //
  1063. // Informational
  1064. //
  1065. //
  1066. // MessageId: MQ_INFORMATION_PROPERTY
  1067. //
  1068. // MessageText:
  1069. //
  1070. //  One or more of the passed properites resulted in warning but the
  1071. //  function completed.
  1072. //
  1073.  MQ_INFORMATION_PROPERTY          = 0x400E0001,
  1074. //
  1075. // MessageId: MQ_INFORMATION_ILLEGAL_PROPERTY
  1076. //
  1077. // MessageText:
  1078. //
  1079. //  Invalid property id.
  1080. //
  1081.  MQ_INFORMATION_ILLEGAL_PROPERTY  = 0x400E0002,
  1082. //
  1083. // MessageId: MQ_INFORMATION_PROPERTY_IGNORED
  1084. //
  1085. // MessageText:
  1086. //
  1087. //  The specified property is ignored in this operation
  1088. //  (e.g., PROPID_M_SENDERID in SendMessage().
  1089. //
  1090.  MQ_INFORMATION_PROPERTY_IGNORED  = 0x400E0003,
  1091. //
  1092. // MessageId: MQ_INFORMATION_UNSUPPORTED_PROPERTY
  1093. //
  1094. // MessageText:
  1095. //
  1096. //  The specified property is not supprted and is ignored in this operation
  1097. //
  1098.  MQ_INFORMATION_UNSUPPORTED_PROPERTY = 0x400E0004,
  1099. //
  1100. // MessageId: MQ_INFORMATION_DUPLICATE_PROPERTY
  1101. //
  1102. // MessageText:
  1103. //
  1104. //  The specified property already appeared in the propid array, and is
  1105. //  ignored in this operation
  1106. //
  1107.  MQ_INFORMATION_DUPLICATE_PROPERTY = 0x400E0005,
  1108. //
  1109. // MessageId: MQ_INFORMATION_OPERATION_PENDING
  1110. //
  1111. // MessageText:
  1112. //
  1113. //  Asynchronous operation is currently pending.
  1114. //
  1115.  MQ_INFORMATION_OPERATION_PENDING = 0x400E0006,
  1116. //
  1117. // MessageId: MQ_INFORMATION_FORMATNAME_BUFFER_TOO_SMALL
  1118. //
  1119. // MessageText:
  1120. //
  1121. //  The format name buffer supplied to MQCreateQueue was too small
  1122. //  to fit the format name. Queue was created successfuly
  1123. //
  1124.  MQ_INFORMATION_FORMATNAME_BUFFER_TOO_SMALL = 0x400E0009
  1125.     } MQWARNING;
  1126.     // primary dispatch interface for CMSMQQuery object
  1127.     //
  1128.     [
  1129. uuid(D7D6E072-DCCD-11d0-AA4B-0060970DEBAE),
  1130. helpstringcontext(IDS_IMSMQQUERY),
  1131. hidden,
  1132. dual,
  1133. nonextensible,
  1134. odl
  1135.     ]
  1136.     interface IMSMQQuery : IDispatch {
  1137. // properties
  1138. //
  1139. // methods
  1140. //
  1141. [helpstringcontext(IDS_LookupQueue)]
  1142. HRESULT LookupQueue([in, optional] VARIANT *QueueGuid,
  1143.     [in, optional] VARIANT *ServiceTypeGuid,
  1144.     [in, optional] VARIANT *Label,
  1145.     [in, optional] VARIANT *CreateTime,
  1146.     [in, optional] VARIANT *ModifyTime,
  1147.     [in, optional] VARIANT *RelServiceType,
  1148.     [in, optional] VARIANT *RelLabel,
  1149.     [in, optional] VARIANT *RelCreateTime,
  1150.     [in, optional] VARIANT *RelModifyTime,
  1151.     [out, retval] IMSMQQueueInfos **ppqinfos);
  1152. #if 0
  1153. // UNDONE: post-beta2
  1154. HRESULT LookupSite([in, optional] VARIANT *Name,
  1155.    [in, optional] VARIANT *GuidSite,
  1156.    [out, retval] IMSMQSites **ppsites);
  1157. HRESULT LookupMachine([in, optional] VARIANT *Pathname,
  1158.       [in, optional] VARIANT *Sitename,
  1159.       [in, optional] VARIANT *SiteGuid,
  1160.       [in, optional] VARIANT *MachineGuid,
  1161.       [in, optional] VARIANT *Service,
  1162.       [out, retval] IMSMQMachines **ppmachines);
  1163. HRESULT LookupCN([in, optional] VARIANT *Name,
  1164.  [in, optional] VARIANT *Protocol,
  1165.  [in, optional] VARIANT *CNGuid,
  1166.  [out, retval] IMSMQCNs **ppcns);
  1167. #endif // 0
  1168.     };
  1169.     // coclass for CMSMQQuery objects
  1170.     //
  1171.     [
  1172. uuid(D7D6E073-DCCD-11d0-AA4B-0060970DEBAE),
  1173. helpstringcontext(IDS_MSMQQUERY)
  1174.     ]
  1175.     coclass MSMQQuery {
  1176. [default]         interface IMSMQQuery;
  1177.     };
  1178.     // primary dispatch interface for CMSMQMessage object
  1179.     //
  1180.     [
  1181. uuid(D7D6E074-DCCD-11d0-AA4B-0060970DEBAE),
  1182. helpstringcontext(IDS_IMSMQMESSAGE),
  1183. hidden,
  1184. dual,
  1185. odl
  1186.     ]
  1187.     interface IMSMQMessage : IDispatch {
  1188. // properties
  1189. //
  1190. [helpstringcontext(IDS_lClass), propget, id(DISPID_MQMESSAGE_MSGCLASS)]
  1191. HRESULT Class([out, retval] long *plClass);
  1192. [helpstringcontext(IDS_lPrivLevel), propget, id(DISPID_MQMESSAGE_PRIVLEVEL)]
  1193. HRESULT PrivLevel([out, retval] long *plPrivLevel);
  1194. [helpstringcontext(IDS_lPrivLevel), propput, id(DISPID_MQMESSAGE_PRIVLEVEL)]
  1195. HRESULT PrivLevel([in] long lPrivLevel);
  1196. [helpstringcontext(IDS_lAuthLevel), propget, id(DISPID_MQMESSAGE_AUTHLEVEL)]
  1197. HRESULT AuthLevel([out, retval] long *plAuthLevel);
  1198. [helpstringcontext(IDS_lAuthLevel), propput, id(DISPID_MQMESSAGE_AUTHLEVEL)]
  1199. HRESULT AuthLevel([in] long lAuthLevel);
  1200. [helpstringcontext(IDS_isAuthenticated), propget, id(DISPID_MQMESSAGE_AUTHENTICATED)]
  1201. HRESULT IsAuthenticated([out, retval] Boolean *pisAuthenticated);
  1202. [helpstringcontext(IDS_lDelivery), propget, id(DISPID_MQMESSAGE_DELIVERY)]
  1203. HRESULT Delivery([out, retval] long *plDelivery);
  1204. [helpstringcontext(IDS_lDelivery), propput, id(DISPID_MQMESSAGE_DELIVERY)]
  1205. HRESULT Delivery([in] long lDelivery);
  1206. [helpstringcontext(IDS_lTrace), propget, id(DISPID_MQMESSAGE_TRACE)]
  1207. HRESULT Trace([out, retval] long *plTrace);
  1208. [helpstringcontext(IDS_lTrace), propput, id(DISPID_MQMESSAGE_TRACE)]
  1209. HRESULT Trace([in] long lTrace);
  1210. [helpstringcontext(IDS_lPriority), propget, id(DISPID_MQMESSAGE_PRIORITY)]
  1211. HRESULT Priority([out, retval] long *plPriority);
  1212. [helpstringcontext(IDS_lPriority), propput, id(DISPID_MQMESSAGE_PRIORITY)]
  1213. HRESULT Priority([in] long lPriority);
  1214. [helpstringcontext(IDS_lJournal), propget, id(DISPID_MQMESSAGE_JOURNAL)]
  1215. HRESULT Journal([out, retval] long *plJournal);
  1216. [helpstringcontext(IDS_lJournal), propput, id(DISPID_MQMESSAGE_JOURNAL)]
  1217. HRESULT Journal([in] long lJournal);
  1218. [helpstringcontext(IDS_queueinfoResponse), propget, id(DISPID_MQMESSAGE_QUEUEINFORESPONSE)]
  1219. HRESULT ResponseQueueInfo([out, retval] IMSMQQueueInfo **ppqinfoResponse);
  1220. [helpstringcontext(IDS_queueinfoResponse), propputref, id(DISPID_MQMESSAGE_QUEUEINFORESPONSE)]
  1221. HRESULT ResponseQueueInfo([in] IMSMQQueueInfo *pqinfoResponse);
  1222. [helpstringcontext(IDS_lAppSpecific), propget, id(DISPID_MQMESSAGE_APPSPECIFIC)]
  1223. HRESULT AppSpecific([out, retval] long *plAppSpecific);
  1224. [helpstringcontext(IDS_lAppSpecific), propput, id(DISPID_MQMESSAGE_APPSPECIFIC)]
  1225. HRESULT AppSpecific([in] long lAppSpecific);
  1226. [helpstringcontext(IDS_guidSrcMachine), propget, id(DISPID_MQMESSAGE_GUIDSRCMACHINE)]
  1227. HRESULT SourceMachineGuid([out, retval] BSTR *pbstrGuidSrcMachine);
  1228. [helpstringcontext(IDS_lenBody), propget, id(DISPID_MQMESSAGE_LENBODY)]
  1229. HRESULT BodyLength([out, retval] long *pcbBody);
  1230. [helpstringcontext(IDS_body), propget, id(DISPID_MQMESSAGE_BODY)]
  1231. HRESULT Body([out, retval] VARIANT *pvarBody);
  1232. [helpstringcontext(IDS_body), propput, id(DISPID_MQMESSAGE_BODY)]
  1233. HRESULT Body([in] VARIANT varBody);
  1234. [helpstringcontext(IDS_queueinfoAdmin), propget, id(DISPID_MQMESSAGE_QUEUEINFOADMIN)]
  1235. HRESULT AdminQueueInfo([out, retval] IMSMQQueueInfo **ppqinfoAdmin);
  1236. [helpstringcontext(IDS_queueinfoAdmin), propputref, id(DISPID_MQMESSAGE_QUEUEINFOADMIN)]
  1237. HRESULT AdminQueueInfo([in] IMSMQQueueInfo *pqinfoAdmin);
  1238. [helpstringcontext(IDS_id), propget, id(DISPID_MQMESSAGE_ID)]
  1239. HRESULT Id([out, retval] VARIANT *pvarMsgId);
  1240. [helpstringcontext(IDS_idCorrelation), propget, id(DISPID_MQMESSAGE_IDCORRELATION)]
  1241. HRESULT CorrelationId([out, retval] VARIANT *pvarMsgId);
  1242. [helpstringcontext(IDS_idCorrelation), propput, id(DISPID_MQMESSAGE_IDCORRELATION)]
  1243. HRESULT CorrelationId([in] VARIANT varMsgId);
  1244. [helpstringcontext(IDS_lAck), propget, id(DISPID_MQMESSAGE_ACKNOWLEDGE)]
  1245. HRESULT Ack([out, retval] long *plAck);
  1246. [helpstringcontext(IDS_lAck), propput, id(DISPID_MQMESSAGE_ACKNOWLEDGE)]
  1247. HRESULT Ack([in] long lAck);
  1248. [helpstringcontext(IDS_strLabel), propget, id(DISPID_MQMESSAGE_LABEL)]
  1249. HRESULT Label([out, retval] BSTR *pbstrLabel);
  1250. [helpstringcontext(IDS_strLabel), propput, id(DISPID_MQMESSAGE_LABEL)]
  1251. HRESULT Label([in] BSTR bstrLabel);
  1252. [helpstringcontext(IDS_lMaxTimeToReachQueue), propget, id(DISPID_MQMESSAGE_MAXTIMETOREACHQUEUE)]
  1253. HRESULT MaxTimeToReachQueue([out, retval] long *plMaxTimeToReachQueue);
  1254. [helpstringcontext(IDS_lMaxTimeToReachQueue), propput, id(DISPID_MQMESSAGE_MAXTIMETOREACHQUEUE)]
  1255. HRESULT MaxTimeToReachQueue([in] long lMaxTimeToReachQueue);
  1256. [helpstringcontext(IDS_lMaxTimeToReceive), propget, id(DISPID_MQMESSAGE_MAXTIMETORECEIVE)]
  1257. HRESULT MaxTimeToReceive([out, retval] long *plMaxTimeToReceive);
  1258. [helpstringcontext(IDS_lMaxTimeToReceive), propput, id(DISPID_MQMESSAGE_MAXTIMETORECEIVE)]
  1259. HRESULT MaxTimeToReceive([in] long lMaxTimeToReceive);
  1260. [helpstringcontext(IDS_lHashAlg), propget, id(DISPID_MQMESSAGE_HASHALG)]
  1261. HRESULT HashAlgorithm([out, retval] long *plHashAlg);
  1262. [helpstringcontext(IDS_lHashAlg), propput, id(DISPID_MQMESSAGE_HASHALG)]
  1263. HRESULT HashAlgorithm([in] long lHashAlg);
  1264. [helpstringcontext(IDS_lEncryptAlg), propget, id(DISPID_MQMESSAGE_ENCRYPTALG)]
  1265. HRESULT EncryptAlgorithm([out, retval] long *plEncryptAlg);
  1266. [helpstringcontext(IDS_lEncryptAlg), propput, id(DISPID_MQMESSAGE_ENCRYPTALG)]
  1267. HRESULT EncryptAlgorithm([in] long lEncryptAlg);
  1268. [helpstringcontext(IDS_dateSentTime), propget, id(DISPID_MQMESSAGE_SENTTIME)]
  1269. HRESULT SentTime([out, retval] VARIANT *pvarSentTime);
  1270. [helpstringcontext(IDS_dateArrivedTime), propget, id(DISPID_MQMESSAGE_ARRIVEDTIME)]
  1271. HRESULT ArrivedTime([out, retval] VARIANT *plArrivedTime);
  1272. [helpstringcontext(IDS_queueinfoDest), propget, id(DISPID_MQMESSAGE_QUEUEINFODEST)]
  1273. HRESULT DestinationQueueInfo([out, retval] IMSMQQueueInfo **ppqinfoDest);
  1274. [helpstringcontext(IDS_binSenderCert), propget, id(DISPID_MQMESSAGE_SENDERCERT)]
  1275. HRESULT SenderCertificate([out, retval] VARIANT *pvarSenderCert);
  1276. [helpstringcontext(IDS_binSenderCert), propput, id(DISPID_MQMESSAGE_SENDERCERT)]
  1277. HRESULT SenderCertificate([in] VARIANT varSenderCert);
  1278. [helpstringcontext(IDS_binSenderId), propget, id(DISPID_MQMESSAGE_SENDERID)]
  1279. HRESULT SenderId([out, retval] VARIANT *pvarSenderId);
  1280. [helpstringcontext(IDS_lSenderIdType), propget, id(DISPID_MQMESSAGE_SENDERIDTYPE)]
  1281. HRESULT SenderIdType([out, retval] long *plSenderIdType);
  1282. [helpstringcontext(IDS_lSenderIdType), propput, id(DISPID_MQMESSAGE_SENDERIDTYPE)]
  1283. HRESULT SenderIdType([in] long lSenderIdType);
  1284. // methods
  1285. //
  1286. [helpstringcontext(IDS_Send)]
  1287. HRESULT Send(
  1288.   [in] IMSMQQueue *DestinationQueue,
  1289.   [in, optional] VARIANT *Transaction);
  1290. [helpstringcontext(IDS_AttachCurrentSecurityContext)]
  1291. HRESULT AttachCurrentSecurityContext();
  1292.     };
  1293.     // coclass for CMSMQMessage objects
  1294.     //
  1295.     [
  1296. uuid(D7D6E075-DCCD-11d0-AA4B-0060970DEBAE),
  1297. helpstringcontext(IDS_MSMQMESSAGE),
  1298.     ]
  1299.     coclass MSMQMessage {
  1300. [default]         interface IMSMQMessage;
  1301.     };
  1302.     // primary dispatch interface for CMSMQQueue object
  1303.     //
  1304.     [
  1305. uuid(D7D6E076-DCCD-11d0-AA4B-0060970DEBAE),
  1306. helpstringcontext(IDS_IMSMQQUEUE),
  1307. hidden,
  1308. dual,
  1309. odl
  1310.     ]
  1311.     interface IMSMQQueue : IDispatch {
  1312. // properties
  1313. //
  1314. [helpstringcontext(IDS_lAccess), propget, id(DISPID_MQQUEUE_ACCESS)]
  1315. HRESULT Access([out, retval] long *plAccess);
  1316. [helpstringcontext(IDS_lShareMode), propget, id(DISPID_MQQUEUE_SHAREMODE)]
  1317. HRESULT ShareMode([out, retval] long *plShareMode);
  1318. [helpstringcontext(IDS_queueinfo), propget, id(DISPID_MQQUEUE_QUEUEINFO)]
  1319. HRESULT QueueInfo([out, retval] IMSMQQueueInfo **ppqinfo);
  1320. [helpstringcontext(IDS_lHandle), propget, id(DISPID_MQQUEUE_HANDLE)]
  1321. HRESULT Handle([out, retval] long *plHandle);
  1322. [helpstringcontext(IDS_isOpen), propget, id(DISPID_MQQUEUE_ISOPEN)]
  1323. HRESULT IsOpen([out, retval] Boolean *pisOpen);
  1324. // methods
  1325. //
  1326. [helpstringcontext(IDS_Close)]
  1327. HRESULT Close();
  1328. [helpstringcontext(IDS_Receive)]
  1329. HRESULT Receive(
  1330.   [in, optional] VARIANT *Transaction,
  1331.   [in, optional] VARIANT *WantDestinationQueue,
  1332.   [in, optional] VARIANT *WantBody,
  1333.   [in, optional] VARIANT *ReceiveTimeout,
  1334.   [out, retval] IMSMQMessage **ppmsg);
  1335. [helpstringcontext(IDS_Peek)]
  1336. HRESULT Peek(
  1337.   [in, optional] VARIANT *WantDestinationQueue,
  1338.   [in, optional] VARIANT *WantBody,
  1339.   [in, optional] VARIANT *ReceiveTimeout,
  1340.   [out, retval] IMSMQMessage **ppmsg);
  1341. [helpstringcontext(IDS_EnableNotification)]
  1342. HRESULT EnableNotification(
  1343.   [in] IMSMQEvent *Event,
  1344.   [in , optional] VARIANT *Cursor,
  1345.   [in, optional] VARIANT *ReceiveTimeout);
  1346. [helpstringcontext(IDS_Reset)]
  1347. HRESULT Reset();
  1348. [helpstringcontext(IDS_ReceiveCurrent)]
  1349. HRESULT ReceiveCurrent(
  1350.   [in, optional] VARIANT *Transaction,
  1351.   [in, optional] VARIANT *WantDestinationQueue,
  1352.   [in, optional] VARIANT *WantBody,
  1353.   [in, optional] VARIANT *ReceiveTimeout,
  1354.   [out, retval] IMSMQMessage **ppmsg);
  1355. [helpstringcontext(IDS_PeekNext)]
  1356. HRESULT PeekNext(
  1357.   [in, optional] VARIANT *WantDestinationQueue,
  1358.   [in, optional] VARIANT *WantBody,
  1359.   [in, optional] VARIANT *ReceiveTimeout,
  1360.   [out, retval] IMSMQMessage **ppmsg);
  1361. [helpstringcontext(IDS_PeekCurrent)]
  1362. HRESULT PeekCurrent(
  1363.   [in, optional] VARIANT *WantDestinationQueue,
  1364.   [in, optional] VARIANT *WantBody,
  1365.   [in, optional] VARIANT *ReceiveTimeout,
  1366.   [out, retval] IMSMQMessage **ppmsg);
  1367.     };
  1368.     // secondary unknown interface for CMSMQEvent object
  1369.     //
  1370.     [
  1371. uuid(D7AB3341-C9D3-11d1-BB47-0080C7C5A2C0),
  1372. hidden,
  1373.         dual,
  1374.         odl
  1375.     ]
  1376.     interface IMSMQPrivateEvent : IDispatch {
  1377. // properties
  1378. //
  1379. [propget]
  1380. HRESULT Hwnd([out, retval] long *phwnd);
  1381. // [propget]
  1382. // HRESULT HEvent([out, retval] long *phEvent);
  1383.         // methods
  1384.         //
  1385.         HRESULT FireArrivedEvent(
  1386.           [in] IMSMQQueue *pq,
  1387.           [in] long msgcursor);
  1388.         HRESULT FireArrivedErrorEvent(
  1389.           [in] IMSMQQueue *pq,
  1390.           [in] HRESULT hrStatus,
  1391.           [in] long msgcursor);
  1392.     }
  1393.     // primary dispatch interface for CMSMQEvent object
  1394.     //
  1395.     [
  1396. uuid(D7D6E077-DCCD-11d0-AA4B-0060970DEBAE),
  1397. helpstringcontext(IDS_IMSMQEVENT),
  1398. hidden,
  1399. dual,
  1400. odl
  1401.     ]
  1402.     interface IMSMQEvent : IDispatch {
  1403.     }
  1404.     // event interface for CMSMQEvent objects
  1405.     //
  1406.     [
  1407. uuid(D7D6E078-DCCD-11d0-AA4B-0060970DEBAE),
  1408. helpstringcontext(IDS_DMSMQEVENTEVENTS),
  1409. hidden
  1410.     ]
  1411.     dispinterface _DMSMQEventEvents {
  1412.       properties:
  1413.       methods:
  1414. [id(DISPID_MQEVENTEVENTS_ARRIVED),
  1415.  helpstringcontext(IDS_Arrived)]
  1416. void Arrived(
  1417.   [in] IDispatch *Queue, 
  1418.   [in] long Cursor);
  1419. [id(DISPID_MQEVENTEVENTS_ARRIVEDERROR),
  1420.  helpstringcontext(IDS_ArrivedError)]
  1421. void ArrivedError(
  1422.   [in] IDispatch *Queue,
  1423.   [in] long ErrorCode,
  1424.   [in] long Cursor);
  1425.     };
  1426.     // coclass for CMSMQQueue objects
  1427.     //
  1428.     [
  1429. uuid(D7D6E079-DCCD-11d0-AA4B-0060970DEBAE),
  1430. helpstringcontext(IDS_MSMQQUEUE)
  1431.     ]
  1432.     coclass MSMQQueue {
  1433. [default]         interface IMSMQQueue;
  1434.     };
  1435.     // coclass for CMSMQEvent objects
  1436.     //
  1437.     [
  1438. uuid(D7D6E07A-DCCD-11d0-AA4B-0060970DEBAE),
  1439. helpstringcontext(IDS_MSMQEVENT)
  1440.     ]
  1441.     coclass MSMQEvent {
  1442. [default]         interface IMSMQEvent;
  1443.         interface IMSMQPrivateEvent;
  1444. [default, source] dispinterface _DMSMQEventEvents;
  1445.     };
  1446.     // primary dispatch interface for CMSMQQueueInfo object
  1447.     //
  1448.     [
  1449. uuid(D7D6E07B-DCCD-11d0-AA4B-0060970DEBAE),
  1450. helpstringcontext(IDS_IMSMQQUEUEINFO),
  1451. hidden,
  1452. dual,
  1453. odl
  1454.     ]
  1455.     interface IMSMQQueueInfo : IDispatch {
  1456. // properties
  1457. //
  1458. [helpstringcontext(IDS_guidQueue), propget, id(DISPID_MQQUEUEINFO_GUIDQUEUE)]
  1459. HRESULT QueueGuid([out, retval] BSTR *pbstrGuidQueue);
  1460. [helpstringcontext(IDS_guidServiceType), propget, id(DISPID_MQQUEUEINFO_GUIDSERVICETYPE)]
  1461. HRESULT ServiceTypeGuid([out, retval] BSTR *pbstrGuidServiceType);
  1462. [helpstringcontext(IDS_guidServiceType), propput, id(DISPID_MQQUEUEINFO_GUIDSERVICETYPE)]
  1463. HRESULT ServiceTypeGuid([in] BSTR bstrGuidServiceType);
  1464. [helpstringcontext(IDS_MSMQQueueInfo_strLabel), propget, id(DISPID_MQQUEUEINFO_LABEL)]
  1465. HRESULT Label([out, retval] BSTR *pbstrLabel);
  1466. [helpstringcontext(IDS_MSMQQueueInfo_strLabel), propput, id(DISPID_MQQUEUEINFO_LABEL)]
  1467. HRESULT Label([in] BSTR bstrLabel);
  1468. [helpstringcontext(IDS_strPathName), propget, id(DISPID_MQQUEUEINFO_PATHNAME)]
  1469. HRESULT PathName([out, retval] BSTR *pbstrPathName);
  1470. [helpstringcontext(IDS_strPathName), propput, id(DISPID_MQQUEUEINFO_PATHNAME)]
  1471. HRESULT PathName([in] BSTR bstrPathName);
  1472. [helpstringcontext(IDS_strFormatName), propget, id(DISPID_MQQUEUEINFO_FORMATNAME)]
  1473. HRESULT FormatName([out, retval] BSTR *pbstrFormatName);
  1474. [helpstringcontext(IDS_strFormatName), propput, id(DISPID_MQQUEUEINFO_FORMATNAME)]
  1475. HRESULT FormatName([in] BSTR bstrFormatName);
  1476. [helpstringcontext(IDS_isTransactional), propget, id(DISPID_MQQUEUEINFO_ISTRANSACTIONAL)]
  1477. HRESULT IsTransactional([out, retval] Boolean *pisTransactional);
  1478. [helpstringcontext(IDS_MSMQQueueInfo_lPrivLevel), propget, id(DISPID_MQQUEUEINFO_PRIVLEVEL)]
  1479. HRESULT PrivLevel([out, retval] long *plPrivLevel);
  1480. [helpstringcontext(IDS_MSMQQueueInfo_lPrivLevel), propput, id(DISPID_MQQUEUEINFO_PRIVLEVEL)]
  1481. HRESULT PrivLevel([in] long lPrivLevel);
  1482. [helpstringcontext(IDS_MSMQQueueInfo_lJournal), propget, id(DISPID_MQQUEUEINFO_JOURNAL)]
  1483. HRESULT Journal([out, retval] long *plJournal);
  1484. [helpstringcontext(IDS_MSMQQueueInfo_lJournal), propput, id(DISPID_MQQUEUEINFO_JOURNAL)]
  1485. HRESULT Journal([in] long lJournal);
  1486. [helpstringcontext(IDS_lQuota), propget, id(DISPID_MQQUEUEINFO_QUOTA)]
  1487. HRESULT Quota([out, retval] long *plQuota);
  1488. [helpstringcontext(IDS_lQuota), propput, id(DISPID_MQQUEUEINFO_QUOTA)]
  1489. HRESULT Quota([in] long lQuota);
  1490. [helpstringcontext(IDS_lBasePriority), propget, id(DISPID_MQQUEUEINFO_BASEPRIORITY)]
  1491. HRESULT BasePriority([out, retval] long *plBasePriority);
  1492. [helpstringcontext(IDS_lBasePriority), propput, id(DISPID_MQQUEUEINFO_BASEPRIORITY)]
  1493. HRESULT BasePriority([in] long lBasePriority);
  1494. [helpstringcontext(IDS_dateCreateTime), propget, id(DISPID_MQQUEUEINFO_CREATETIME)]
  1495. HRESULT CreateTime([out, retval] VARIANT *pvarCreateTime);
  1496. [helpstringcontext(IDS_dateModifyTime), propget, id(DISPID_MQQUEUEINFO_MODIFYTIME)]
  1497. HRESULT ModifyTime([out, retval] VARIANT *pvarModifyTime);
  1498. [helpstringcontext(IDS_lAuthenticate), propget, id(DISPID_MQQUEUEINFO_AUTHENTICATE)]
  1499. HRESULT Authenticate([out, retval] long *plAuthenticate);
  1500. [helpstringcontext(IDS_lAuthenticate), propput, id(DISPID_MQQUEUEINFO_AUTHENTICATE)]
  1501. HRESULT Authenticate([in] long lAuthenticate);
  1502. [helpstringcontext(IDS_lJournalQuota), propget, id(DISPID_MQQUEUEINFO_JOURNALQUOTA)]
  1503. HRESULT JournalQuota([out, retval] long *plJournalQuota);
  1504. [helpstringcontext(IDS_lJournalQuota), propput, id(DISPID_MQQUEUEINFO_JOURNALQUOTA)]
  1505. HRESULT JournalQuota([in] long lJournalQuota);
  1506. [helpstringcontext(IDS_IsWorldReadable), propget, id(DISPID_MQQUEUEINFO_ISWORLDREADABLE)]
  1507. HRESULT IsWorldReadable([out, retval] Boolean *pisWorldReadable);
  1508. // methods
  1509. //
  1510. [helpstringcontext(IDS_Create)]
  1511. HRESULT Create(
  1512.   [in, optional] VARIANT *IsTransactional,
  1513.   [in, optional] VARIANT *IsWorldReadable);
  1514. [helpstringcontext(IDS_Delete)]
  1515. HRESULT Delete();
  1516. [helpstringcontext(IDS_Open)]
  1517. HRESULT Open([in] long Access,
  1518.      [in] long ShareMode,
  1519.      [out, retval] IMSMQQueue **ppq);
  1520. [helpstringcontext(IDS_Refresh)]
  1521. HRESULT Refresh();
  1522. [helpstringcontext(IDS_Update)]
  1523. HRESULT Update();
  1524.     };
  1525.     // coclass for CMSMQQueueInfo objects
  1526.     //
  1527.     [
  1528. uuid(D7D6E07C-DCCD-11d0-AA4B-0060970DEBAE),
  1529. helpstringcontext(IDS_MSMQQUEUEINFO)
  1530.     ]
  1531.     coclass MSMQQueueInfo {
  1532. [default]         interface IMSMQQueueInfo;
  1533.     };
  1534.     // primary dispatch interface for CMSMQQueueInfos object
  1535.     //
  1536.     [
  1537. uuid(D7D6E07D-DCCD-11d0-AA4B-0060970DEBAE),
  1538. helpstringcontext(IDS_IMSMQQUEUEINFOS),
  1539. hidden,
  1540. dual,
  1541. odl
  1542.     ]
  1543.     interface IMSMQQueueInfos : IDispatch {
  1544. // properties
  1545. //
  1546. // methods
  1547. //
  1548. [helpstringcontext(IDS_MSMQQueueInfos_Reset)]
  1549. HRESULT Reset();
  1550. [helpstringcontext(IDS_MSMQQueueInfos_Next)]
  1551. HRESULT Next([out, retval] IMSMQQueueInfo **ppqinfoNext);
  1552.     };
  1553.     // coclass for CMSMQQueueInfos objects
  1554.     //
  1555.     [
  1556. uuid(D7D6E07E-DCCD-11d0-AA4B-0060970DEBAE),
  1557. helpstringcontext(IDS_MSMQQUEUEINFOS)
  1558.     ]
  1559.     coclass MSMQQueueInfos {
  1560. [default]         interface IMSMQQueueInfos;
  1561.     };
  1562.     //
  1563.     // Transactions
  1564.     //
  1565.     typedef struct _MQBOID
  1566.     {
  1567.       BYTE rgb[ 16 ];
  1568.     } MQBOID;
  1569.     typedef MQBOID MQXACTUOW;
  1570.     typedef LONG MQISOLEVEL;
  1571.     typedef struct _MQXACTTRANSINFO
  1572.     {
  1573.       MQXACTUOW uow;
  1574.       MQISOLEVEL isoLevel;
  1575.       ULONG isoFlags;
  1576.       DWORD grfTCSupported;
  1577.       DWORD grfRMSupported;
  1578.       DWORD grfTCSupportedRetaining;
  1579.       DWORD grfRMSupportedRetaining;
  1580.     } MQXACTTRANSINFO;
  1581. // UNDONE: should be a way to track transact.h
  1582. #define IID_ITRANSACTION 0fb15084-af41-11ce-bd2b-204c4f4f5020
  1583.     // primary dispatch interface for CMSMQTransaction object
  1584.     //
  1585.     [
  1586. uuid(D7D6E07F-DCCD-11d0-AA4B-0060970DEBAE),
  1587. helpstringcontext(IDS_IMSMQTRANSACTION),
  1588. hidden,
  1589. dual,
  1590. odl
  1591.     ]
  1592.     interface IMSMQTransaction : IDispatch {
  1593.       // properties
  1594.       //
  1595.       [helpstringcontext(IDS_lTransaction), propget, id(DISPID_MQTRANSACTION_TRANSACTION)]
  1596.       HRESULT Transaction([out, retval] long *plTransaction);
  1597.       
  1598.       // methods
  1599.       //
  1600.       [helpstringcontext(IDS_Commit)]
  1601.       HRESULT Commit([in, optional] VARIANT *fRetaining,
  1602.      [in, optional] VARIANT *grfTC,
  1603.      [in, optional] VARIANT *grfRM);
  1604.       [helpstringcontext(IDS_Abort)]
  1605.       HRESULT Abort([in, optional] VARIANT *fRetaining,
  1606.     [in, optional] VARIANT *fAsync);
  1607.       // UNDONE: HRESULT GetTransactionInfo([out] void *pvInfo);
  1608.     };
  1609.     // coclass for CMSMQTransaction objects
  1610.     //
  1611.     [
  1612. uuid(D7D6E080-DCCD-11d0-AA4B-0060970DEBAE),
  1613. helpstringcontext(IDS_MSMQTRANSACTION)
  1614.     ]
  1615.     coclass MSMQTransaction {
  1616. [default]         interface IMSMQTransaction;
  1617.     };
  1618.     // primary dispatch interface for CMSMQCoordinatedTransactionDispenser object
  1619.     //
  1620.     [
  1621. uuid(D7D6E081-DCCD-11d0-AA4B-0060970DEBAE),
  1622. helpstringcontext(IDS_IMSMQCOORDINATEDTRANSACTIONDISPENSER),
  1623. hidden,
  1624. dual,
  1625. odl
  1626.     ]
  1627.     interface IMSMQCoordinatedTransactionDispenser : IDispatch {
  1628.       [helpstringcontext(IDS_BeginTransaction)]
  1629.       HRESULT BeginTransaction(
  1630. [out, retval] IMSMQTransaction **ptransaction);
  1631.     };
  1632.     // coclass for CMSMQCoordinatedTransactionDispenser objects
  1633.     //
  1634.     [
  1635. uuid(D7D6E082-DCCD-11d0-AA4B-0060970DEBAE),
  1636. helpstringcontext(IDS_MSMQCOORDINATEDTRANSACTIONDISPENSER)
  1637.     ]
  1638.     coclass MSMQCoordinatedTransactionDispenser {
  1639. [default]         interface IMSMQCoordinatedTransactionDispenser;
  1640.     };
  1641.     // primary dispatch interface for CMSMQTransactionDispenser object
  1642.     //
  1643.     [
  1644. uuid(D7D6E083-DCCD-11d0-AA4B-0060970DEBAE),
  1645. helpstringcontext(IDS_IMSMQTRANSACTIONDISPENSER),
  1646. hidden,
  1647. dual,
  1648. odl
  1649.     ]
  1650.     interface IMSMQTransactionDispenser : IDispatch {
  1651.       [helpstringcontext(IDS_BeginTransaction)]
  1652.       HRESULT BeginTransaction(
  1653. [out, retval] IMSMQTransaction **ptransaction);
  1654.     };
  1655.     // coclass for CMSMQTransactionDispenser objects
  1656.     //
  1657.     [
  1658. uuid(D7D6E084-DCCD-11d0-AA4B-0060970DEBAE),
  1659. helpstringcontext(IDS_MSMQTRANSACTIONDISPENSER)
  1660.     ]
  1661.     coclass MSMQTransactionDispenser {
  1662. [default]         interface IMSMQTransactionDispenser;
  1663.     };
  1664.     // primary dispatch interface for CMSMQApplication object
  1665.     //
  1666.     [
  1667. uuid(D7D6E085-DCCD-11d0-AA4B-0060970DEBAE),
  1668. helpstringcontext(IDS_IMSMQAPPLICATION),
  1669. hidden,
  1670. dual,
  1671. odl
  1672.     ]
  1673.     interface IMSMQApplication : IDispatch {
  1674.       // methods
  1675.       //
  1676.       [helpstringcontext(IDS_StrMachineIdOfMachineName)]
  1677.       HRESULT MachineIdOfMachineName(
  1678. [in] BSTR MachineName,
  1679. [out, retval] BSTR *pbstrGuid
  1680. );
  1681.     };
  1682.     // coclass for CMSMQApplication objects
  1683.     //
  1684.     [
  1685. uuid(D7D6E086-DCCD-11d0-AA4B-0060970DEBAE),
  1686. appobject,
  1687. helpstringcontext(IDS_MSMQAPPLICATION)
  1688.     ]
  1689.     coclass MSMQApplication {
  1690. [default]         interface IMSMQApplication;
  1691.     };
  1692. };