Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2366 lines
62 KiB

  1. /*++
  2. Copyright (c) 1996-2001, Microsoft Corporation
  3. Module Name:
  4. mq.h
  5. Abstract:
  6. Master include file for Message Queuing applications
  7. --*/
  8. #ifndef __MQ_H__
  9. #define __MQ_H__
  10. #if defined (_MSC_VER) && (_MSC_VER >= 1020)
  11. #pragma once
  12. #endif
  13. #ifndef __ITransaction_FWD_DEFINED__
  14. #define __ITransaction_FWD_DEFINED__
  15. typedef interface ITransaction ITransaction;
  16. #endif // __ITransaction_FWD_DEFINED__
  17. #ifdef __midl
  18. // This is the PROPVARIANT definition for marshaling.
  19. typedef struct tag_inner_PROPVARIANT tagMQPROPVARIANT;
  20. #else
  21. // This is the standard C layout of the PROPVARIANT.
  22. typedef struct tagPROPVARIANT tagMQPROPVARIANT;
  23. #endif
  24. typedef tagMQPROPVARIANT MQPROPVARIANT;
  25. #define PRLT ( 0 )
  26. #define PRLE ( 1 )
  27. #define PRGT ( 2 )
  28. #define PRGE ( 3 )
  29. #define PREQ ( 4 )
  30. #define PRNE ( 5 )
  31. typedef struct tagMQPROPERTYRESTRICTION
  32. {
  33. ULONG rel;
  34. PROPID prop;
  35. MQPROPVARIANT prval;
  36. } MQPROPERTYRESTRICTION;
  37. typedef struct tagMQRESTRICTION
  38. {
  39. ULONG cRes;
  40. /* [size_is] */ MQPROPERTYRESTRICTION *paPropRes;
  41. } MQRESTRICTION;
  42. typedef struct tagMQCOLUMNSET
  43. {
  44. ULONG cCol;
  45. /* [size_is] */ PROPID *aCol;
  46. } MQCOLUMNSET;
  47. #define QUERY_SORTASCEND ( 0 )
  48. #define QUERY_SORTDESCEND ( 1 )
  49. typedef struct tagMQSORTKEY
  50. {
  51. PROPID propColumn;
  52. ULONG dwOrder;
  53. } MQSORTKEY;
  54. typedef struct tagMQSORTSET
  55. {
  56. ULONG cCol;
  57. /* [size_is] */ MQSORTKEY *aCol;
  58. } MQSORTSET;
  59. #define MQ_MAX_Q_NAME_LEN 124 // Maximal WCHAR length of a queue name.
  60. #define MQ_MAX_Q_LABEL_LEN 124
  61. #define MQ_MAX_MSG_LABEL_LEN 250
  62. typedef HANDLE QUEUEHANDLE;
  63. typedef PROPID MSGPROPID;
  64. typedef struct tagMQMSGPROPS
  65. {
  66. DWORD cProp;
  67. MSGPROPID* aPropID;
  68. MQPROPVARIANT* aPropVar;
  69. HRESULT* aStatus;
  70. } MQMSGPROPS;
  71. typedef PROPID QUEUEPROPID;
  72. typedef struct tagMQQUEUEPROPS
  73. {
  74. DWORD cProp;
  75. QUEUEPROPID* aPropID;
  76. MQPROPVARIANT* aPropVar;
  77. HRESULT* aStatus;
  78. } MQQUEUEPROPS;
  79. typedef PROPID QMPROPID;
  80. typedef struct tagMQQMPROPS
  81. {
  82. DWORD cProp;
  83. QMPROPID* aPropID;
  84. MQPROPVARIANT* aPropVar;
  85. HRESULT* aStatus;
  86. } MQQMPROPS;
  87. typedef struct tagMQPRIVATEPROPS
  88. {
  89. DWORD cProp;
  90. QMPROPID* aPropID;
  91. MQPROPVARIANT* aPropVar;
  92. HRESULT* aStatus;
  93. } MQPRIVATEPROPS;
  94. typedef PROPID MGMTPROPID;
  95. typedef struct tagMQMGMTPROPS
  96. {
  97. DWORD cProp;
  98. MGMTPROPID* aPropID;
  99. MQPROPVARIANT* aPropVar;
  100. HRESULT* aStatus;
  101. } MQMGMTPROPS;
  102. typedef struct tagSEQUENCE_INFO
  103. {
  104. LONGLONG SeqID;
  105. ULONG SeqNo;
  106. ULONG PrevNo;
  107. } SEQUENCE_INFO;
  108. //********************************************************************
  109. // API FLAGS
  110. //********************************************************************
  111. //
  112. // MQOpenQueue - Access values
  113. //
  114. #define MQ_RECEIVE_ACCESS 0x00000001
  115. #define MQ_SEND_ACCESS 0x00000002
  116. #define MQ_PEEK_ACCESS 0x00000020
  117. #define MQ_ADMIN_ACCESS 0x00000080
  118. //
  119. // MQOpenQueue - Share values
  120. //
  121. #define MQ_DENY_NONE 0x00000000
  122. #define MQ_DENY_RECEIVE_SHARE 0x00000001
  123. //
  124. // MQReceiveMessage - Action values
  125. //
  126. #define MQ_ACTION_RECEIVE 0x00000000
  127. #define MQ_ACTION_PEEK_CURRENT 0x80000000
  128. #define MQ_ACTION_PEEK_NEXT 0x80000001
  129. //
  130. // MQReceiveMessageByLookupId - Action values
  131. //
  132. #define MQ_LOOKUP_PEEK_CURRENT 0x40000010
  133. #define MQ_LOOKUP_PEEK_NEXT 0x40000011
  134. #define MQ_LOOKUP_PEEK_PREV 0x40000012
  135. #define MQ_LOOKUP_PEEK_FIRST 0x40000014
  136. #define MQ_LOOKUP_PEEK_LAST 0x40000018
  137. #define MQ_LOOKUP_RECEIVE_CURRENT 0x40000020
  138. #define MQ_LOOKUP_RECEIVE_NEXT 0x40000021
  139. #define MQ_LOOKUP_RECEIVE_PREV 0x40000022
  140. #define MQ_LOOKUP_RECEIVE_FIRST 0x40000024
  141. #define MQ_LOOKUP_RECEIVE_LAST 0x40000028
  142. //
  143. // MQSendMessage, MQReceiveMessage: special cases for the transaction parameter
  144. //
  145. #define MQ_NO_TRANSACTION NULL
  146. #define MQ_MTS_TRANSACTION (ITransaction *)1
  147. #define MQ_XA_TRANSACTION (ITransaction *)2
  148. #define MQ_SINGLE_MESSAGE (ITransaction *)3
  149. //********************************************************************
  150. // PRIORITY LIMITS
  151. //********************************************************************
  152. //
  153. // Message priorities
  154. //
  155. #define MQ_MIN_PRIORITY 0 // Minimal message priority
  156. #define MQ_MAX_PRIORITY 7 // Maximal message priority
  157. //********************************************************************
  158. // MESSAGE PROPERTIES
  159. //********************************************************************
  160. #define PROPID_M_BASE 0
  161. #define PROPID_M_CLASS (PROPID_M_BASE + 1) /* VT_UI2 */
  162. #define PROPID_M_MSGID (PROPID_M_BASE + 2) /* VT_UI1|VT_VECTOR */
  163. #define PROPID_M_CORRELATIONID (PROPID_M_BASE + 3) /* VT_UI1|VT_VECTOR */
  164. #define PROPID_M_PRIORITY (PROPID_M_BASE + 4) /* VT_UI1 */
  165. #define PROPID_M_DELIVERY (PROPID_M_BASE + 5) /* VT_UI1 */
  166. #define PROPID_M_ACKNOWLEDGE (PROPID_M_BASE + 6) /* VT_UI1 */
  167. #define PROPID_M_JOURNAL (PROPID_M_BASE + 7) /* VT_UI1 */
  168. #define PROPID_M_APPSPECIFIC (PROPID_M_BASE + 8) /* VT_UI4 */
  169. #define PROPID_M_BODY (PROPID_M_BASE + 9) /* VT_UI1|VT_VECTOR */
  170. #define PROPID_M_BODY_SIZE (PROPID_M_BASE + 10) /* VT_UI4 */
  171. #define PROPID_M_LABEL (PROPID_M_BASE + 11) /* VT_LPWSTR */
  172. #define PROPID_M_LABEL_LEN (PROPID_M_BASE + 12) /* VT_UI4 */
  173. #define PROPID_M_TIME_TO_REACH_QUEUE (PROPID_M_BASE + 13) /* VT_UI4 */
  174. #define PROPID_M_TIME_TO_BE_RECEIVED (PROPID_M_BASE + 14) /* VT_UI4 */
  175. #define PROPID_M_RESP_QUEUE (PROPID_M_BASE + 15) /* VT_LPWSTR */
  176. #define PROPID_M_RESP_QUEUE_LEN (PROPID_M_BASE + 16) /* VT_UI4 */
  177. #define PROPID_M_ADMIN_QUEUE (PROPID_M_BASE + 17) /* VT_LPWSTR */
  178. #define PROPID_M_ADMIN_QUEUE_LEN (PROPID_M_BASE + 18) /* VT_UI4 */
  179. #define PROPID_M_VERSION (PROPID_M_BASE + 19) /* VT_UI4 */
  180. #define PROPID_M_SENDERID (PROPID_M_BASE + 20) /* VT_UI1|VT_VECTOR */
  181. #define PROPID_M_SENDERID_LEN (PROPID_M_BASE + 21) /* VT_UI4 */
  182. #define PROPID_M_SENDERID_TYPE (PROPID_M_BASE + 22) /* VT_UI4 */
  183. #define PROPID_M_PRIV_LEVEL (PROPID_M_BASE + 23) /* VT_UI4 */
  184. #define PROPID_M_AUTH_LEVEL (PROPID_M_BASE + 24) /* VT_UI4 */
  185. #define PROPID_M_AUTHENTICATED (PROPID_M_BASE + 25) /* VT_UI1 */
  186. #define PROPID_M_HASH_ALG (PROPID_M_BASE + 26) /* VT_UI4 */
  187. #define PROPID_M_ENCRYPTION_ALG (PROPID_M_BASE + 27) /* VT_UI4 */
  188. #define PROPID_M_SENDER_CERT (PROPID_M_BASE + 28) /* VT_UI1|VT_VECTOR */
  189. #define PROPID_M_SENDER_CERT_LEN (PROPID_M_BASE + 29) /* VT_UI4 */
  190. #define PROPID_M_SRC_MACHINE_ID (PROPID_M_BASE + 30) /* VT_CLSID */
  191. #define PROPID_M_SENTTIME (PROPID_M_BASE + 31) /* VT_UI4 */
  192. #define PROPID_M_ARRIVEDTIME (PROPID_M_BASE + 32) /* VT_UI4 */
  193. #define PROPID_M_DEST_QUEUE (PROPID_M_BASE + 33) /* VT_LPWSTR */
  194. #define PROPID_M_DEST_QUEUE_LEN (PROPID_M_BASE + 34) /* VT_UI4 */
  195. #define PROPID_M_EXTENSION (PROPID_M_BASE + 35) /* VT_UI1|VT_VECTOR */
  196. #define PROPID_M_EXTENSION_LEN (PROPID_M_BASE + 36) /* VT_UI4 */
  197. #define PROPID_M_SECURITY_CONTEXT (PROPID_M_BASE + 37) /* VT_UI4 */
  198. #define PROPID_M_CONNECTOR_TYPE (PROPID_M_BASE + 38) /* VT_CLSID */
  199. #define PROPID_M_XACT_STATUS_QUEUE (PROPID_M_BASE + 39) /* VT_LPWSTR */
  200. #define PROPID_M_XACT_STATUS_QUEUE_LEN (PROPID_M_BASE + 40) /* VT_UI4 */
  201. #define PROPID_M_TRACE (PROPID_M_BASE + 41) /* VT_UI1 */
  202. #define PROPID_M_BODY_TYPE (PROPID_M_BASE + 42) /* VT_UI4 */
  203. #define PROPID_M_DEST_SYMM_KEY (PROPID_M_BASE + 43) /* VT_UI1|VT_VECTOR */
  204. #define PROPID_M_DEST_SYMM_KEY_LEN (PROPID_M_BASE + 44) /* VT_UI4 */
  205. #define PROPID_M_SIGNATURE (PROPID_M_BASE + 45) /* VT_UI1|VT_VECTOR */
  206. #define PROPID_M_SIGNATURE_LEN (PROPID_M_BASE + 46) /* VT_UI4 */
  207. #define PROPID_M_PROV_TYPE (PROPID_M_BASE + 47) /* VT_UI4 */
  208. #define PROPID_M_PROV_NAME (PROPID_M_BASE + 48) /* VT_LPWSTR */
  209. #define PROPID_M_PROV_NAME_LEN (PROPID_M_BASE + 49) /* VT_UI4 */
  210. #define PROPID_M_FIRST_IN_XACT (PROPID_M_BASE + 50) /* VT_UI1 */
  211. #define PROPID_M_LAST_IN_XACT (PROPID_M_BASE + 51) /* VT_UI1 */
  212. #define PROPID_M_XACTID (PROPID_M_BASE + 52) /* VT_UI1|VT_VECTOR */
  213. #define PROPID_M_AUTHENTICATED_EX (PROPID_M_BASE + 53) /* VT_UI1 */
  214. #define PROPID_M_RESP_FORMAT_NAME (PROPID_M_BASE + 54) /* VT_LPWSTR */
  215. #define PROPID_M_RESP_FORMAT_NAME_LEN (PROPID_M_BASE + 55) /* VT_UI4 */
  216. #define PROPID_M_DEST_FORMAT_NAME (PROPID_M_BASE + 58) /* VT_LPWSTR */
  217. #define PROPID_M_DEST_FORMAT_NAME_LEN (PROPID_M_BASE + 59) /* VT_UI4 */
  218. #define PROPID_M_LOOKUPID (PROPID_M_BASE + 60) /* VT_UI8 */
  219. #define PROPID_M_SOAP_ENVELOPE (PROPID_M_BASE + 61) /* VT_LPWSTR */
  220. #define PROPID_M_SOAP_ENVELOPE_LEN (PROPID_M_BASE + 62) /* VT_UI4 */
  221. #define PROPID_M_COMPOUND_MESSAGE (PROPID_M_BASE + 63) /* VT_UI1|VT_VECTOR */
  222. #define PROPID_M_COMPOUND_MESSAGE_SIZE (PROPID_M_BASE + 64) /* VT_UI4 */
  223. #define PROPID_M_SOAP_HEADER (PROPID_M_BASE + 65) /* VT_LPWSTR */
  224. #define PROPID_M_SOAP_BODY (PROPID_M_BASE + 66) /* VT_LPWSTR */
  225. //
  226. // Message Property Size
  227. //
  228. #define PROPID_M_MSGID_SIZE 20
  229. #define PROPID_M_CORRELATIONID_SIZE 20
  230. #define PROPID_M_XACTID_SIZE 20
  231. //********************************************************************
  232. // MESSAGE CLASS VALUES
  233. //********************************************************************
  234. //
  235. // Message class values are 16 bits laid out as follows:
  236. //
  237. // 1 1 1 1 1 1
  238. // 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  239. // +-+-+-+-------+-----------------+
  240. // |S|R|H|Reserve| Class code |
  241. // +-+-+-+-------+-----------------+
  242. //
  243. // where
  244. //
  245. // S - is the severity flag
  246. // 0 - Normal Message/Positive Acknowledgment (ACK)
  247. // 1 - Negative Acknowledgment (NACK)
  248. //
  249. // R - is the receive flag
  250. // 0 - Arrival ACK/NACK
  251. // 1 - Receive ACK/NACK
  252. //
  253. // H - is http flag
  254. // 0 - no http
  255. // 1 - http
  256. #define MQCLASS_CODE(s, r, code) ((USHORT)(((s) << 15) | ((r) << 14) | (code)))
  257. #define MQCLASS_NACK(c) ((c) & 0x8000)
  258. #define MQCLASS_RECEIVE(c) ((c) & 0x4000)
  259. #define MQCLASS_NACK_HTTP(c) (((c) & 0xA000) == 0xA000)
  260. //
  261. // Normal message
  262. //
  263. #define MQMSG_CLASS_NORMAL MQCLASS_CODE(0, 0, 0x00)
  264. //
  265. // Report message
  266. //
  267. #define MQMSG_CLASS_REPORT MQCLASS_CODE(0, 0, 0x01)
  268. //
  269. // Arrival acknowledgment. The message has reached its destination queue
  270. //
  271. #define MQMSG_CLASS_ACK_REACH_QUEUE MQCLASS_CODE(0, 0, 0x02)
  272. //
  273. // Receive acknowledgment. The message has been received by an application
  274. //
  275. #define MQMSG_CLASS_ACK_RECEIVE MQCLASS_CODE(0, 1, 0x00)
  276. //-----------------------------------------------
  277. //
  278. // Negative arrival acknowledgments
  279. //
  280. //
  281. // Destination queue cannot be reached, the queue may have been deleted
  282. //
  283. #define MQMSG_CLASS_NACK_BAD_DST_Q MQCLASS_CODE(1, 0, 0x00)
  284. //
  285. // The message was purged before reaching its destination queue
  286. //
  287. #define MQMSG_CLASS_NACK_PURGED MQCLASS_CODE(1, 0, 0x01)
  288. //
  289. // Time to reach queue has expired
  290. //
  291. #define MQMSG_CLASS_NACK_REACH_QUEUE_TIMEOUT MQCLASS_CODE(1, 0, 0x02)
  292. //
  293. // The message has exceeded the queue quota
  294. //
  295. #define MQMSG_CLASS_NACK_Q_EXCEED_QUOTA MQCLASS_CODE(1, 0, 0x03)
  296. //
  297. // The sender does not have send access rights to the queue.
  298. //
  299. #define MQMSG_CLASS_NACK_ACCESS_DENIED MQCLASS_CODE(1, 0, 0x04)
  300. //
  301. // The message hop count was exceeded
  302. //
  303. #define MQMSG_CLASS_NACK_HOP_COUNT_EXCEEDED MQCLASS_CODE(1, 0, 0x05)
  304. //
  305. // The message signature is bad. The message could not be authenticated.
  306. //
  307. #define MQMSG_CLASS_NACK_BAD_SIGNATURE MQCLASS_CODE(1, 0, 0x06)
  308. //
  309. // The message could not be decrypted.
  310. //
  311. #define MQMSG_CLASS_NACK_BAD_ENCRYPTION MQCLASS_CODE(1, 0, 0x07)
  312. //
  313. // The message could not be encrypted for the destination.
  314. //
  315. #define MQMSG_CLASS_NACK_COULD_NOT_ENCRYPT MQCLASS_CODE(1, 0, 0x08)
  316. //
  317. // The message was sent to a non-transactional queue within a transaction.
  318. //
  319. #define MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_Q MQCLASS_CODE(1, 0, 0x09)
  320. //
  321. // The message was sent to a transactional queue not within a transaction.
  322. //
  323. #define MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_MSG MQCLASS_CODE(1, 0, 0x0A)
  324. //
  325. // The requested crypto provider for encryption is not supported by the destination.
  326. //
  327. #define MQMSG_CLASS_NACK_UNSUPPORTED_CRYPTO_PROVIDER MQCLASS_CODE(1, 0, 0x0B)
  328. //-----------------------------------------------
  329. //
  330. // Negative receive acknowledgments
  331. //
  332. //
  333. // The queue was deleted, after the message arrived
  334. //
  335. #define MQMSG_CLASS_NACK_Q_DELETED MQCLASS_CODE(1, 1, 0x00)
  336. //
  337. // The message was purged at the destination queue
  338. //
  339. #define MQMSG_CLASS_NACK_Q_PURGED MQCLASS_CODE(1, 1, 0x01)
  340. //
  341. // Time to receive has expired while the message was still in its destination queue
  342. // (generated by destination)
  343. //
  344. #define MQMSG_CLASS_NACK_RECEIVE_TIMEOUT MQCLASS_CODE(1, 1, 0x02)
  345. //
  346. // Time to receive has expired while the message was still in its local outgoing queue
  347. // (generated locally by sender)
  348. //
  349. #define MQMSG_CLASS_NACK_RECEIVE_TIMEOUT_AT_SENDER MQCLASS_CODE(1, 1, 0x03)
  350. //------ PROPID_M_ACKNOWLEDGE ---------------
  351. #define MQMSG_ACKNOWLEDGMENT_NONE 0x00
  352. #define MQMSG_ACKNOWLEDGMENT_POS_ARRIVAL 0x01
  353. #define MQMSG_ACKNOWLEDGMENT_POS_RECEIVE 0x02
  354. #define MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL 0x04
  355. #define MQMSG_ACKNOWLEDGMENT_NEG_RECEIVE 0x08
  356. #define MQMSG_ACKNOWLEDGMENT_NACK_REACH_QUEUE ((UCHAR)( \
  357. MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL ))
  358. #define MQMSG_ACKNOWLEDGMENT_FULL_REACH_QUEUE ((UCHAR)( \
  359. MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL | \
  360. MQMSG_ACKNOWLEDGMENT_POS_ARRIVAL ))
  361. #define MQMSG_ACKNOWLEDGMENT_NACK_RECEIVE ((UCHAR)( \
  362. MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL | \
  363. MQMSG_ACKNOWLEDGMENT_NEG_RECEIVE ))
  364. #define MQMSG_ACKNOWLEDGMENT_FULL_RECEIVE ((UCHAR)( \
  365. MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL | \
  366. MQMSG_ACKNOWLEDGMENT_NEG_RECEIVE | \
  367. MQMSG_ACKNOWLEDGMENT_POS_RECEIVE ))
  368. //------ PROPID_M_DELIVERY ------------------
  369. #define MQMSG_DELIVERY_EXPRESS 0
  370. #define MQMSG_DELIVERY_RECOVERABLE 1
  371. //----- PROPID_M_JOURNAL --------------------
  372. #define MQMSG_JOURNAL_NONE 0
  373. #define MQMSG_DEADLETTER 1
  374. #define MQMSG_JOURNAL 2
  375. //----- PROPID_M_TRACE ----------------------
  376. #define MQMSG_TRACE_NONE 0
  377. #define MQMSG_SEND_ROUTE_TO_REPORT_QUEUE 1
  378. //----- PROPID_M_SENDERID_TYPE --------------
  379. #define MQMSG_SENDERID_TYPE_NONE 0
  380. #define MQMSG_SENDERID_TYPE_SID 1
  381. //----- PROPID_M_PRIV_LEVEL -----------------
  382. #define MQMSG_PRIV_LEVEL_NONE 0
  383. #define MQMSG_PRIV_LEVEL_BODY 0x01
  384. #define MQMSG_PRIV_LEVEL_BODY_BASE 0x01
  385. #define MQMSG_PRIV_LEVEL_BODY_ENHANCED 0x03
  386. //----- PROPID_M_AUTH_LEVEL -----------------
  387. #define MQMSG_AUTH_LEVEL_NONE 0
  388. #define MQMSG_AUTH_LEVEL_ALWAYS 1
  389. //
  390. // MQMSG_AUTH_LEVEL_MSMQxx are obsolete
  391. // you should use MQMSG_AUTH_LEVEL_SIGxx
  392. //
  393. #define MQMSG_AUTH_LEVEL_MSMQ10 2
  394. #define MQMSG_AUTH_LEVEL_MSMQ20 4
  395. #define MQMSG_AUTH_LEVEL_SIG10 2
  396. #define MQMSG_AUTH_LEVEL_SIG20 4
  397. #define MQMSG_AUTH_LEVEL_SIG30 8
  398. //----- PROPID_M_AUTHENTICATED -----------------
  399. //----- PROPID_M_AUTHENTICATED_EX --------------
  400. #define MQMSG_AUTHENTICATION_NOT_REQUESTED 0
  401. #define MQMSG_AUTHENTICATION_REQUESTED 1
  402. //
  403. // MQMSG_AUTHENTICATION_REQUESTED_EX is obsolete
  404. // use the values MQMSG_AUTHENTICATED_SIGxx
  405. // for PROPID_M_AUTHENTICATED_EX
  406. //
  407. #define MQMSG_AUTHENTICATION_REQUESTED_EX 3
  408. #define MQMSG_AUTHENTICATED_SIG10 1
  409. #define MQMSG_AUTHENTICATED_SIG20 3
  410. #define MQMSG_AUTHENTICATED_SIG30 5
  411. #define MQMSG_AUTHENTICATED_SIGXML 9
  412. //----- PROPID_M_FIRST_IN_XACT --------------
  413. #define MQMSG_NOT_FIRST_IN_XACT 0
  414. #define MQMSG_FIRST_IN_XACT 1
  415. //----- PROPID_M_LAST_IN_XACT --------------
  416. #define MQMSG_NOT_LAST_IN_XACT 0
  417. #define MQMSG_LAST_IN_XACT 1
  418. //********************************************************************
  419. // QUEUE PROPERTIES
  420. //********************************************************************
  421. #define PROPID_Q_BASE 100
  422. #define PROPID_Q_INSTANCE (PROPID_Q_BASE + 1) /* VT_CLSID */
  423. #define PROPID_Q_TYPE (PROPID_Q_BASE + 2) /* VT_CLSID */
  424. #define PROPID_Q_PATHNAME (PROPID_Q_BASE + 3) /* VT_LPWSTR */
  425. #define PROPID_Q_JOURNAL (PROPID_Q_BASE + 4) /* VT_UI1 */
  426. #define PROPID_Q_QUOTA (PROPID_Q_BASE + 5) /* VT_UI4 */
  427. #define PROPID_Q_BASEPRIORITY (PROPID_Q_BASE + 6) /* VT_I2 */
  428. #define PROPID_Q_JOURNAL_QUOTA (PROPID_Q_BASE + 7) /* VT_UI4 */
  429. #define PROPID_Q_LABEL (PROPID_Q_BASE + 8) /* VT_LPWSTR */
  430. #define PROPID_Q_CREATE_TIME (PROPID_Q_BASE + 9) /* VT_I4 */
  431. #define PROPID_Q_MODIFY_TIME (PROPID_Q_BASE + 10) /* VT_I4 */
  432. #define PROPID_Q_AUTHENTICATE (PROPID_Q_BASE + 11) /* VT_UI1 */
  433. #define PROPID_Q_PRIV_LEVEL (PROPID_Q_BASE + 12) /* VT_UI4 */
  434. #define PROPID_Q_TRANSACTION (PROPID_Q_BASE + 13) /* VT_UI1 */
  435. #define PROPID_Q_PATHNAME_DNS (PROPID_Q_BASE + 24) /* VT_LPWSTR */
  436. #define PROPID_Q_MULTICAST_ADDRESS (PROPID_Q_BASE + 25) /* VT_LPWSTR */
  437. #define PROPID_Q_ADS_PATH (PROPID_Q_BASE + 26) /* VT_LPWSTR */
  438. //----- PROPID_Q_JOURNAL ------------------
  439. #define MQ_JOURNAL_NONE (unsigned char)0
  440. #define MQ_JOURNAL (unsigned char)1
  441. //----- PROPID_Q_TYPE ------------------
  442. // {55EE8F32-CCE9-11cf-B108-0020AFD61CE9}
  443. #define MQ_QTYPE_REPORT {0x55ee8f32, 0xcce9, 0x11cf, \
  444. {0xb1, 0x8, 0x0, 0x20, 0xaf, 0xd6, 0x1c, 0xe9}}
  445. // {55EE8F33-CCE9-11cf-B108-0020AFD61CE9}
  446. #define MQ_QTYPE_TEST {0x55ee8f33, 0xcce9, 0x11cf, \
  447. {0xb1, 0x8, 0x0, 0x20, 0xaf, 0xd6, 0x1c, 0xe9}}
  448. //----- PROPID_Q_TRANSACTION ------------------
  449. #define MQ_TRANSACTIONAL_NONE (unsigned char)0
  450. #define MQ_TRANSACTIONAL (unsigned char)1
  451. //----- PROPID_Q_AUTHENTICATE ------------------
  452. #define MQ_AUTHENTICATE_NONE (unsigned char)0
  453. #define MQ_AUTHENTICATE (unsigned char)1
  454. //----- PROPID_Q_PRIV_LEVEL ------------------
  455. #define MQ_PRIV_LEVEL_NONE (unsigned long)0
  456. #define MQ_PRIV_LEVEL_OPTIONAL (unsigned long)1
  457. #define MQ_PRIV_LEVEL_BODY (unsigned long)2
  458. //********************************************************************
  459. // MACHINE PROPERTIES
  460. //********************************************************************
  461. #define PROPID_QM_BASE 200
  462. #define PROPID_QM_SITE_ID (PROPID_QM_BASE + 1) /* VT_CLSID */
  463. #define PROPID_QM_MACHINE_ID (PROPID_QM_BASE + 2) /* VT_CLSID */
  464. #define PROPID_QM_PATHNAME (PROPID_QM_BASE + 3) /* VT_LPWSTR */
  465. #define PROPID_QM_CONNECTION (PROPID_QM_BASE + 4) /* VT_LPWSTR|VT_VECTOR */
  466. #define PROPID_QM_ENCRYPTION_PK (PROPID_QM_BASE + 5) /* VT_UI1|VT_VECTOR */
  467. #define PROPID_QM_ENCRYPTION_PK_BASE (PROPID_QM_BASE + 31) /* VT_UI1|VT_VECTOR */
  468. #define PROPID_QM_ENCRYPTION_PK_ENHANCED (PROPID_QM_BASE + 32) /* VT_UI1|VT_VECTOR */
  469. #define PROPID_QM_PATHNAME_DNS (PROPID_QM_BASE + 33) /* VT_LPWSTR */
  470. //********************************************************************
  471. // PRIVATE COMPUTER PROPERTIES
  472. //********************************************************************
  473. #define PROPID_PC_BASE 5800
  474. #define PROPID_PC_VERSION (PROPID_PC_BASE + 1) /* VT_UI4 */
  475. #define PROPID_PC_DS_ENABLED (PROPID_PC_BASE + 2) /* VT_BOOL */
  476. //********************************************************************
  477. // LOCAL ADMIN MSMQ MACHINE PROPERTIES
  478. //********************************************************************
  479. #define PROPID_MGMT_MSMQ_BASE 0
  480. #define PROPID_MGMT_MSMQ_ACTIVEQUEUES (PROPID_MGMT_MSMQ_BASE + 1) /* VT_LPWSTR | VT_VECTOR */
  481. #define PROPID_MGMT_MSMQ_PRIVATEQ (PROPID_MGMT_MSMQ_BASE + 2) /* VT_LPWSTR | VT_VECTOR */
  482. #define PROPID_MGMT_MSMQ_DSSERVER (PROPID_MGMT_MSMQ_BASE + 3) /* VT_LPWSTR */
  483. #define PROPID_MGMT_MSMQ_CONNECTED (PROPID_MGMT_MSMQ_BASE + 4) /* VT_LPWSTR */
  484. #define PROPID_MGMT_MSMQ_TYPE (PROPID_MGMT_MSMQ_BASE + 5) /* VT_LPWSTR */
  485. #define PROPID_MGMT_MSMQ_BYTES_IN_ALL_QUEUES (PROPID_MGMT_QUEUE_BASE + 6) /* VT_UI8 */
  486. //
  487. // Returned Value for PROPID_MGMT_MSMQ_CONNECTED property
  488. //
  489. #define MSMQ_CONNECTED L"CONNECTED"
  490. #define MSMQ_DISCONNECTED L"DISCONNECTED"
  491. //********************************************************************
  492. // LOCAL ADMIN MSMQ QUEUE PROPERTIES
  493. //********************************************************************
  494. #define PROPID_MGMT_QUEUE_BASE 0
  495. #define PROPID_MGMT_QUEUE_PATHNAME (PROPID_MGMT_QUEUE_BASE + 1) /* VT_LPWSTR */
  496. #define PROPID_MGMT_QUEUE_FORMATNAME (PROPID_MGMT_QUEUE_BASE + 2) /* VT_LPWSTR */
  497. #define PROPID_MGMT_QUEUE_TYPE (PROPID_MGMT_QUEUE_BASE + 3) /* VT_LPWSTR */
  498. #define PROPID_MGMT_QUEUE_LOCATION (PROPID_MGMT_QUEUE_BASE + 4) /* VT_LPWSTR */
  499. #define PROPID_MGMT_QUEUE_XACT (PROPID_MGMT_QUEUE_BASE + 5) /* VT_LPWSTR */
  500. #define PROPID_MGMT_QUEUE_FOREIGN (PROPID_MGMT_QUEUE_BASE + 6) /* VT_LPWSTR */
  501. #define PROPID_MGMT_QUEUE_MESSAGE_COUNT (PROPID_MGMT_QUEUE_BASE + 7) /* VT_UI4 */
  502. #define PROPID_MGMT_QUEUE_BYTES_IN_QUEUE (PROPID_MGMT_QUEUE_BASE + 8) /* VT_UI4 */
  503. #define PROPID_MGMT_QUEUE_JOURNAL_MESSAGE_COUNT (PROPID_MGMT_QUEUE_BASE + 9) /* VT_UI4 */
  504. #define PROPID_MGMT_QUEUE_BYTES_IN_JOURNAL (PROPID_MGMT_QUEUE_BASE + 10) /* VT_UI4 */
  505. #define PROPID_MGMT_QUEUE_STATE (PROPID_MGMT_QUEUE_BASE + 11) /* VT_LPWSTR */
  506. #define PROPID_MGMT_QUEUE_NEXTHOPS (PROPID_MGMT_QUEUE_BASE + 12) /* VT_LPWSTR|VT_VECTOR */
  507. #define PROPID_MGMT_QUEUE_EOD_LAST_ACK (PROPID_MGMT_QUEUE_BASE + 13) /* VT_BLOB */
  508. #define PROPID_MGMT_QUEUE_EOD_LAST_ACK_TIME (PROPID_MGMT_QUEUE_BASE + 14) /* VT_I4 */
  509. #define PROPID_MGMT_QUEUE_EOD_LAST_ACK_COUNT (PROPID_MGMT_QUEUE_BASE + 15) /* VT_UI4 */
  510. #define PROPID_MGMT_QUEUE_EOD_FIRST_NON_ACK (PROPID_MGMT_QUEUE_BASE + 16) /* VT_BLOB */
  511. #define PROPID_MGMT_QUEUE_EOD_LAST_NON_ACK (PROPID_MGMT_QUEUE_BASE + 17) /* VT_BLOB */
  512. #define PROPID_MGMT_QUEUE_EOD_NEXT_SEQ (PROPID_MGMT_QUEUE_BASE + 18) /* VT_BLOB */
  513. #define PROPID_MGMT_QUEUE_EOD_NO_READ_COUNT (PROPID_MGMT_QUEUE_BASE + 19) /* VT_UI4 */
  514. #define PROPID_MGMT_QUEUE_EOD_NO_ACK_COUNT (PROPID_MGMT_QUEUE_BASE + 20) /* VT_UI4 */
  515. #define PROPID_MGMT_QUEUE_EOD_RESEND_TIME (PROPID_MGMT_QUEUE_BASE + 21) /* VT_I4 */
  516. #define PROPID_MGMT_QUEUE_EOD_RESEND_INTERVAL (PROPID_MGMT_QUEUE_BASE + 22) /* VT_UI4 */
  517. #define PROPID_MGMT_QUEUE_EOD_RESEND_COUNT (PROPID_MGMT_QUEUE_BASE + 23) /* VT_UI4 */
  518. #define PROPID_MGMT_QUEUE_EOD_SOURCE_INFO (PROPID_MGMT_QUEUE_BASE + 24) /* VT_VARIANT|VT_VECTOR */
  519. //
  520. // Olbselete alternative names for "Bytes in ..."
  521. //
  522. #define PROPID_MGMT_QUEUE_USED_QUOTA PROPID_MGMT_QUEUE_BYTES_IN_QUEUE
  523. #define PROPID_MGMT_QUEUE_JOURNAL_USED_QUOTA PROPID_MGMT_QUEUE_BYTES_IN_JOURNAL
  524. //
  525. // Returned value for PROPID_MGMT_QUEUE_TYPE
  526. //
  527. #define MGMT_QUEUE_TYPE_PUBLIC L"PUBLIC"
  528. #define MGMT_QUEUE_TYPE_PRIVATE L"PRIVATE"
  529. #define MGMT_QUEUE_TYPE_MACHINE L"MACHINE"
  530. #define MGMT_QUEUE_TYPE_CONNECTOR L"CONNECTOR"
  531. #define MGMT_QUEUE_TYPE_MULTICAST L"MULTICAST"
  532. //
  533. // Returned value for PROPID_MGMT_QUEUE_STATE
  534. //
  535. #define MGMT_QUEUE_STATE_LOCAL L"LOCAL CONNECTION"
  536. #define MGMT_QUEUE_STATE_NONACTIVE L"INACTIVE"
  537. #define MGMT_QUEUE_STATE_WAITING L"WAITING"
  538. #define MGMT_QUEUE_STATE_NEED_VALIDATE L"NEED VALIDATION"
  539. #define MGMT_QUEUE_STATE_ONHOLD L"ONHOLD"
  540. #define MGMT_QUEUE_STATE_CONNECTED L"CONNECTED"
  541. #define MGMT_QUEUE_STATE_DISCONNECTING L"DISCONNECTING"
  542. #define MGMT_QUEUE_STATE_DISCONNECTED L"DISCONNECTED"
  543. //
  544. // Returned value for PROPID_MGMT_QUEUE_LOCATION
  545. //
  546. #define MGMT_QUEUE_LOCAL_LOCATION L"LOCAL"
  547. #define MGMT_QUEUE_REMOTE_LOCATION L"REMOTE"
  548. //
  549. // Returned Value for PROPID_MGMT_QUEUE_XACT and PROPID_MGMT_QUEUE_FOREIGN
  550. //
  551. #define MGMT_QUEUE_UNKNOWN_TYPE L"UNKNOWN"
  552. //
  553. // Obselete names left for backword compatibility.
  554. //
  555. #define MGMT_QUEUE_CORRECT_TYPE L"YES"
  556. #define MGMT_QUEUE_INCORRECT_TYPE L"NO"
  557. //
  558. // Names for Returned Value for PROPID_MGMT_QUEUE_XACT
  559. //
  560. //#define MGMT_QUEUE_UNKNOWN_TYPE L"UNKNOWN"
  561. #define MGMT_QUEUE_TRANSACTIONAL_TYPE L"YES"
  562. #define MGMT_QUEUE_NOT_TRANSACTIONAL_TYPE L"NO"
  563. //
  564. // Names for Returned Value for PROPID_MGMT_QUEUE_FOREIGN
  565. //
  566. //#define MGMT_QUEUE_UNKNOWN_TYPE L"UNKNOWN"
  567. #define MGMT_QUEUE_FOREIGN_TYPE L"YES"
  568. #define MGMT_QUEUE_NOT_FOREIGN_TYPE L"NO"
  569. //
  570. // Object parameter values for MQMgmtAction API
  571. //
  572. #define MO_MACHINE_TOKEN L"MACHINE"
  573. #define MO_QUEUE_TOKEN L"QUEUE"
  574. //
  575. // Action parameter values for MQMgmtAction API
  576. //
  577. #define MACHINE_ACTION_CONNECT L"CONNECT"
  578. #define MACHINE_ACTION_DISCONNECT L"DISCONNECT"
  579. #define MACHINE_ACTION_TIDY L"TIDY"
  580. #define QUEUE_ACTION_PAUSE L"PAUSE"
  581. #define QUEUE_ACTION_RESUME L"RESUME"
  582. #define QUEUE_ACTION_EOD_RESEND L"EOD_RESEND"
  583. //
  584. // LONG_LIVED is the default for PROPID_M_TIME_TO_REACH_QUEUE. If calls
  585. // to MQSendMessage() specify this value, or not specify this property at
  586. // all, then the actual timeout is obtained from Active Directory.
  587. //
  588. #define LONG_LIVED 0xfffffffe
  589. //
  590. // Success
  591. //
  592. #define MQ_OK 0L
  593. #ifndef FACILITY_MSMQ
  594. #define FACILITY_MSMQ 0x0E
  595. #endif
  596. //
  597. // Error
  598. //
  599. //
  600. // Values are 32 bit values layed out as follows:
  601. //
  602. // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
  603. // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  604. // +---+-+-+-----------------------+-------------------------------+
  605. // |Sev|C|R| Facility | Code |
  606. // +---+-+-+-----------------------+-------------------------------+
  607. //
  608. // where
  609. //
  610. // Sev - is the severity code
  611. //
  612. // 00 - Success
  613. // 01 - Informational
  614. // 10 - Warning
  615. // 11 - Error
  616. //
  617. // C - is the Customer code flag
  618. //
  619. // R - is a reserved bit
  620. //
  621. // Facility - is the facility code
  622. //
  623. // Code - is the facility's status code
  624. //
  625. //
  626. // Define the facility codes
  627. //
  628. //
  629. // Define the severity codes
  630. //
  631. //
  632. // MessageId: MQ_ERROR
  633. //
  634. // MessageText:
  635. //
  636. // Generic error code.
  637. //
  638. #define MQ_ERROR 0xC00E0001L
  639. //
  640. // MessageId: MQ_ERROR_PROPERTY
  641. //
  642. // MessageText:
  643. //
  644. // One or more of the properties passed are invalid.
  645. //
  646. #define MQ_ERROR_PROPERTY 0xC00E0002L
  647. //
  648. // MessageId: MQ_ERROR_QUEUE_NOT_FOUND
  649. //
  650. // MessageText:
  651. //
  652. // The queue does not exist, or you do not have sufficient permissions to perform the operation.
  653. //
  654. #define MQ_ERROR_QUEUE_NOT_FOUND 0xC00E0003L
  655. //
  656. // MessageId: MQ_ERROR_QUEUE_EXISTS
  657. //
  658. // MessageText:
  659. //
  660. // A queue with the same path name already exists.
  661. //
  662. #define MQ_ERROR_QUEUE_EXISTS 0xC00E0005L
  663. //
  664. // MessageId: MQ_ERROR_INVALID_PARAMETER
  665. //
  666. // MessageText:
  667. //
  668. // An invalid parameter was passed to a function.
  669. //
  670. #define MQ_ERROR_INVALID_PARAMETER 0xC00E0006L
  671. //
  672. // MessageId: MQ_ERROR_INVALID_HANDLE
  673. //
  674. // MessageText:
  675. //
  676. // An invalid handle was passed to a function.
  677. //
  678. #define MQ_ERROR_INVALID_HANDLE 0xC00E0007L
  679. //
  680. // MessageId: MQ_ERROR_OPERATION_CANCELLED
  681. //
  682. // MessageText:
  683. //
  684. // The operation was canceled before it could be completed.
  685. //
  686. #define MQ_ERROR_OPERATION_CANCELLED 0xC00E0008L
  687. //
  688. // MessageId: MQ_ERROR_SHARING_VIOLATION
  689. //
  690. // MessageText:
  691. //
  692. // There is a sharing violation. The queue is already open for exclusive retrieval.
  693. //
  694. #define MQ_ERROR_SHARING_VIOLATION 0xC00E0009L
  695. //
  696. // MessageId: MQ_ERROR_SERVICE_NOT_AVAILABLE
  697. //
  698. // MessageText:
  699. //
  700. // The Message Queuing service is not available
  701. //
  702. #define MQ_ERROR_SERVICE_NOT_AVAILABLE 0xC00E000BL
  703. //
  704. // MessageId: MQ_ERROR_MACHINE_NOT_FOUND
  705. //
  706. // MessageText:
  707. //
  708. // The computer specified cannot be found.
  709. //
  710. #define MQ_ERROR_MACHINE_NOT_FOUND 0xC00E000DL
  711. //
  712. // MessageId: MQ_ERROR_ILLEGAL_SORT
  713. //
  714. // MessageText:
  715. //
  716. // The sort operation specified in MQLocateBegin is invalid (for example, there are duplicate columns).
  717. //
  718. #define MQ_ERROR_ILLEGAL_SORT 0xC00E0010L
  719. //
  720. // MessageId: MQ_ERROR_ILLEGAL_USER
  721. //
  722. // MessageText:
  723. //
  724. // The user specified is not a valid user.
  725. //
  726. #define MQ_ERROR_ILLEGAL_USER 0xC00E0011L
  727. //
  728. // MessageId: MQ_ERROR_NO_DS
  729. //
  730. // MessageText:
  731. //
  732. // A connection with Active Directory cannot be established. Verify that there are sufficient permissions to perform this operation.
  733. //
  734. #define MQ_ERROR_NO_DS 0xC00E0013L
  735. //
  736. // MessageId: MQ_ERROR_ILLEGAL_QUEUE_PATHNAME
  737. //
  738. // MessageText:
  739. //
  740. // The queue path name specified is invalid.
  741. //
  742. #define MQ_ERROR_ILLEGAL_QUEUE_PATHNAME 0xC00E0014L
  743. //
  744. // MessageId: MQ_ERROR_ILLEGAL_PROPERTY_VALUE
  745. //
  746. // MessageText:
  747. //
  748. // The property value specified is invalid.
  749. //
  750. #define MQ_ERROR_ILLEGAL_PROPERTY_VALUE 0xC00E0018L
  751. //
  752. // MessageId: MQ_ERROR_ILLEGAL_PROPERTY_VT
  753. //
  754. // MessageText:
  755. //
  756. // The VARTYPE value specified is invalid.
  757. //
  758. #define MQ_ERROR_ILLEGAL_PROPERTY_VT 0xC00E0019L
  759. //
  760. // MessageId: MQ_ERROR_BUFFER_OVERFLOW
  761. //
  762. // MessageText:
  763. //
  764. // The buffer supplied to MQReceiveMessage for message property retrieval
  765. // is too small. The message was not removed from the queue, but the part
  766. // of the message property that was in the buffer was copied.
  767. //
  768. #define MQ_ERROR_BUFFER_OVERFLOW 0xC00E001AL
  769. //
  770. // MessageId: MQ_ERROR_IO_TIMEOUT
  771. //
  772. // MessageText:
  773. //
  774. // The time specified for MQReceiveMessage to wait for the message elapsed.
  775. //
  776. #define MQ_ERROR_IO_TIMEOUT 0xC00E001BL
  777. //
  778. // MessageId: MQ_ERROR_ILLEGAL_CURSOR_ACTION
  779. //
  780. // MessageText:
  781. //
  782. // The MQ_ACTION_PEEK_NEXT value specified for MQReceiveMessage cannot be used with
  783. // the current cursor position.
  784. //
  785. #define MQ_ERROR_ILLEGAL_CURSOR_ACTION 0xC00E001CL
  786. //
  787. // MessageId: MQ_ERROR_MESSAGE_ALREADY_RECEIVED
  788. //
  789. // MessageText:
  790. //
  791. // The message at which the cursor is currently pointing was removed from
  792. // the queue by another process or by another call to MQReceiveMessage
  793. // without the use of this cursor.
  794. //
  795. #define MQ_ERROR_MESSAGE_ALREADY_RECEIVED 0xC00E001DL
  796. //
  797. // MessageId: MQ_ERROR_ILLEGAL_FORMATNAME
  798. //
  799. // MessageText:
  800. //
  801. // The format name specified is invalid.
  802. //
  803. #define MQ_ERROR_ILLEGAL_FORMATNAME 0xC00E001EL
  804. //
  805. // MessageId: MQ_ERROR_FORMATNAME_BUFFER_TOO_SMALL
  806. //
  807. // MessageText:
  808. //
  809. // The format name buffer supplied to the API was too small
  810. // to hold the format name.
  811. //
  812. #define MQ_ERROR_FORMATNAME_BUFFER_TOO_SMALL 0xC00E001FL
  813. //
  814. // MessageId: MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION
  815. //
  816. // MessageText:
  817. //
  818. // Operations of the type requested (for example, deleting a queue using a direct format name)
  819. // are not supported for the format name specified.
  820. //
  821. #define MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION 0xC00E0020L
  822. //
  823. // MessageId: MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR
  824. //
  825. // MessageText:
  826. //
  827. // The specified security descriptor is invalid.
  828. //
  829. #define MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR 0xC00E0021L
  830. //
  831. // MessageId: MQ_ERROR_SENDERID_BUFFER_TOO_SMALL
  832. //
  833. // MessageText:
  834. //
  835. // The size of the buffer for the user ID property is too small.
  836. //
  837. #define MQ_ERROR_SENDERID_BUFFER_TOO_SMALL 0xC00E0022L
  838. //
  839. // MessageId: MQ_ERROR_SECURITY_DESCRIPTOR_TOO_SMALL
  840. //
  841. // MessageText:
  842. //
  843. // The size of the buffer passed to MQGetQueueSecurity is too small.
  844. //
  845. #define MQ_ERROR_SECURITY_DESCRIPTOR_TOO_SMALL 0xC00E0023L
  846. //
  847. // MessageId: MQ_ERROR_CANNOT_IMPERSONATE_CLIENT
  848. //
  849. // MessageText:
  850. //
  851. // The security credentials cannot be verified because the RPC server
  852. // cannot impersonate the client application.
  853. //
  854. #define MQ_ERROR_CANNOT_IMPERSONATE_CLIENT 0xC00E0024L
  855. //
  856. // MessageId: MQ_ERROR_ACCESS_DENIED
  857. //
  858. // MessageText:
  859. //
  860. // Access is denied.
  861. //
  862. #define MQ_ERROR_ACCESS_DENIED 0xC00E0025L
  863. //
  864. // MessageId: MQ_ERROR_PRIVILEGE_NOT_HELD
  865. //
  866. // MessageText:
  867. //
  868. // The client does not have sufficient security privileges to perform the operation.
  869. //
  870. #define MQ_ERROR_PRIVILEGE_NOT_HELD 0xC00E0026L
  871. //
  872. // MessageId: MQ_ERROR_INSUFFICIENT_RESOURCES
  873. //
  874. // MessageText:
  875. //
  876. // There are insufficient resources to perform this operation.
  877. //
  878. #define MQ_ERROR_INSUFFICIENT_RESOURCES 0xC00E0027L
  879. //
  880. // MessageId: MQ_ERROR_USER_BUFFER_TOO_SMALL
  881. //
  882. // MessageText:
  883. //
  884. // The request failed because the user buffer is too small to hold the information returned.
  885. //
  886. #define MQ_ERROR_USER_BUFFER_TOO_SMALL 0xC00E0028L
  887. //
  888. // MessageId: MQ_ERROR_MESSAGE_STORAGE_FAILED
  889. //
  890. // MessageText:
  891. //
  892. // A recoverable or journal message could not be stored. The message was not sent.
  893. //
  894. #define MQ_ERROR_MESSAGE_STORAGE_FAILED 0xC00E002AL
  895. //
  896. // MessageId: MQ_ERROR_SENDER_CERT_BUFFER_TOO_SMALL
  897. //
  898. // MessageText:
  899. //
  900. // The buffer for the user certificate property is too small.
  901. //
  902. #define MQ_ERROR_SENDER_CERT_BUFFER_TOO_SMALL 0xC00E002BL
  903. //
  904. // MessageId: MQ_ERROR_INVALID_CERTIFICATE
  905. //
  906. // MessageText:
  907. //
  908. // The user certificate is invalid.
  909. //
  910. #define MQ_ERROR_INVALID_CERTIFICATE 0xC00E002CL
  911. //
  912. // MessageId: MQ_ERROR_CORRUPTED_INTERNAL_CERTIFICATE
  913. //
  914. // MessageText:
  915. //
  916. // The internal Message Queuing certificate is corrupted.
  917. //
  918. #define MQ_ERROR_CORRUPTED_INTERNAL_CERTIFICATE 0xC00E002DL
  919. //
  920. // MessageId: MQ_ERROR_NO_INTERNAL_USER_CERT
  921. //
  922. // MessageText:
  923. //
  924. // No internal Message Queuing certificate exists for the user.
  925. //
  926. #define MQ_ERROR_NO_INTERNAL_USER_CERT 0xC00E002FL
  927. //
  928. // MessageId: MQ_ERROR_CORRUPTED_SECURITY_DATA
  929. //
  930. // MessageText:
  931. //
  932. // A cryptographic function failed.
  933. //
  934. #define MQ_ERROR_CORRUPTED_SECURITY_DATA 0xC00E0030L
  935. //
  936. // MessageId: MQ_ERROR_CORRUPTED_PERSONAL_CERT_STORE
  937. //
  938. // MessageText:
  939. //
  940. // The personal certificate store is corrupted.
  941. //
  942. #define MQ_ERROR_CORRUPTED_PERSONAL_CERT_STORE 0xC00E0031L
  943. //
  944. // MessageId: MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION
  945. //
  946. // MessageText:
  947. //
  948. // The computer does not support encryption operations.
  949. //
  950. #define MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION 0xC00E0033L
  951. //
  952. // MessageId: MQ_ERROR_BAD_SECURITY_CONTEXT
  953. //
  954. // MessageText:
  955. //
  956. // The security context is invalid.
  957. //
  958. #define MQ_ERROR_BAD_SECURITY_CONTEXT 0xC00E0035L
  959. //
  960. // MessageId: MQ_ERROR_COULD_NOT_GET_USER_SID
  961. //
  962. // MessageText:
  963. //
  964. // The SID cannot be obtained from the thread token.
  965. //
  966. #define MQ_ERROR_COULD_NOT_GET_USER_SID 0xC00E0036L
  967. //
  968. // MessageId: MQ_ERROR_COULD_NOT_GET_ACCOUNT_INFO
  969. //
  970. // MessageText:
  971. //
  972. // The account information for the user cannot be obtained.
  973. //
  974. #define MQ_ERROR_COULD_NOT_GET_ACCOUNT_INFO 0xC00E0037L
  975. //
  976. // MessageId: MQ_ERROR_ILLEGAL_MQCOLUMNS
  977. //
  978. // MessageText:
  979. //
  980. // The MQCOLUMNS parameter is invalid.
  981. //
  982. #define MQ_ERROR_ILLEGAL_MQCOLUMNS 0xC00E0038L
  983. //
  984. // MessageId: MQ_ERROR_ILLEGAL_PROPID
  985. //
  986. // MessageText:
  987. //
  988. // A property identifier is invalid.
  989. //
  990. #define MQ_ERROR_ILLEGAL_PROPID 0xC00E0039L
  991. //
  992. // MessageId: MQ_ERROR_ILLEGAL_RELATION
  993. //
  994. // MessageText:
  995. //
  996. // A relationship parameter is invalid.
  997. //
  998. #define MQ_ERROR_ILLEGAL_RELATION 0xC00E003AL
  999. //
  1000. // MessageId: MQ_ERROR_ILLEGAL_PROPERTY_SIZE
  1001. //
  1002. // MessageText:
  1003. //
  1004. // The size of the buffer for the message identifier or correlation identifier is invalid.
  1005. //
  1006. #define MQ_ERROR_ILLEGAL_PROPERTY_SIZE 0xC00E003BL
  1007. //
  1008. // MessageId: MQ_ERROR_ILLEGAL_RESTRICTION_PROPID
  1009. //
  1010. // MessageText:
  1011. //
  1012. // A property identifier specified in MQRESTRICTION is invalid.
  1013. //
  1014. #define MQ_ERROR_ILLEGAL_RESTRICTION_PROPID 0xC00E003CL
  1015. //
  1016. // MessageId: MQ_ERROR_ILLEGAL_MQQUEUEPROPS
  1017. //
  1018. // MessageText:
  1019. //
  1020. // Either the pointer to the MQQUEUEPROPS structure has a null value, or no properties are specified in it.
  1021. //
  1022. #define MQ_ERROR_ILLEGAL_MQQUEUEPROPS 0xC00E003DL
  1023. //
  1024. // MessageId: MQ_ERROR_PROPERTY_NOTALLOWED
  1025. //
  1026. // MessageText:
  1027. //
  1028. // The property identifier specified (for example, PROPID_Q_INSTANCE in MQSetQueueProperties)
  1029. // is invalid for the operation requested.
  1030. //
  1031. #define MQ_ERROR_PROPERTY_NOTALLOWED 0xC00E003EL
  1032. //
  1033. // MessageId: MQ_ERROR_INSUFFICIENT_PROPERTIES
  1034. //
  1035. // MessageText:
  1036. //
  1037. // Not all the properties required for the operation were specified
  1038. // for the input parameters.
  1039. //
  1040. #define MQ_ERROR_INSUFFICIENT_PROPERTIES 0xC00E003FL
  1041. //
  1042. // MessageId: MQ_ERROR_MACHINE_EXISTS
  1043. //
  1044. // MessageText:
  1045. //
  1046. // A computer with the same name already exists in the site. Either the computer object already exists
  1047. // (for a Windows NT enterprise), or the MSMQ Configuration (msmq) object already exists for the applicable computer
  1048. // object in Active directory (for a Windows 2000 or Windows Whistler forest).
  1049. //
  1050. #define MQ_ERROR_MACHINE_EXISTS 0xC00E0040L
  1051. //
  1052. // MessageId: MQ_ERROR_ILLEGAL_MQQMPROPS
  1053. //
  1054. // MessageText:
  1055. //
  1056. // Either the pointer to the MQQMROPS structure has a null value, or no properties are specified in it.
  1057. //
  1058. #define MQ_ERROR_ILLEGAL_MQQMPROPS 0xC00E0041L
  1059. //
  1060. // MessageId: MQ_ERROR_DS_IS_FULL
  1061. //
  1062. // MessageText:
  1063. //
  1064. // Obsolete, kept for backward compatibility
  1065. //
  1066. #define MQ_ERROR_DS_IS_FULL 0xC00E0042L
  1067. //
  1068. // MessageId: MQ_ERROR_DS_ERROR
  1069. //
  1070. // MessageText:
  1071. //
  1072. // There is an internal Active Directory error.
  1073. //
  1074. #define MQ_ERROR_DS_ERROR 0xC00E0043L
  1075. //
  1076. // MessageId: MQ_ERROR_INVALID_OWNER
  1077. //
  1078. // MessageText:
  1079. //
  1080. // The object owner is invalid (for example, MQCreateQueue failed because the QM
  1081. // object is invalid).
  1082. //
  1083. #define MQ_ERROR_INVALID_OWNER 0xC00E0044L
  1084. //
  1085. // MessageId: MQ_ERROR_UNSUPPORTED_ACCESS_MODE
  1086. //
  1087. // MessageText:
  1088. //
  1089. // The access mode specified is unsupported.
  1090. //
  1091. #define MQ_ERROR_UNSUPPORTED_ACCESS_MODE 0xC00E0045L
  1092. //
  1093. // MessageId: MQ_ERROR_RESULT_BUFFER_TOO_SMALL
  1094. //
  1095. // MessageText:
  1096. //
  1097. // The result buffer specified is too small.
  1098. //
  1099. #define MQ_ERROR_RESULT_BUFFER_TOO_SMALL 0xC00E0046L
  1100. //
  1101. // MessageId: MQ_ERROR_DELETE_CN_IN_USE
  1102. //
  1103. // MessageText:
  1104. //
  1105. // Obsolete, kept for backward compatibility
  1106. //
  1107. #define MQ_ERROR_DELETE_CN_IN_USE 0xC00E0048L
  1108. //
  1109. // MessageId: MQ_ERROR_NO_RESPONSE_FROM_OBJECT_SERVER
  1110. //
  1111. // MessageText:
  1112. //
  1113. // There was no response from the object owner.
  1114. //
  1115. #define MQ_ERROR_NO_RESPONSE_FROM_OBJECT_SERVER 0xC00E0049L
  1116. //
  1117. // MessageId: MQ_ERROR_OBJECT_SERVER_NOT_AVAILABLE
  1118. //
  1119. // MessageText:
  1120. //
  1121. // The object owner is not available.
  1122. //
  1123. #define MQ_ERROR_OBJECT_SERVER_NOT_AVAILABLE 0xC00E004AL
  1124. //
  1125. // MessageId: MQ_ERROR_QUEUE_NOT_AVAILABLE
  1126. //
  1127. // MessageText:
  1128. //
  1129. // An error occurred while reading from a queue located on a remote computer.
  1130. //
  1131. #define MQ_ERROR_QUEUE_NOT_AVAILABLE 0xC00E004BL
  1132. //
  1133. // MessageId: MQ_ERROR_DTC_CONNECT
  1134. //
  1135. // MessageText:
  1136. //
  1137. // A connection cannot be established with the Distributed Transaction Coordinator.
  1138. //
  1139. #define MQ_ERROR_DTC_CONNECT 0xC00E004CL
  1140. //
  1141. // MessageId: MQ_ERROR_TRANSACTION_IMPORT
  1142. //
  1143. // MessageText:
  1144. //
  1145. // The transaction specified cannot be imported.
  1146. //
  1147. #define MQ_ERROR_TRANSACTION_IMPORT 0xC00E004EL
  1148. //
  1149. // MessageId: MQ_ERROR_TRANSACTION_USAGE
  1150. //
  1151. // MessageText:
  1152. //
  1153. // An attempted action cannot be performed within a transaction.
  1154. //
  1155. #define MQ_ERROR_TRANSACTION_USAGE 0xC00E0050L
  1156. //
  1157. // MessageId: MQ_ERROR_TRANSACTION_SEQUENCE
  1158. //
  1159. // MessageText:
  1160. //
  1161. // The transaction's operation sequence is incorrect.
  1162. //
  1163. #define MQ_ERROR_TRANSACTION_SEQUENCE 0xC00E0051L
  1164. //
  1165. // MessageId: MQ_ERROR_MISSING_CONNECTOR_TYPE
  1166. //
  1167. // MessageText:
  1168. //
  1169. // The connector type message property is not specified. This property is required for sending an acknowledgment message or a secure message.
  1170. //
  1171. #define MQ_ERROR_MISSING_CONNECTOR_TYPE 0xC00E0055L
  1172. //
  1173. // MessageId: MQ_ERROR_STALE_HANDLE
  1174. //
  1175. // MessageText:
  1176. //
  1177. // The Message Queuing service was restarted. Any open queue handles should be closed.
  1178. //
  1179. #define MQ_ERROR_STALE_HANDLE 0xC00E0056L
  1180. //
  1181. // MessageId: MQ_ERROR_TRANSACTION_ENLIST
  1182. //
  1183. // MessageText:
  1184. //
  1185. // The transaction specified cannot be enlisted.
  1186. //
  1187. #define MQ_ERROR_TRANSACTION_ENLIST 0xC00E0058L
  1188. //
  1189. // MessageId: MQ_ERROR_QUEUE_DELETED
  1190. //
  1191. // MessageText:
  1192. //
  1193. // The queue was deleted. Messages cannot be received anymore using this
  1194. // queue handle. The handle should be closed.
  1195. //
  1196. #define MQ_ERROR_QUEUE_DELETED 0xC00E005AL
  1197. //
  1198. // MessageId: MQ_ERROR_ILLEGAL_CONTEXT
  1199. //
  1200. // MessageText:
  1201. //
  1202. // The context parameter for MQLocateBegin is invalid.
  1203. //
  1204. #define MQ_ERROR_ILLEGAL_CONTEXT 0xC00E005BL
  1205. //
  1206. // MessageId: MQ_ERROR_ILLEGAL_SORT_PROPID
  1207. //
  1208. // MessageText:
  1209. //
  1210. // An invalid property identifier is specified in MQSORTSET.
  1211. //
  1212. #define MQ_ERROR_ILLEGAL_SORT_PROPID 0xC00E005CL
  1213. //
  1214. // MessageId: MQ_ERROR_LABEL_TOO_LONG
  1215. //
  1216. // MessageText:
  1217. //
  1218. // The message label is too long. Its length should be less than or equal to MQ_MAX_MSG_LABEL_LEN.
  1219. //
  1220. #define MQ_ERROR_LABEL_TOO_LONG 0xC00E005DL
  1221. //
  1222. // MessageId: MQ_ERROR_LABEL_BUFFER_TOO_SMALL
  1223. //
  1224. // MessageText:
  1225. //
  1226. // The label buffer supplied to the API is too small.
  1227. //
  1228. #define MQ_ERROR_LABEL_BUFFER_TOO_SMALL 0xC00E005EL
  1229. //
  1230. // MessageId: MQ_ERROR_MQIS_SERVER_EMPTY
  1231. //
  1232. // MessageText:
  1233. //
  1234. // Obsolete, kept for backward compatibility
  1235. //
  1236. #define MQ_ERROR_MQIS_SERVER_EMPTY 0xC00E005FL
  1237. //
  1238. // MessageId: MQ_ERROR_MQIS_READONLY_MODE
  1239. //
  1240. // MessageText:
  1241. //
  1242. // Obsolete, kept for backward compatibility
  1243. //
  1244. #define MQ_ERROR_MQIS_READONLY_MODE 0xC00E0060L
  1245. //
  1246. // MessageId: MQ_ERROR_SYMM_KEY_BUFFER_TOO_SMALL
  1247. //
  1248. // MessageText:
  1249. //
  1250. // The buffer passed for the symmetric key is too small.
  1251. //
  1252. #define MQ_ERROR_SYMM_KEY_BUFFER_TOO_SMALL 0xC00E0061L
  1253. //
  1254. // MessageId: MQ_ERROR_SIGNATURE_BUFFER_TOO_SMALL
  1255. //
  1256. // MessageText:
  1257. //
  1258. // The buffer passed for the signature property is too small.
  1259. //
  1260. #define MQ_ERROR_SIGNATURE_BUFFER_TOO_SMALL 0xC00E0062L
  1261. //
  1262. // MessageId: MQ_ERROR_PROV_NAME_BUFFER_TOO_SMALL
  1263. //
  1264. // MessageText:
  1265. //
  1266. // The buffer passed for the provider name property is too small.
  1267. //
  1268. #define MQ_ERROR_PROV_NAME_BUFFER_TOO_SMALL 0xC00E0063L
  1269. //
  1270. // MessageId: MQ_ERROR_ILLEGAL_OPERATION
  1271. //
  1272. // MessageText:
  1273. //
  1274. // The operation is invalid for a foreign message queuing system.
  1275. //
  1276. #define MQ_ERROR_ILLEGAL_OPERATION 0xC00E0064L
  1277. //
  1278. // MessageId: MQ_ERROR_WRITE_NOT_ALLOWED
  1279. //
  1280. // MessageText:
  1281. //
  1282. // Obsolete; another MQIS server is being installed. Write operations to the database are not allowed at this stage.
  1283. //
  1284. #define MQ_ERROR_WRITE_NOT_ALLOWED 0xC00E0065L
  1285. //
  1286. // MessageId: MQ_ERROR_WKS_CANT_SERVE_CLIENT
  1287. //
  1288. // MessageText:
  1289. //
  1290. // Independent clients cannot support dependent clients.
  1291. //
  1292. #define MQ_ERROR_WKS_CANT_SERVE_CLIENT 0xC00E0066L
  1293. //
  1294. // MessageId: MQ_ERROR_DEPEND_WKS_LICENSE_OVERFLOW
  1295. //
  1296. // MessageText:
  1297. //
  1298. // The number of dependent clients served by the Message Queuing server reached its upper limit.
  1299. //
  1300. #define MQ_ERROR_DEPEND_WKS_LICENSE_OVERFLOW 0xC00E0067L
  1301. //
  1302. // MessageId: MQ_CORRUPTED_QUEUE_WAS_DELETED
  1303. //
  1304. // MessageText:
  1305. //
  1306. // The file %1 for the queue %2 in the Lqs folder was deleted because it was corrupted.
  1307. //
  1308. #define MQ_CORRUPTED_QUEUE_WAS_DELETED 0xC00E0068L
  1309. //
  1310. // MessageId: MQ_ERROR_REMOTE_MACHINE_NOT_AVAILABLE
  1311. //
  1312. // MessageText:
  1313. //
  1314. // The remote computer is not available.
  1315. //
  1316. #define MQ_ERROR_REMOTE_MACHINE_NOT_AVAILABLE 0xC00E0069L
  1317. //
  1318. // MessageId: MQ_ERROR_UNSUPPORTED_OPERATION
  1319. //
  1320. // MessageText:
  1321. //
  1322. // This operation is not supported for Message Queuing installed in workgroup mode.
  1323. //
  1324. #define MQ_ERROR_UNSUPPORTED_OPERATION 0xC00E006AL
  1325. //
  1326. // MessageId: MQ_ERROR_ENCRYPTION_PROVIDER_NOT_SUPPORTED
  1327. //
  1328. // MessageText:
  1329. //
  1330. // The cryptographic service provider %1 is not supported by Message Queuing.
  1331. //
  1332. #define MQ_ERROR_ENCRYPTION_PROVIDER_NOT_SUPPORTED 0xC00E006BL
  1333. //
  1334. // MessageId: MQ_ERROR_CANNOT_SET_CRYPTO_SEC_DESCR
  1335. //
  1336. // MessageText:
  1337. //
  1338. // The security descriptors for the cryptographic keys cannot be set.
  1339. //
  1340. #define MQ_ERROR_CANNOT_SET_CRYPTO_SEC_DESCR 0xC00E006CL
  1341. //
  1342. // MessageId: MQ_ERROR_CERTIFICATE_NOT_PROVIDED
  1343. //
  1344. // MessageText:
  1345. //
  1346. // A user attempted to send an authenticated message without a certificate.
  1347. //
  1348. #define MQ_ERROR_CERTIFICATE_NOT_PROVIDED 0xC00E006DL
  1349. //
  1350. // MessageId: MQ_ERROR_Q_DNS_PROPERTY_NOT_SUPPORTED
  1351. //
  1352. // MessageText:
  1353. //
  1354. // The column PROPID_Q_PATHNAME_DNS is not supported for the MQLocateBegin API.
  1355. //
  1356. #define MQ_ERROR_Q_DNS_PROPERTY_NOT_SUPPORTED 0xC00E006EL
  1357. //
  1358. // MessageId: MQ_ERROR_CANNOT_CREATE_CERT_STORE
  1359. //
  1360. // MessageText:
  1361. //
  1362. // A certificate store cannot be created for the internal certificate.
  1363. //
  1364. #define MQ_ERROR_CANNOT_CREATE_CERT_STORE 0xC00E006FL
  1365. //
  1366. // MessageId: MQ_ERROR_CANNOT_OPEN_CERT_STORE
  1367. //
  1368. // MessageText:
  1369. //
  1370. // The certificate store for the internal certificate cannot be opened.
  1371. //
  1372. #define MQ_ERROR_CANNOT_OPEN_CERT_STORE 0xC00E0070L
  1373. //
  1374. // MessageId: MQ_ERROR_ILLEGAL_ENTERPRISE_OPERATION
  1375. //
  1376. // MessageText:
  1377. //
  1378. // This operation is invalid for an MsmqServices object.
  1379. //
  1380. #define MQ_ERROR_ILLEGAL_ENTERPRISE_OPERATION 0xC00E0071L
  1381. //
  1382. // MessageId: MQ_ERROR_CANNOT_GRANT_ADD_GUID
  1383. //
  1384. // MessageText:
  1385. //
  1386. // The Add GUID permission cannot be granted to the current user.
  1387. //
  1388. #define MQ_ERROR_CANNOT_GRANT_ADD_GUID 0xC00E0072L
  1389. //
  1390. // MessageId: MQ_ERROR_CANNOT_LOAD_MSMQOCM
  1391. //
  1392. // MessageText:
  1393. //
  1394. // Obsolete: The dynamic-link library Msmqocm.dll cannot be loaded.
  1395. //
  1396. #define MQ_ERROR_CANNOT_LOAD_MSMQOCM 0xC00E0073L
  1397. //
  1398. // MessageId: MQ_ERROR_NO_ENTRY_POINT_MSMQOCM
  1399. //
  1400. // MessageText:
  1401. //
  1402. // An entry point cannot be located in Msmqocm.dll.
  1403. //
  1404. #define MQ_ERROR_NO_ENTRY_POINT_MSMQOCM 0xC00E0074L
  1405. //
  1406. // MessageId: MQ_ERROR_NO_MSMQ_SERVERS_ON_DC
  1407. //
  1408. // MessageText:
  1409. //
  1410. // Message Queuing servers cannot be found on domain controllers.
  1411. //
  1412. #define MQ_ERROR_NO_MSMQ_SERVERS_ON_DC 0xC00E0075L
  1413. //
  1414. // MessageId: MQ_ERROR_CANNOT_JOIN_DOMAIN
  1415. //
  1416. // MessageText:
  1417. //
  1418. // The computer joined the domain, but Message Queuing will continue to run in workgroup mode because it failed to register itself in Active Directory.
  1419. //
  1420. #define MQ_ERROR_CANNOT_JOIN_DOMAIN 0xC00E0076L
  1421. //
  1422. // MessageId: MQ_ERROR_CANNOT_CREATE_ON_GC
  1423. //
  1424. // MessageText:
  1425. //
  1426. // The object was not created on the Global Catalog server specified.
  1427. //
  1428. #define MQ_ERROR_CANNOT_CREATE_ON_GC 0xC00E0077L
  1429. //
  1430. // MessageId: MQ_ERROR_GUID_NOT_MATCHING
  1431. //
  1432. // MessageText:
  1433. //
  1434. // Obsolete, kept for backward compatibility
  1435. //
  1436. #define MQ_ERROR_GUID_NOT_MATCHING 0xC00E0078L
  1437. //
  1438. // MessageId: MQ_ERROR_PUBLIC_KEY_NOT_FOUND
  1439. //
  1440. // MessageText:
  1441. //
  1442. // The public key for the computer %1 cannot be found.
  1443. //
  1444. #define MQ_ERROR_PUBLIC_KEY_NOT_FOUND 0xC00E0079L
  1445. //
  1446. // MessageId: MQ_ERROR_PUBLIC_KEY_DOES_NOT_EXIST
  1447. //
  1448. // MessageText:
  1449. //
  1450. // The public key for the computer %1 does not exist.
  1451. //
  1452. #define MQ_ERROR_PUBLIC_KEY_DOES_NOT_EXIST 0xC00E007AL
  1453. //
  1454. // MessageId: MQ_ERROR_ILLEGAL_MQPRIVATEPROPS
  1455. //
  1456. // MessageText:
  1457. //
  1458. // The parameters in MQPRIVATEPROPS are invalid. Either the pointer to the MQPRIVATEPROPS structure has a null value, or no properties are specified in it.
  1459. //
  1460. #define MQ_ERROR_ILLEGAL_MQPRIVATEPROPS 0xC00E007BL
  1461. //
  1462. // MessageId: MQ_ERROR_NO_GC_IN_DOMAIN
  1463. //
  1464. // MessageText:
  1465. //
  1466. // Global Catalog servers cannot be found in the domain specified.
  1467. //
  1468. #define MQ_ERROR_NO_GC_IN_DOMAIN 0xC00E007CL
  1469. //
  1470. // MessageId: MQ_ERROR_NO_MSMQ_SERVERS_ON_GC
  1471. //
  1472. // MessageText:
  1473. //
  1474. // No Message Queuing servers were found on Global Catalog servers.
  1475. //
  1476. #define MQ_ERROR_NO_MSMQ_SERVERS_ON_GC 0xC00E007DL
  1477. //
  1478. // MessageId: MQ_ERROR_CANNOT_GET_DN
  1479. //
  1480. // MessageText:
  1481. //
  1482. // Obsolete, kept for backward compatibility
  1483. //
  1484. #define MQ_ERROR_CANNOT_GET_DN 0xC00E007EL
  1485. //
  1486. // MessageId: MQ_ERROR_CANNOT_HASH_DATA_EX
  1487. //
  1488. // MessageText:
  1489. //
  1490. // Data for an authenticated message cannot be hashed.
  1491. //
  1492. #define MQ_ERROR_CANNOT_HASH_DATA_EX 0xC00E007FL
  1493. //
  1494. // MessageId: MQ_ERROR_CANNOT_SIGN_DATA_EX
  1495. //
  1496. // MessageText:
  1497. //
  1498. // Data cannot be signed before sending an authenticated message.
  1499. //
  1500. #define MQ_ERROR_CANNOT_SIGN_DATA_EX 0xC00E0080L
  1501. //
  1502. // MessageId: MQ_ERROR_CANNOT_CREATE_HASH_EX
  1503. //
  1504. // MessageText:
  1505. //
  1506. // A hash object cannot be created for an authenticated message.
  1507. //
  1508. #define MQ_ERROR_CANNOT_CREATE_HASH_EX 0xC00E0081L
  1509. //
  1510. // MessageId: MQ_ERROR_FAIL_VERIFY_SIGNATURE_EX
  1511. //
  1512. // MessageText:
  1513. //
  1514. // The signature of the message received is not valid.
  1515. //
  1516. #define MQ_ERROR_FAIL_VERIFY_SIGNATURE_EX 0xC00E0082L
  1517. //
  1518. // MessageId: MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS
  1519. //
  1520. // MessageText:
  1521. //
  1522. // The object that will be deleted is owned by a primary site controller. The operation cannot be performed.
  1523. //
  1524. #define MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS 0xC00E0083L
  1525. //
  1526. // MessageId: MQ_ERROR_NO_MQUSER_OU
  1527. //
  1528. // MessageText:
  1529. //
  1530. // There is no MSMQ Users organizational unit object in Active Directory for the domain. Please create one manually.
  1531. //
  1532. #define MQ_ERROR_NO_MQUSER_OU 0xC00E0084L
  1533. //
  1534. // MessageId: MQ_ERROR_CANNOT_LOAD_MQAD
  1535. //
  1536. // MessageText:
  1537. //
  1538. // The dynamic-link library Mqad.dll cannot be loaded.
  1539. //
  1540. #define MQ_ERROR_CANNOT_LOAD_MQAD 0xC00E0085L
  1541. //
  1542. // MessageId: MQ_ERROR_CANNOT_LOAD_MQDSSRV
  1543. //
  1544. // MessageText:
  1545. //
  1546. // Obsolete, kept for backward compatibility
  1547. //
  1548. #define MQ_ERROR_CANNOT_LOAD_MQDSSRV 0xC00E0086L
  1549. //
  1550. // MessageId: MQ_ERROR_PROPERTIES_CONFLICT
  1551. //
  1552. // MessageText:
  1553. //
  1554. // Two or more of the properties passed cannot co-exist.
  1555. // For example, you cannot set both PROPID_M_RESP_QUEUE and PROPID_M_RESP_FORMAT_NAME when sending a message.
  1556. //
  1557. #define MQ_ERROR_PROPERTIES_CONFLICT 0xC00E0087L
  1558. //
  1559. // MessageId: MQ_ERROR_MESSAGE_NOT_FOUND
  1560. //
  1561. // MessageText:
  1562. //
  1563. // The message does not exist or was removed from the queue.
  1564. //
  1565. #define MQ_ERROR_MESSAGE_NOT_FOUND 0xC00E0088L
  1566. //
  1567. // MessageId: MQ_ERROR_CANT_RESOLVE_SITES
  1568. //
  1569. // MessageText:
  1570. //
  1571. // The sites where the computer resides cannot be resolved. Check that the subnets in your network are configured correctly in Active Directory and that each site is configured with the appropriate subnet.
  1572. //
  1573. #define MQ_ERROR_CANT_RESOLVE_SITES 0xC00E0089L
  1574. //
  1575. // MessageId: MQ_ERROR_NOT_SUPPORTED_BY_DEPENDENT_CLIENTS
  1576. //
  1577. // MessageText:
  1578. //
  1579. // This operation is not supported by dependent clients.
  1580. //
  1581. #define MQ_ERROR_NOT_SUPPORTED_BY_DEPENDENT_CLIENTS 0xC00E008AL
  1582. //
  1583. // MessageId: MQ_ERROR_OPERATION_NOT_SUPPORTED_BY_REMOTE_COMPUTER
  1584. //
  1585. // MessageText:
  1586. //
  1587. // This operation is not supported by the remote Message Queuing service. For example, MQReceiveMessageByLookupId is not supported by MSMQ 1.0/2.0.
  1588. //
  1589. #define MQ_ERROR_OPERATION_NOT_SUPPORTED_BY_REMOTE_COMPUTER 0xC00E008BL
  1590. //
  1591. // MessageId: MQ_ERROR_NOT_A_CORRECT_OBJECT_CLASS
  1592. //
  1593. // MessageText:
  1594. //
  1595. // The object whose properties are being retrieved from Active Directory does not belong to the class requested.
  1596. //
  1597. #define MQ_ERROR_NOT_A_CORRECT_OBJECT_CLASS 0xC00E008CL
  1598. //
  1599. // MessageId: MQ_ERROR_MULTI_SORT_KEYS
  1600. //
  1601. // MessageText:
  1602. //
  1603. // The value of cCol in MQSORTSET cannot be greater than 1. Active Directory supports only a single sort key.
  1604. //
  1605. #define MQ_ERROR_MULTI_SORT_KEYS 0xC00E008DL
  1606. //
  1607. // MessageId: MQ_ERROR_GC_NEEDED
  1608. //
  1609. // MessageText:
  1610. //
  1611. // An MSMQ Configuration (msmq) object with the GUID supplied cannot be created. In order to support the creation of an MSMQ Configuration object with a given GUID, Message Queuing Downlevel Client Support must be installed on a domain controller that is configured as a Global Catalog (GC) server.
  1612. //
  1613. #define MQ_ERROR_GC_NEEDED 0xC00E008EL
  1614. //
  1615. // MessageId: MQ_ERROR_DS_BIND_ROOT_FOREST
  1616. //
  1617. // MessageText:
  1618. //
  1619. // Binding to the forest root failed. This error usually indicates a problem in the DNS configuration.
  1620. //
  1621. #define MQ_ERROR_DS_BIND_ROOT_FOREST 0xC00E008FL
  1622. //
  1623. // MessageId: MQ_ERROR_DS_LOCAL_USER
  1624. //
  1625. // MessageText:
  1626. //
  1627. // A local user is authenticated as an anonymous user and cannot access Active Directory. You need to log on as a domain user to access Active Directory.
  1628. //
  1629. #define MQ_ERROR_DS_LOCAL_USER 0xC00E0090L
  1630. //
  1631. // MessageId: MQ_ERROR_Q_ADS_PROPERTY_NOT_SUPPORTED
  1632. //
  1633. // MessageText:
  1634. //
  1635. // The column PROPID_Q_ADS_PATH is not supported for the MQLocateBegin API.
  1636. //
  1637. #define MQ_ERROR_Q_ADS_PROPERTY_NOT_SUPPORTED 0xC00E0091L
  1638. //
  1639. // MessageId: MQ_ERROR_BAD_XML_FORMAT
  1640. //
  1641. // MessageText:
  1642. //
  1643. // The given property is not a valid XML document.
  1644. //
  1645. #define MQ_ERROR_BAD_XML_FORMAT 0xC00E0092L
  1646. //
  1647. // MessageId: MQ_ERROR_UNSUPPORTED_CLASS
  1648. //
  1649. // MessageText:
  1650. //
  1651. // The Active Directory object specified is not an instance of a supported class.
  1652. //
  1653. #define MQ_ERROR_UNSUPPORTED_CLASS 0xC00E0093L
  1654. //
  1655. // MessageId: MQ_ERROR_UNINITIALIZED_OBJECT
  1656. //
  1657. // MessageText:
  1658. //
  1659. // The MSMQQueueState object must be initialized before it is used.
  1660. //
  1661. #define MQ_ERROR_UNINITIALIZED_OBJECT 0xC00E0094L
  1662. //
  1663. // Informational
  1664. //
  1665. //
  1666. // MessageId: MQ_INFORMATION_PROPERTY
  1667. //
  1668. // MessageText:
  1669. //
  1670. // One or more of the properties passed resulted in a warning, but the function completed.
  1671. //
  1672. #define MQ_INFORMATION_PROPERTY 0x400E0001L
  1673. //
  1674. // MessageId: MQ_INFORMATION_ILLEGAL_PROPERTY
  1675. //
  1676. // MessageText:
  1677. //
  1678. // The property ID is invalid.
  1679. //
  1680. #define MQ_INFORMATION_ILLEGAL_PROPERTY 0x400E0002L
  1681. //
  1682. // MessageId: MQ_INFORMATION_PROPERTY_IGNORED
  1683. //
  1684. // MessageText:
  1685. //
  1686. // The property specified was ignored for this operation (this occurs,
  1687. // for example, when PROPID_M_SENDERID is passed to SendMessage()).
  1688. //
  1689. #define MQ_INFORMATION_PROPERTY_IGNORED 0x400E0003L
  1690. //
  1691. // MessageId: MQ_INFORMATION_UNSUPPORTED_PROPERTY
  1692. //
  1693. // MessageText:
  1694. //
  1695. // The property specified is not supported and was ignored for this operation.
  1696. //
  1697. #define MQ_INFORMATION_UNSUPPORTED_PROPERTY 0x400E0004L
  1698. //
  1699. // MessageId: MQ_INFORMATION_DUPLICATE_PROPERTY
  1700. //
  1701. // MessageText:
  1702. //
  1703. // The property specified is already in the property identifier array.
  1704. // The duplicate was ignored for this operation.
  1705. //
  1706. #define MQ_INFORMATION_DUPLICATE_PROPERTY 0x400E0005L
  1707. //
  1708. // MessageId: MQ_INFORMATION_OPERATION_PENDING
  1709. //
  1710. // MessageText:
  1711. //
  1712. // An asynchronous operation is currently pending.
  1713. //
  1714. #define MQ_INFORMATION_OPERATION_PENDING 0x400E0006L
  1715. //
  1716. // MessageId: MQ_INFORMATION_FORMATNAME_BUFFER_TOO_SMALL
  1717. //
  1718. // MessageText:
  1719. //
  1720. // The format name buffer supplied to MQCreateQueue was too small
  1721. // to hold the format name, however the queue was created successfully.
  1722. //
  1723. #define MQ_INFORMATION_FORMATNAME_BUFFER_TOO_SMALL 0x400E0009L
  1724. //
  1725. // MessageId: MQ_INFORMATION_INTERNAL_USER_CERT_EXIST
  1726. //
  1727. // MessageText:
  1728. //
  1729. // An internal Message Queuing certificate already exists for this user.
  1730. //
  1731. #define MQ_INFORMATION_INTERNAL_USER_CERT_EXIST 0x400E000AL
  1732. //
  1733. // MessageId: MQ_INFORMATION_OWNER_IGNORED
  1734. //
  1735. // MessageText:
  1736. //
  1737. // The queue owner was not set during the processing of this call to MQSetQueueSecurity().
  1738. //
  1739. #define MQ_INFORMATION_OWNER_IGNORED 0x400E000BL
  1740. //+-----------------------------------------
  1741. //
  1742. // Flags for MQRegisterCertificate()
  1743. //
  1744. //+-----------------------------------------
  1745. #define MQCERT_REGISTER_ALWAYS 0x01
  1746. #define MQCERT_REGISTER_IF_NOT_EXIST 0x02
  1747. //********************************************************************
  1748. // SECURITY Flags (Queue access control)
  1749. //********************************************************************
  1750. #define MQSEC_DELETE_MESSAGE 0x1
  1751. #define MQSEC_PEEK_MESSAGE 0x2
  1752. #define MQSEC_WRITE_MESSAGE 0x4
  1753. #define MQSEC_DELETE_JOURNAL_MESSAGE 0x8
  1754. #define MQSEC_SET_QUEUE_PROPERTIES 0x10
  1755. #define MQSEC_GET_QUEUE_PROPERTIES 0x20
  1756. #define MQSEC_DELETE_QUEUE DELETE
  1757. #define MQSEC_GET_QUEUE_PERMISSIONS READ_CONTROL
  1758. #define MQSEC_CHANGE_QUEUE_PERMISSIONS WRITE_DAC
  1759. #define MQSEC_TAKE_QUEUE_OWNERSHIP WRITE_OWNER
  1760. #define MQSEC_RECEIVE_MESSAGE (MQSEC_DELETE_MESSAGE | \
  1761. MQSEC_PEEK_MESSAGE)
  1762. #define MQSEC_RECEIVE_JOURNAL_MESSAGE (MQSEC_DELETE_JOURNAL_MESSAGE | \
  1763. MQSEC_PEEK_MESSAGE)
  1764. #define MQSEC_QUEUE_GENERIC_READ (MQSEC_GET_QUEUE_PROPERTIES | \
  1765. MQSEC_GET_QUEUE_PERMISSIONS | \
  1766. MQSEC_RECEIVE_MESSAGE | \
  1767. MQSEC_RECEIVE_JOURNAL_MESSAGE)
  1768. #define MQSEC_QUEUE_GENERIC_WRITE (MQSEC_GET_QUEUE_PROPERTIES | \
  1769. MQSEC_GET_QUEUE_PERMISSIONS | \
  1770. MQSEC_WRITE_MESSAGE)
  1771. #define MQSEC_QUEUE_GENERIC_EXECUTE 0
  1772. #define MQSEC_QUEUE_GENERIC_ALL (MQSEC_RECEIVE_MESSAGE | \
  1773. MQSEC_RECEIVE_JOURNAL_MESSAGE | \
  1774. MQSEC_WRITE_MESSAGE | \
  1775. MQSEC_SET_QUEUE_PROPERTIES | \
  1776. MQSEC_GET_QUEUE_PROPERTIES | \
  1777. MQSEC_DELETE_QUEUE | \
  1778. MQSEC_GET_QUEUE_PERMISSIONS | \
  1779. MQSEC_CHANGE_QUEUE_PERMISSIONS | \
  1780. MQSEC_TAKE_QUEUE_OWNERSHIP)
  1781. #ifdef __cplusplus
  1782. extern "C"
  1783. {
  1784. #endif
  1785. //********************************************************************
  1786. // RECEIVE CALLBACK
  1787. //********************************************************************
  1788. typedef
  1789. VOID
  1790. (APIENTRY *PMQRECEIVECALLBACK)(
  1791. HRESULT hrStatus,
  1792. QUEUEHANDLE hSource,
  1793. DWORD dwTimeout,
  1794. DWORD dwAction,
  1795. MQMSGPROPS* pMessageProps,
  1796. LPOVERLAPPED lpOverlapped,
  1797. HANDLE hCursor
  1798. );
  1799. //********************************************************************
  1800. // MSMQ API
  1801. //********************************************************************
  1802. HRESULT
  1803. APIENTRY
  1804. MQCreateQueue(
  1805. IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
  1806. IN OUT MQQUEUEPROPS* pQueueProps,
  1807. OUT LPWSTR lpwcsFormatName,
  1808. IN OUT LPDWORD lpdwFormatNameLength
  1809. );
  1810. HRESULT
  1811. APIENTRY
  1812. MQDeleteQueue(
  1813. IN LPCWSTR lpwcsFormatName
  1814. );
  1815. HRESULT
  1816. APIENTRY
  1817. MQLocateBegin(
  1818. IN LPCWSTR lpwcsContext,
  1819. IN MQRESTRICTION* pRestriction,
  1820. IN MQCOLUMNSET* pColumns,
  1821. IN MQSORTSET* pSort,
  1822. OUT PHANDLE phEnum
  1823. );
  1824. HRESULT
  1825. APIENTRY
  1826. MQLocateNext(
  1827. IN HANDLE hEnum,
  1828. IN OUT DWORD* pcProps,
  1829. OUT MQPROPVARIANT aPropVar[]
  1830. );
  1831. HRESULT
  1832. APIENTRY
  1833. MQLocateEnd(
  1834. IN HANDLE hEnum
  1835. );
  1836. HRESULT
  1837. APIENTRY
  1838. MQOpenQueue(
  1839. IN LPCWSTR lpwcsFormatName,
  1840. IN DWORD dwAccess,
  1841. IN DWORD dwShareMode,
  1842. OUT QUEUEHANDLE* phQueue
  1843. );
  1844. HRESULT
  1845. APIENTRY
  1846. MQSendMessage(
  1847. IN QUEUEHANDLE hDestinationQueue,
  1848. IN MQMSGPROPS* pMessageProps,
  1849. IN ITransaction *pTransaction
  1850. );
  1851. HRESULT
  1852. APIENTRY
  1853. MQReceiveMessage(
  1854. IN QUEUEHANDLE hSource,
  1855. IN DWORD dwTimeout,
  1856. IN DWORD dwAction,
  1857. IN OUT MQMSGPROPS* pMessageProps,
  1858. IN OUT LPOVERLAPPED lpOverlapped,
  1859. IN PMQRECEIVECALLBACK fnReceiveCallback,
  1860. IN HANDLE hCursor,
  1861. IN ITransaction* pTransaction
  1862. );
  1863. HRESULT
  1864. APIENTRY
  1865. MQReceiveMessageByLookupId(
  1866. IN QUEUEHANDLE hSource,
  1867. IN ULONGLONG ullLookupId,
  1868. IN DWORD dwLookupAction,
  1869. IN OUT MQMSGPROPS* pMessageProps,
  1870. IN OUT LPOVERLAPPED lpOverlapped,
  1871. IN PMQRECEIVECALLBACK fnReceiveCallback,
  1872. IN ITransaction *pTransaction
  1873. );
  1874. HRESULT
  1875. APIENTRY
  1876. MQCreateCursor(
  1877. IN QUEUEHANDLE hQueue,
  1878. OUT PHANDLE phCursor
  1879. );
  1880. HRESULT
  1881. APIENTRY
  1882. MQCloseCursor(
  1883. IN HANDLE hCursor
  1884. );
  1885. HRESULT
  1886. APIENTRY
  1887. MQCloseQueue(
  1888. IN QUEUEHANDLE hQueue
  1889. );
  1890. HRESULT
  1891. APIENTRY
  1892. MQSetQueueProperties(
  1893. IN LPCWSTR lpwcsFormatName,
  1894. IN MQQUEUEPROPS* pQueueProps
  1895. );
  1896. HRESULT
  1897. APIENTRY
  1898. MQGetQueueProperties(
  1899. IN LPCWSTR lpwcsFormatName,
  1900. OUT MQQUEUEPROPS* pQueueProps
  1901. );
  1902. HRESULT
  1903. APIENTRY
  1904. MQGetQueueSecurity(
  1905. IN LPCWSTR lpwcsFormatName,
  1906. IN SECURITY_INFORMATION RequestedInformation,
  1907. OUT PSECURITY_DESCRIPTOR pSecurityDescriptor,
  1908. IN DWORD nLength,
  1909. OUT LPDWORD lpnLengthNeeded
  1910. );
  1911. HRESULT
  1912. APIENTRY
  1913. MQSetQueueSecurity(
  1914. IN LPCWSTR lpwcsFormatName,
  1915. IN SECURITY_INFORMATION SecurityInformation,
  1916. IN PSECURITY_DESCRIPTOR pSecurityDescriptor
  1917. );
  1918. HRESULT
  1919. APIENTRY
  1920. MQPathNameToFormatName(
  1921. IN LPCWSTR lpwcsPathName,
  1922. OUT LPWSTR lpwcsFormatName,
  1923. IN OUT LPDWORD lpdwFormatNameLength
  1924. );
  1925. HRESULT
  1926. APIENTRY
  1927. MQHandleToFormatName(
  1928. IN QUEUEHANDLE hQueue,
  1929. OUT LPWSTR lpwcsFormatName,
  1930. IN OUT LPDWORD lpdwFormatNameLength
  1931. );
  1932. HRESULT
  1933. APIENTRY
  1934. MQInstanceToFormatName(
  1935. IN GUID* pGuid,
  1936. OUT LPWSTR lpwcsFormatName,
  1937. IN OUT LPDWORD lpdwFormatNameLength
  1938. );
  1939. HRESULT
  1940. APIENTRY
  1941. MQADsPathToFormatName(
  1942. IN LPCWSTR lpwcsADsPath,
  1943. OUT LPWSTR lpwcsFormatName,
  1944. IN OUT LPDWORD lpdwFormatNameLength
  1945. );
  1946. VOID
  1947. APIENTRY
  1948. MQFreeMemory(
  1949. IN PVOID pvMemory
  1950. );
  1951. HRESULT
  1952. APIENTRY
  1953. MQGetMachineProperties(
  1954. IN LPCWSTR lpwcsMachineName,
  1955. IN const GUID* pguidMachineId,
  1956. IN OUT MQQMPROPS* pQMProps
  1957. );
  1958. HRESULT
  1959. APIENTRY
  1960. MQGetSecurityContext(
  1961. IN PVOID lpCertBuffer,
  1962. IN DWORD dwCertBufferLength,
  1963. OUT HANDLE* phSecurityContext
  1964. );
  1965. HRESULT
  1966. APIENTRY
  1967. MQGetSecurityContextEx(
  1968. IN PVOID lpCertBuffer,
  1969. IN DWORD dwCertBufferLength,
  1970. OUT HANDLE* phSecurityContext
  1971. );
  1972. VOID
  1973. APIENTRY
  1974. MQFreeSecurityContext(
  1975. IN HANDLE hSecurityContext
  1976. );
  1977. HRESULT
  1978. APIENTRY
  1979. MQRegisterCertificate(
  1980. IN DWORD dwFlags,
  1981. IN PVOID lpCertBuffer,
  1982. IN DWORD dwCertBufferLength
  1983. );
  1984. HRESULT
  1985. APIENTRY
  1986. MQBeginTransaction(
  1987. OUT ITransaction **ppTransaction
  1988. );
  1989. HRESULT
  1990. APIENTRY
  1991. MQGetOverlappedResult(
  1992. IN LPOVERLAPPED lpOverlapped
  1993. );
  1994. HRESULT
  1995. APIENTRY
  1996. MQGetPrivateComputerInformation(
  1997. IN LPCWSTR lpwcsComputerName,
  1998. IN OUT MQPRIVATEPROPS* pPrivateProps
  1999. );
  2000. HRESULT
  2001. APIENTRY
  2002. MQPurgeQueue(
  2003. IN QUEUEHANDLE hQueue
  2004. );
  2005. HRESULT
  2006. APIENTRY
  2007. MQMgmtGetInfo(
  2008. IN LPCWSTR pComputerName,
  2009. IN LPCWSTR pObjectName,
  2010. IN OUT MQMGMTPROPS* pMgmtProps
  2011. );
  2012. HRESULT
  2013. APIENTRY
  2014. MQMgmtAction(
  2015. IN LPCWSTR pComputerName,
  2016. IN LPCWSTR pObjectName,
  2017. IN LPCWSTR pAction
  2018. );
  2019. #ifdef __cplusplus
  2020. }
  2021. #endif
  2022. #endif // __MQ_H__