Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef __MQ_H__
      7 #define __MQ_H__
      8 
      9 #ifndef __ITransaction_FWD_DEFINED__
     10 #define __ITransaction_FWD_DEFINED__
     11 typedef struct ITransaction ITransaction;
     12 #endif
     13 
     14 typedef struct tagPROPVARIANT tagMQPROPVARIANT;
     15 typedef tagMQPROPVARIANT MQPROPVARIANT;
     16 
     17 #define PRLT (0)
     18 #define PRLE (1)
     19 #define PRGT (2)
     20 #define PRGE (3)
     21 #define PREQ (4)
     22 #define PRNE (5)
     23 
     24 typedef struct tagMQPROPERTYRESTRICTION {
     25   ULONG rel;
     26   PROPID prop;
     27   MQPROPVARIANT prval;
     28 } MQPROPERTYRESTRICTION;
     29 
     30 typedef struct tagMQRESTRICTION {
     31   ULONG cRes;
     32   MQPROPERTYRESTRICTION *paPropRes;
     33 } MQRESTRICTION;
     34 
     35 typedef struct tagMQCOLUMNSET {
     36   ULONG cCol;
     37   PROPID *aCol;
     38 } MQCOLUMNSET;
     39 
     40 #define QUERY_SORTASCEND (0)
     41 #define QUERY_SORTDESCEND (1)
     42 
     43 typedef struct tagMQSORTKEY {
     44   PROPID propColumn;
     45   ULONG dwOrder;
     46 } MQSORTKEY;
     47 
     48 typedef struct tagMQSORTSET {
     49   ULONG cCol;
     50   MQSORTKEY *aCol;
     51 } MQSORTSET;
     52 
     53 typedef HANDLE QUEUEHANDLE;
     54 typedef PROPID MSGPROPID;
     55 
     56 typedef struct tagMQMSGPROPS {
     57   DWORD cProp;
     58   MSGPROPID *aPropID;
     59   MQPROPVARIANT *aPropVar;
     60   HRESULT *aStatus;
     61 } MQMSGPROPS;
     62 
     63 typedef PROPID QUEUEPROPID;
     64 
     65 typedef struct tagMQQUEUEPROPS {
     66   DWORD cProp;
     67   QUEUEPROPID *aPropID;
     68   MQPROPVARIANT *aPropVar;
     69   HRESULT *aStatus;
     70 } MQQUEUEPROPS;
     71 
     72 typedef PROPID QMPROPID;
     73 
     74 typedef struct tagMQQMPROPS {
     75   DWORD cProp;
     76   QMPROPID *aPropID;
     77   MQPROPVARIANT *aPropVar;
     78   HRESULT *aStatus;
     79 } MQQMPROPS;
     80 
     81 typedef struct tagMQPRIVATEPROPS {
     82   DWORD cProp;
     83   QMPROPID *aPropID;
     84   MQPROPVARIANT *aPropVar;
     85   HRESULT *aStatus;
     86 } MQPRIVATEPROPS;
     87 
     88 typedef PROPID MGMTPROPID;
     89 
     90 typedef struct tagMQMGMTPROPS {
     91   DWORD cProp;
     92   MGMTPROPID *aPropID;
     93   MQPROPVARIANT *aPropVar;
     94   HRESULT *aStatus;
     95 } MQMGMTPROPS;
     96 
     97 typedef struct tagSEQUENCE_INFO {
     98   LONGLONG SeqID;
     99   ULONG SeqNo;
    100   ULONG PrevNo;
    101 } SEQUENCE_INFO;
    102 
    103 #define MQ_RECEIVE_ACCESS 0x00000001
    104 #define MQ_SEND_ACCESS 0x00000002
    105 #define MQ_PEEK_ACCESS 0x00000020
    106 #define MQ_ADMIN_ACCESS 0x00000080
    107 
    108 #define MQ_DENY_NONE 0x00000000
    109 #define MQ_DENY_RECEIVE_SHARE 0x00000001
    110 
    111 #define MQ_ACTION_RECEIVE 0x00000000
    112 #define MQ_ACTION_PEEK_CURRENT 0x80000000
    113 #define MQ_ACTION_PEEK_NEXT 0x80000001
    114 
    115 #define MQ_LOOKUP_PEEK_CURRENT 0x40000010
    116 #define MQ_LOOKUP_PEEK_NEXT 0x40000011
    117 #define MQ_LOOKUP_PEEK_PREV 0x40000012
    118 #define MQ_LOOKUP_PEEK_FIRST 0x40000014
    119 #define MQ_LOOKUP_PEEK_LAST 0x40000018
    120 #define MQ_LOOKUP_RECEIVE_CURRENT 0x40000020
    121 #define MQ_LOOKUP_RECEIVE_NEXT 0x40000021
    122 #define MQ_LOOKUP_RECEIVE_PREV 0x40000022
    123 #define MQ_LOOKUP_RECEIVE_FIRST 0x40000024
    124 #define MQ_LOOKUP_RECEIVE_LAST 0x40000028
    125 
    126 #define MQ_NO_TRANSACTION NULL
    127 #define MQ_MTS_TRANSACTION (ITransaction *)1
    128 #define MQ_XA_TRANSACTION (ITransaction *)2
    129 #define MQ_SINGLE_MESSAGE (ITransaction *)3
    130 
    131 #define MQ_MIN_PRIORITY 0
    132 #define MQ_MAX_PRIORITY 7
    133 
    134 #define PROPID_M_BASE 0
    135 #define PROPID_M_CLASS (PROPID_M_BASE + 1)
    136 #define PROPID_M_MSGID (PROPID_M_BASE + 2)
    137 #define PROPID_M_CORRELATIONID (PROPID_M_BASE + 3)
    138 #define PROPID_M_PRIORITY (PROPID_M_BASE + 4)
    139 #define PROPID_M_DELIVERY (PROPID_M_BASE + 5)
    140 #define PROPID_M_ACKNOWLEDGE (PROPID_M_BASE + 6)
    141 #define PROPID_M_JOURNAL (PROPID_M_BASE + 7)
    142 #define PROPID_M_APPSPECIFIC (PROPID_M_BASE + 8)
    143 #define PROPID_M_BODY (PROPID_M_BASE + 9)
    144 #define PROPID_M_BODY_SIZE (PROPID_M_BASE + 10)
    145 #define PROPID_M_LABEL (PROPID_M_BASE + 11)
    146 #define PROPID_M_LABEL_LEN (PROPID_M_BASE + 12)
    147 #define PROPID_M_TIME_TO_REACH_QUEUE (PROPID_M_BASE + 13)
    148 #define PROPID_M_TIME_TO_BE_RECEIVED (PROPID_M_BASE + 14)
    149 #define PROPID_M_RESP_QUEUE (PROPID_M_BASE + 15)
    150 #define PROPID_M_RESP_QUEUE_LEN (PROPID_M_BASE + 16)
    151 #define PROPID_M_ADMIN_QUEUE (PROPID_M_BASE + 17)
    152 #define PROPID_M_ADMIN_QUEUE_LEN (PROPID_M_BASE + 18)
    153 #define PROPID_M_VERSION (PROPID_M_BASE + 19)
    154 #define PROPID_M_SENDERID (PROPID_M_BASE + 20)
    155 #define PROPID_M_SENDERID_LEN (PROPID_M_BASE + 21)
    156 #define PROPID_M_SENDERID_TYPE (PROPID_M_BASE + 22)
    157 #define PROPID_M_PRIV_LEVEL (PROPID_M_BASE + 23)
    158 #define PROPID_M_AUTH_LEVEL (PROPID_M_BASE + 24)
    159 #define PROPID_M_AUTHENTICATED (PROPID_M_BASE + 25)
    160 #define PROPID_M_HASH_ALG (PROPID_M_BASE + 26)
    161 #define PROPID_M_ENCRYPTION_ALG (PROPID_M_BASE + 27)
    162 #define PROPID_M_SENDER_CERT (PROPID_M_BASE + 28)
    163 #define PROPID_M_SENDER_CERT_LEN (PROPID_M_BASE + 29)
    164 #define PROPID_M_SRC_MACHINE_ID (PROPID_M_BASE + 30)
    165 #define PROPID_M_SENTTIME (PROPID_M_BASE + 31)
    166 #define PROPID_M_ARRIVEDTIME (PROPID_M_BASE + 32)
    167 #define PROPID_M_DEST_QUEUE (PROPID_M_BASE + 33)
    168 #define PROPID_M_DEST_QUEUE_LEN (PROPID_M_BASE + 34)
    169 #define PROPID_M_EXTENSION (PROPID_M_BASE + 35)
    170 #define PROPID_M_EXTENSION_LEN (PROPID_M_BASE + 36)
    171 #define PROPID_M_SECURITY_CONTEXT (PROPID_M_BASE + 37)
    172 #define PROPID_M_CONNECTOR_TYPE (PROPID_M_BASE + 38)
    173 #define PROPID_M_XACT_STATUS_QUEUE (PROPID_M_BASE + 39)
    174 #define PROPID_M_XACT_STATUS_QUEUE_LEN (PROPID_M_BASE + 40)
    175 #define PROPID_M_TRACE (PROPID_M_BASE + 41)
    176 #define PROPID_M_BODY_TYPE (PROPID_M_BASE + 42)
    177 #define PROPID_M_DEST_SYMM_KEY (PROPID_M_BASE + 43)
    178 #define PROPID_M_DEST_SYMM_KEY_LEN (PROPID_M_BASE + 44)
    179 #define PROPID_M_SIGNATURE (PROPID_M_BASE + 45)
    180 #define PROPID_M_SIGNATURE_LEN (PROPID_M_BASE + 46)
    181 #define PROPID_M_PROV_TYPE (PROPID_M_BASE + 47)
    182 #define PROPID_M_PROV_NAME (PROPID_M_BASE + 48)
    183 #define PROPID_M_PROV_NAME_LEN (PROPID_M_BASE + 49)
    184 #define PROPID_M_FIRST_IN_XACT (PROPID_M_BASE + 50)
    185 #define PROPID_M_LAST_IN_XACT (PROPID_M_BASE + 51)
    186 #define PROPID_M_XACTID (PROPID_M_BASE + 52)
    187 #define PROPID_M_AUTHENTICATED_EX (PROPID_M_BASE + 53)
    188 #define PROPID_M_RESP_FORMAT_NAME (PROPID_M_BASE + 54)
    189 #define PROPID_M_RESP_FORMAT_NAME_LEN (PROPID_M_BASE + 55)
    190 #define PROPID_M_DEST_FORMAT_NAME (PROPID_M_BASE + 58)
    191 #define PROPID_M_DEST_FORMAT_NAME_LEN (PROPID_M_BASE + 59)
    192 #define PROPID_M_LOOKUPID (PROPID_M_BASE + 60)
    193 #define PROPID_M_SOAP_ENVELOPE (PROPID_M_BASE + 61)
    194 #define PROPID_M_SOAP_ENVELOPE_LEN (PROPID_M_BASE + 62)
    195 #define PROPID_M_COMPOUND_MESSAGE (PROPID_M_BASE + 63)
    196 #define PROPID_M_COMPOUND_MESSAGE_SIZE (PROPID_M_BASE + 64)
    197 #define PROPID_M_SOAP_HEADER (PROPID_M_BASE + 65)
    198 #define PROPID_M_SOAP_BODY (PROPID_M_BASE + 66)
    199 #define PROPID_M_MSGID_SIZE 20
    200 #define PROPID_M_CORRELATIONID_SIZE 20
    201 #define PROPID_M_XACTID_SIZE 20
    202 
    203 #define MQCLASS_CODE(s,r,code) ((USHORT)(((s) << 15) | ((r) << 14) | (code)))
    204 #define MQCLASS_NACK(c) ((c) & 0x8000)
    205 #define MQCLASS_RECEIVE(c) ((c) & 0x4000)
    206 #define MQCLASS_NACK_HTTP(c) (((c) & 0xA000)==0xA000)
    207 
    208 #define MQMSG_CLASS_NORMAL MQCLASS_CODE(0,0,0x00)
    209 #define MQMSG_CLASS_REPORT MQCLASS_CODE(0,0,0x01)
    210 #define MQMSG_CLASS_ACK_REACH_QUEUE MQCLASS_CODE(0,0,0x02)
    211 #define MQMSG_CLASS_ACK_RECEIVE MQCLASS_CODE(0,1,0x00)
    212 #define MQMSG_CLASS_NACK_BAD_DST_Q MQCLASS_CODE(1,0,0x00)
    213 #define MQMSG_CLASS_NACK_PURGED MQCLASS_CODE(1,0,0x01)
    214 #define MQMSG_CLASS_NACK_REACH_QUEUE_TIMEOUT MQCLASS_CODE(1,0,0x02)
    215 #define MQMSG_CLASS_NACK_Q_EXCEED_QUOTA MQCLASS_CODE(1,0,0x03)
    216 #define MQMSG_CLASS_NACK_ACCESS_DENIED MQCLASS_CODE(1,0,0x04)
    217 #define MQMSG_CLASS_NACK_HOP_COUNT_EXCEEDED MQCLASS_CODE(1,0,0x05)
    218 #define MQMSG_CLASS_NACK_BAD_SIGNATURE MQCLASS_CODE(1,0,0x06)
    219 #define MQMSG_CLASS_NACK_BAD_ENCRYPTION MQCLASS_CODE(1,0,0x07)
    220 #define MQMSG_CLASS_NACK_COULD_NOT_ENCRYPT MQCLASS_CODE(1,0,0x08)
    221 #define MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_Q MQCLASS_CODE(1,0,0x09)
    222 #define MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_MSG MQCLASS_CODE(1,0,0x0A)
    223 #define MQMSG_CLASS_NACK_UNSUPPORTED_CRYPTO_PROVIDER MQCLASS_CODE(1,0,0x0B)
    224 #define MQMSG_CLASS_NACK_SOURCE_COMPUTER_GUID_CHANGED MQCLASS_CODE(1,0,0x0C)
    225 #define MQMSG_CLASS_NACK_Q_DELETED MQCLASS_CODE(1,1,0x00)
    226 #define MQMSG_CLASS_NACK_Q_PURGED MQCLASS_CODE(1,1,0x01)
    227 #define MQMSG_CLASS_NACK_RECEIVE_TIMEOUT MQCLASS_CODE(1,1,0x02)
    228 #define MQMSG_CLASS_NACK_RECEIVE_TIMEOUT_AT_SENDER MQCLASS_CODE(1,1,0x03)
    229 
    230 #define MQMSG_ACKNOWLEDGMENT_NONE 0x00
    231 #define MQMSG_ACKNOWLEDGMENT_POS_ARRIVAL 0x01
    232 #define MQMSG_ACKNOWLEDGMENT_POS_RECEIVE 0x02
    233 #define MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL 0x04
    234 #define MQMSG_ACKNOWLEDGMENT_NEG_RECEIVE 0x08
    235 
    236 #define MQMSG_ACKNOWLEDGMENT_NACK_REACH_QUEUE ((UCHAR)(MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL))
    237 #define MQMSG_ACKNOWLEDGMENT_FULL_REACH_QUEUE ((UCHAR)(MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL | MQMSG_ACKNOWLEDGMENT_POS_ARRIVAL))
    238 #define MQMSG_ACKNOWLEDGMENT_NACK_RECEIVE ((UCHAR)(MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL | MQMSG_ACKNOWLEDGMENT_NEG_RECEIVE))
    239 #define MQMSG_ACKNOWLEDGMENT_FULL_RECEIVE ((UCHAR)(MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL | MQMSG_ACKNOWLEDGMENT_NEG_RECEIVE | MQMSG_ACKNOWLEDGMENT_POS_RECEIVE))
    240 
    241 #define MQMSG_DELIVERY_EXPRESS 0
    242 #define MQMSG_DELIVERY_RECOVERABLE 1
    243 
    244 #define MQMSG_JOURNAL_NONE 0
    245 #define MQMSG_DEADLETTER 1
    246 #define MQMSG_JOURNAL 2
    247 
    248 #define MQMSG_TRACE_NONE 0
    249 #define MQMSG_SEND_ROUTE_TO_REPORT_QUEUE 1
    250 
    251 #define MQMSG_SENDERID_TYPE_NONE 0
    252 #define MQMSG_SENDERID_TYPE_SID 1
    253 
    254 #define MQMSG_PRIV_LEVEL_NONE 0
    255 #define MQMSG_PRIV_LEVEL_BODY_BASE 0x01
    256 #define MQMSG_PRIV_LEVEL_BODY_ENHANCED 0x03
    257 
    258 #define MQMSG_AUTH_LEVEL_NONE 0
    259 #define MQMSG_AUTH_LEVEL_ALWAYS 1
    260 
    261 #define MQMSG_AUTH_LEVEL_MSMQ10 2
    262 #define MQMSG_AUTH_LEVEL_MSMQ20 4
    263 
    264 #define MQMSG_AUTH_LEVEL_SIG10 2
    265 #define MQMSG_AUTH_LEVEL_SIG20 4
    266 #define MQMSG_AUTH_LEVEL_SIG30 8
    267 
    268 #define MQMSG_AUTHENTICATION_NOT_REQUESTED 0
    269 #define MQMSG_AUTHENTICATION_REQUESTED 1
    270 
    271 #define MQMSG_AUTHENTICATION_REQUESTED_EX 3
    272 
    273 #define MQMSG_AUTHENTICATED_SIG10 1
    274 #define MQMSG_AUTHENTICATED_SIG20 3
    275 #define MQMSG_AUTHENTICATED_SIG30 5
    276 #define MQMSG_AUTHENTICATED_SIGXML 9
    277 
    278 #define MQMSG_NOT_FIRST_IN_XACT 0
    279 #define MQMSG_FIRST_IN_XACT 1
    280 
    281 #define MQMSG_NOT_LAST_IN_XACT 0
    282 #define MQMSG_LAST_IN_XACT 1
    283 
    284 #define PROPID_Q_BASE 100
    285 #define PROPID_Q_INSTANCE (PROPID_Q_BASE + 1)
    286 #define PROPID_Q_TYPE (PROPID_Q_BASE + 2)
    287 #define PROPID_Q_PATHNAME (PROPID_Q_BASE + 3)
    288 #define PROPID_Q_JOURNAL (PROPID_Q_BASE + 4)
    289 #define PROPID_Q_QUOTA (PROPID_Q_BASE + 5)
    290 #define PROPID_Q_BASEPRIORITY (PROPID_Q_BASE + 6)
    291 #define PROPID_Q_JOURNAL_QUOTA (PROPID_Q_BASE + 7)
    292 #define PROPID_Q_LABEL (PROPID_Q_BASE + 8)
    293 #define PROPID_Q_CREATE_TIME (PROPID_Q_BASE + 9)
    294 #define PROPID_Q_MODIFY_TIME (PROPID_Q_BASE + 10)
    295 #define PROPID_Q_AUTHENTICATE (PROPID_Q_BASE + 11)
    296 #define PROPID_Q_PRIV_LEVEL (PROPID_Q_BASE + 12)
    297 #define PROPID_Q_TRANSACTION (PROPID_Q_BASE + 13)
    298 #define PROPID_Q_PATHNAME_DNS (PROPID_Q_BASE + 24)
    299 #define PROPID_Q_MULTICAST_ADDRESS (PROPID_Q_BASE + 25)
    300 #define PROPID_Q_ADS_PATH (PROPID_Q_BASE + 26)
    301 
    302 #define MQ_JOURNAL_NONE (unsigned char)0
    303 #define MQ_JOURNAL (unsigned char)1
    304 
    305 #define MQ_QTYPE_REPORT {0x55ee8f32,0xcce9,0x11cf,{0xb1,0x8,0x0,0x20,0xaf,0xd6,0x1c,0xe9}}
    306 
    307 #define MQ_QTYPE_TEST {0x55ee8f33,0xcce9,0x11cf,{0xb1,0x8,0x0,0x20,0xaf,0xd6,0x1c,0xe9}}
    308 
    309 #define MQ_TRANSACTIONAL_NONE (unsigned char)0
    310 #define MQ_TRANSACTIONAL (unsigned char)1
    311 
    312 #define MQ_AUTHENTICATE_NONE (unsigned char)0
    313 #define MQ_AUTHENTICATE (unsigned char)1
    314 
    315 #define MQ_PRIV_LEVEL_NONE (unsigned __LONG32)0
    316 #define MQ_PRIV_LEVEL_OPTIONAL (unsigned __LONG32)1
    317 #define MQ_PRIV_LEVEL_BODY (unsigned __LONG32)2
    318 
    319 #define PROPID_QM_BASE 200
    320 
    321 #define PROPID_QM_SITE_ID (PROPID_QM_BASE + 1)
    322 #define PROPID_QM_MACHINE_ID (PROPID_QM_BASE + 2)
    323 #define PROPID_QM_PATHNAME (PROPID_QM_BASE + 3)
    324 #define PROPID_QM_CONNECTION (PROPID_QM_BASE + 4)
    325 #define PROPID_QM_ENCRYPTION_PK (PROPID_QM_BASE + 5)
    326 #define PROPID_QM_ENCRYPTION_PK_BASE (PROPID_QM_BASE + 31)
    327 #define PROPID_QM_ENCRYPTION_PK_ENHANCED (PROPID_QM_BASE + 32)
    328 #define PROPID_QM_PATHNAME_DNS (PROPID_QM_BASE + 33)
    329 
    330 #define PROPID_PC_BASE 5800
    331 
    332 #define PROPID_PC_VERSION (PROPID_PC_BASE + 1)
    333 #define PROPID_PC_DS_ENABLED (PROPID_PC_BASE + 2)
    334 
    335 #define PROPID_MGMT_MSMQ_BASE 0
    336 #define PROPID_MGMT_MSMQ_ACTIVEQUEUES (PROPID_MGMT_MSMQ_BASE + 1)
    337 #define PROPID_MGMT_MSMQ_PRIVATEQ (PROPID_MGMT_MSMQ_BASE + 2)
    338 #define PROPID_MGMT_MSMQ_DSSERVER (PROPID_MGMT_MSMQ_BASE + 3)
    339 #define PROPID_MGMT_MSMQ_CONNECTED (PROPID_MGMT_MSMQ_BASE + 4)
    340 #define PROPID_MGMT_MSMQ_TYPE (PROPID_MGMT_MSMQ_BASE + 5)
    341 #define PROPID_MGMT_MSMQ_BYTES_IN_ALL_QUEUES (PROPID_MGMT_QUEUE_BASE + 6)
    342 
    343 #define MSMQ_CONNECTED L"CONNECTED"
    344 #define MSMQ_DISCONNECTED L"DISCONNECTED"
    345 
    346 #define PROPID_MGMT_QUEUE_BASE 0
    347 #define PROPID_MGMT_QUEUE_PATHNAME (PROPID_MGMT_QUEUE_BASE + 1)
    348 #define PROPID_MGMT_QUEUE_FORMATNAME (PROPID_MGMT_QUEUE_BASE + 2)
    349 #define PROPID_MGMT_QUEUE_TYPE (PROPID_MGMT_QUEUE_BASE + 3)
    350 #define PROPID_MGMT_QUEUE_LOCATION (PROPID_MGMT_QUEUE_BASE + 4)
    351 #define PROPID_MGMT_QUEUE_XACT (PROPID_MGMT_QUEUE_BASE + 5)
    352 #define PROPID_MGMT_QUEUE_FOREIGN (PROPID_MGMT_QUEUE_BASE + 6)
    353 #define PROPID_MGMT_QUEUE_MESSAGE_COUNT (PROPID_MGMT_QUEUE_BASE + 7)
    354 #define PROPID_MGMT_QUEUE_BYTES_IN_QUEUE (PROPID_MGMT_QUEUE_BASE + 8)
    355 #define PROPID_MGMT_QUEUE_JOURNAL_MESSAGE_COUNT (PROPID_MGMT_QUEUE_BASE + 9)
    356 #define PROPID_MGMT_QUEUE_BYTES_IN_JOURNAL (PROPID_MGMT_QUEUE_BASE + 10)
    357 #define PROPID_MGMT_QUEUE_STATE (PROPID_MGMT_QUEUE_BASE + 11)
    358 #define PROPID_MGMT_QUEUE_NEXTHOPS (PROPID_MGMT_QUEUE_BASE + 12)
    359 #define PROPID_MGMT_QUEUE_EOD_LAST_ACK (PROPID_MGMT_QUEUE_BASE + 13)
    360 #define PROPID_MGMT_QUEUE_EOD_LAST_ACK_TIME (PROPID_MGMT_QUEUE_BASE + 14)
    361 #define PROPID_MGMT_QUEUE_EOD_LAST_ACK_COUNT (PROPID_MGMT_QUEUE_BASE + 15)
    362 #define PROPID_MGMT_QUEUE_EOD_FIRST_NON_ACK (PROPID_MGMT_QUEUE_BASE + 16)
    363 #define PROPID_MGMT_QUEUE_EOD_LAST_NON_ACK (PROPID_MGMT_QUEUE_BASE + 17)
    364 #define PROPID_MGMT_QUEUE_EOD_NEXT_SEQ (PROPID_MGMT_QUEUE_BASE + 18)
    365 #define PROPID_MGMT_QUEUE_EOD_NO_READ_COUNT (PROPID_MGMT_QUEUE_BASE + 19)
    366 #define PROPID_MGMT_QUEUE_EOD_NO_ACK_COUNT (PROPID_MGMT_QUEUE_BASE + 20)
    367 #define PROPID_MGMT_QUEUE_EOD_RESEND_TIME (PROPID_MGMT_QUEUE_BASE + 21)
    368 #define PROPID_MGMT_QUEUE_EOD_RESEND_INTERVAL (PROPID_MGMT_QUEUE_BASE + 22)
    369 #define PROPID_MGMT_QUEUE_EOD_RESEND_COUNT (PROPID_MGMT_QUEUE_BASE + 23)
    370 #define PROPID_MGMT_QUEUE_EOD_SOURCE_INFO (PROPID_MGMT_QUEUE_BASE + 24)
    371 
    372 #define PROPID_MGMT_QUEUE_USED_QUOTA PROPID_MGMT_QUEUE_BYTES_IN_QUEUE
    373 #define PROPID_MGMT_QUEUE_JOURNAL_USED_QUOTA PROPID_MGMT_QUEUE_BYTES_IN_JOURNAL
    374 
    375 #define MGMT_QUEUE_TYPE_PUBLIC L"PUBLIC"
    376 #define MGMT_QUEUE_TYPE_PRIVATE L"PRIVATE"
    377 #define MGMT_QUEUE_TYPE_MACHINE L"MACHINE"
    378 #define MGMT_QUEUE_TYPE_CONNECTOR L"CONNECTOR"
    379 #define MGMT_QUEUE_TYPE_MULTICAST L"MULTICAST"
    380 
    381 #define MGMT_QUEUE_STATE_LOCAL L"LOCAL CONNECTION"
    382 #define MGMT_QUEUE_STATE_NONACTIVE L"INACTIVE"
    383 #define MGMT_QUEUE_STATE_WAITING L"WAITING"
    384 #define MGMT_QUEUE_STATE_NEED_VALIDATE L"NEED VALIDATION"
    385 #define MGMT_QUEUE_STATE_ONHOLD L"ONHOLD"
    386 #define MGMT_QUEUE_STATE_CONNECTED L"CONNECTED"
    387 #define MGMT_QUEUE_STATE_DISCONNECTING L"DISCONNECTING"
    388 #define MGMT_QUEUE_STATE_DISCONNECTED L"DISCONNECTED"
    389 #define MGMT_QUEUE_STATE_LOCKED L"LOCKED"
    390 
    391 #define MGMT_QUEUE_LOCAL_LOCATION L"LOCAL"
    392 #define MGMT_QUEUE_REMOTE_LOCATION L"REMOTE"
    393 
    394 #define MGMT_QUEUE_UNKNOWN_TYPE L"UNKNOWN"
    395 
    396 #define MGMT_QUEUE_CORRECT_TYPE L"YES"
    397 #define MGMT_QUEUE_INCORRECT_TYPE L"NO"
    398 
    399 #define MGMT_QUEUE_TRANSACTIONAL_TYPE L"YES"
    400 #define MGMT_QUEUE_NOT_TRANSACTIONAL_TYPE L"NO"
    401 
    402 #define MGMT_QUEUE_FOREIGN_TYPE L"YES"
    403 #define MGMT_QUEUE_NOT_FOREIGN_TYPE L"NO"
    404 
    405 #define MO_MACHINE_TOKEN L"MACHINE"
    406 #define MO_QUEUE_TOKEN L"QUEUE"
    407 
    408 #define MACHINE_ACTION_CONNECT L"CONNECT"
    409 #define MACHINE_ACTION_DISCONNECT L"DISCONNECT"
    410 #define MACHINE_ACTION_TIDY L"TIDY"
    411 
    412 #define QUEUE_ACTION_PAUSE L"PAUSE"
    413 #define QUEUE_ACTION_RESUME L"RESUME"
    414 #define QUEUE_ACTION_EOD_RESEND L"EOD_RESEND"
    415 
    416 #define LONG_LIVED 0xfffffffe
    417 
    418 #define MQ_MAX_Q_NAME_LEN 124
    419 #define MQ_MAX_Q_LABEL_LEN 124
    420 #define MQ_MAX_MSG_LABEL_LEN 250
    421 
    422 #define MQ_OK ((HRESULT)0)
    423 
    424 #define MQ_INFORMATION_PROPERTY ((HRESULT)0x400E0001)
    425 #define MQ_INFORMATION_ILLEGAL_PROPERTY ((HRESULT)0x400E0002)
    426 #define MQ_INFORMATION_PROPERTY_IGNORED ((HRESULT)0x400E0003)
    427 #define MQ_INFORMATION_UNSUPPORTED_PROPERTY ((HRESULT)0x400E0004)
    428 #define MQ_INFORMATION_DUPLICATE_PROPERTY ((HRESULT)0x400E0005)
    429 #define MQ_INFORMATION_OPERATION_PENDING ((HRESULT)0x400E0006)
    430 #define MQ_INFORMATION_FORMATNAME_BUFFER_TOO_SMALL ((HRESULT)0x400E0009)
    431 #define MQ_INFORMATION_INTERNAL_USER_CERT_EXIST ((HRESULT)0x400E000A)
    432 #define MQ_INFORMATION_OWNER_IGNORED ((HRESULT)0x400E000B)
    433 
    434 #define MQ_ERROR ((HRESULT)0xC00E0001)
    435 #define MQ_ERROR_PROPERTY ((HRESULT)0xC00E0002)
    436 #define MQ_ERROR_QUEUE_NOT_FOUND ((HRESULT)0xC00E0003)
    437 #define MQ_ERROR_QUEUE_NOT_ACTIVE ((HRESULT)0xC00E0004)
    438 #define MQ_ERROR_QUEUE_EXISTS ((HRESULT)0xC00E0005)
    439 #define MQ_ERROR_INVALID_PARAMETER ((HRESULT)0xC00E0006)
    440 #define MQ_ERROR_INVALID_HANDLE ((HRESULT)0xC00E0007)
    441 #define MQ_ERROR_OPERATION_CANCELLED ((HRESULT)0xC00E0008)
    442 #define MQ_ERROR_SHARING_VIOLATION ((HRESULT)0xC00E0009)
    443 #define MQ_ERROR_SERVICE_NOT_AVAILABLE ((HRESULT)0xC00E000B)
    444 #define MQ_ERROR_MACHINE_NOT_FOUND ((HRESULT)0xC00E000D)
    445 #define MQ_ERROR_ILLEGAL_SORT ((HRESULT)0xC00E0010)
    446 #define MQ_ERROR_ILLEGAL_USER ((HRESULT)0xC00E0011)
    447 #define MQ_ERROR_NO_DS ((HRESULT)0xC00E0013)
    448 #define MQ_ERROR_ILLEGAL_QUEUE_PATHNAME ((HRESULT)0xC00E0014)
    449 #define MQ_ERROR_ILLEGAL_PROPERTY_VALUE ((HRESULT)0xC00E0018)
    450 #define MQ_ERROR_ILLEGAL_PROPERTY_VT ((HRESULT)0xC00E0019)
    451 #define MQ_ERROR_BUFFER_OVERFLOW ((HRESULT)0xC00E001A)
    452 #define MQ_ERROR_IO_TIMEOUT ((HRESULT)0xC00E001B)
    453 #define MQ_ERROR_ILLEGAL_CURSOR_ACTION ((HRESULT)0xC00E001C)
    454 #define MQ_ERROR_MESSAGE_ALREADY_RECEIVED ((HRESULT)0xC00E001D)
    455 #define MQ_ERROR_ILLEGAL_FORMATNAME ((HRESULT)0xC00E001E)
    456 #define MQ_ERROR_FORMATNAME_BUFFER_TOO_SMALL ((HRESULT)0xC00E001F)
    457 #define MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION ((HRESULT)0xC00E0020)
    458 #define MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR ((HRESULT)0xC00E0021)
    459 #define MQ_ERROR_SENDERID_BUFFER_TOO_SMALL ((HRESULT)0xC00E0022)
    460 #define MQ_ERROR_SECURITY_DESCRIPTOR_TOO_SMALL ((HRESULT)0xC00E0023)
    461 #define MQ_ERROR_CANNOT_IMPERSONATE_CLIENT ((HRESULT)0xC00E0024)
    462 #define MQ_ERROR_ACCESS_DENIED ((HRESULT)0xC00E0025)
    463 #define MQ_ERROR_PRIVILEGE_NOT_HELD ((HRESULT)0xC00E0026)
    464 #define MQ_ERROR_INSUFFICIENT_RESOURCES ((HRESULT)0xC00E0027)
    465 #define MQ_ERROR_USER_BUFFER_TOO_SMALL ((HRESULT)0xC00E0028)
    466 #define MQ_ERROR_MESSAGE_STORAGE_FAILED ((HRESULT)0xC00E002A)
    467 #define MQ_ERROR_SENDER_CERT_BUFFER_TOO_SMALL ((HRESULT)0xC00E002B)
    468 #define MQ_ERROR_INVALID_CERTIFICATE ((HRESULT)0xC00E002C)
    469 #define MQ_ERROR_CORRUPTED_INTERNAL_CERTIFICATE ((HRESULT)0xC00E002D)
    470 #define MQ_ERROR_INTERNAL_USER_CERT_EXIST ((HRESULT)0xC00E002E)
    471 #define MQ_ERROR_NO_INTERNAL_USER_CERT ((HRESULT)0xC00E002F)
    472 #define MQ_ERROR_CORRUPTED_SECURITY_DATA ((HRESULT)0xC00E0030)
    473 #define MQ_ERROR_CORRUPTED_PERSONAL_CERT_STORE ((HRESULT)0xC00E0031)
    474 #define MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION ((HRESULT)0xC00E0033)
    475 #define MQ_ERROR_BAD_SECURITY_CONTEXT ((HRESULT)0xC00E0035)
    476 #define MQ_ERROR_COULD_NOT_GET_USER_SID ((HRESULT)0xC00E0036)
    477 #define MQ_ERROR_COULD_NOT_GET_ACCOUNT_INFO ((HRESULT)0xC00E0037)
    478 #define MQ_ERROR_ILLEGAL_MQCOLUMNS ((HRESULT)0xC00E0038)
    479 #define MQ_ERROR_ILLEGAL_PROPID ((HRESULT)0xC00E0039)
    480 #define MQ_ERROR_ILLEGAL_RELATION ((HRESULT)0xC00E003A)
    481 #define MQ_ERROR_ILLEGAL_PROPERTY_SIZE ((HRESULT)0xC00E003B)
    482 #define MQ_ERROR_ILLEGAL_RESTRICTION_PROPID ((HRESULT)0xC00E003C)
    483 #define MQ_ERROR_ILLEGAL_MQQUEUEPROPS ((HRESULT)0xC00E003D)
    484 #define MQ_ERROR_PROPERTY_NOTALLOWED ((HRESULT)0xC00E003E)
    485 #define MQ_ERROR_INSUFFICIENT_PROPERTIES ((HRESULT)0xC00E003F)
    486 #define MQ_ERROR_MACHINE_EXISTS ((HRESULT)0xC00E0040)
    487 #define MQ_ERROR_ILLEGAL_MQQMPROPS ((HRESULT)0xC00E0041)
    488 #define MQ_ERROR_DS_IS_FULL ((HRESULT)0xC00E0042)
    489 #define MQ_ERROR_DS_ERROR ((HRESULT)0xC00E0043)
    490 #define MQ_ERROR_INVALID_OWNER ((HRESULT)0xC00E0044)
    491 #define MQ_ERROR_UNSUPPORTED_ACCESS_MODE ((HRESULT)0xC00E0045)
    492 #define MQ_ERROR_RESULT_BUFFER_TOO_SMALL ((HRESULT)0xC00E0046)
    493 #define MQ_ERROR_DELETE_CN_IN_USE ((HRESULT)0xC00E0048)
    494 #define MQ_ERROR_NO_RESPONSE_FROM_OBJECT_SERVER ((HRESULT)0xC00E0049)
    495 #define MQ_ERROR_OBJECT_SERVER_NOT_AVAILABLE ((HRESULT)0xC00E004A)
    496 #define MQ_ERROR_QUEUE_NOT_AVAILABLE ((HRESULT)0xC00E004B)
    497 #define MQ_ERROR_DTC_CONNECT ((HRESULT)0xC00E004C)
    498 #define MQ_ERROR_TRANSACTION_IMPORT ((HRESULT)0xC00E004E)
    499 #define MQ_ERROR_TRANSACTION_USAGE ((HRESULT)0xC00E0050)
    500 #define MQ_ERROR_TRANSACTION_SEQUENCE ((HRESULT)0xC00E0051)
    501 #define MQ_ERROR_MISSING_CONNECTOR_TYPE ((HRESULT)0xC00E0055)
    502 #define MQ_ERROR_STALE_HANDLE ((HRESULT)0xC00E0056)
    503 #define MQ_ERROR_TRANSACTION_ENLIST ((HRESULT)0xC00E0058)
    504 #define MQ_ERROR_QUEUE_DELETED ((HRESULT)0xC00E005A)
    505 #define MQ_ERROR_ILLEGAL_CONTEXT ((HRESULT)0xC00E005B)
    506 #define MQ_ERROR_ILLEGAL_SORT_PROPID ((HRESULT)0xC00E005C)
    507 #define MQ_ERROR_LABEL_TOO_LONG ((HRESULT)0xC00E005D)
    508 #define MQ_ERROR_LABEL_BUFFER_TOO_SMALL ((HRESULT)0xC00E005E)
    509 #define MQ_ERROR_MQIS_SERVER_EMPTY ((HRESULT)0xC00E005F)
    510 #define MQ_ERROR_MQIS_READONLY_MODE ((HRESULT)0xC00E0060)
    511 #define MQ_ERROR_SYMM_KEY_BUFFER_TOO_SMALL ((HRESULT)0xC00E0061)
    512 #define MQ_ERROR_SIGNATURE_BUFFER_TOO_SMALL ((HRESULT)0xC00E0062)
    513 #define MQ_ERROR_PROV_NAME_BUFFER_TOO_SMALL ((HRESULT)0xC00E0063)
    514 #define MQ_ERROR_ILLEGAL_OPERATION ((HRESULT)0xC00E0064)
    515 #define MQ_ERROR_WRITE_NOT_ALLOWED ((HRESULT)0xC00E0065)
    516 #define MQ_ERROR_WKS_CANT_SERVE_CLIENT ((HRESULT)0xC00E0066)
    517 #define MQ_ERROR_DEPEND_WKS_LICENSE_OVERFLOW ((HRESULT)0xC00E0067)
    518 #define MQ_CORRUPTED_QUEUE_WAS_DELETED ((HRESULT)0xC00E0068)
    519 #define MQ_ERROR_REMOTE_MACHINE_NOT_AVAILABLE ((HRESULT)0xC00E0069)
    520 #define MQ_ERROR_UNSUPPORTED_OPERATION ((HRESULT)0xC00E006A)
    521 #define MQ_ERROR_ENCRYPTION_PROVIDER_NOT_SUPPORTED ((HRESULT)0xC00E006B)
    522 #define MQ_ERROR_CANNOT_SET_CRYPTO_SEC_DESCR ((HRESULT)0xC00E006C)
    523 #define MQ_ERROR_CERTIFICATE_NOT_PROVIDED ((HRESULT)0xC00E006D)
    524 #define MQ_ERROR_Q_DNS_PROPERTY_NOT_SUPPORTED ((HRESULT)0xC00E006E)
    525 #define MQ_ERROR_CANNOT_CREATE_CERT_STORE ((HRESULT)0xC00E006F)
    526 #define MQ_ERROR_CANNOT_OPEN_CERT_STORE ((HRESULT)0xC00E0070)
    527 #define MQ_ERROR_ILLEGAL_ENTERPRISE_OPERATION ((HRESULT)0xC00E0071)
    528 #define MQ_ERROR_CANNOT_GRANT_ADD_GUID ((HRESULT)0xC00E0072)
    529 #define MQ_ERROR_CANNOT_LOAD_MSMQOCM ((HRESULT)0xC00E0073)
    530 #define MQ_ERROR_NO_ENTRY_POINT_MSMQOCM ((HRESULT)0xC00E0074)
    531 #define MQ_ERROR_NO_MSMQ_SERVERS_ON_DC ((HRESULT)0xC00E0075)
    532 #define MQ_ERROR_CANNOT_JOIN_DOMAIN ((HRESULT)0xC00E0076)
    533 #define MQ_ERROR_CANNOT_CREATE_ON_GC ((HRESULT)0xC00E0077)
    534 #define MQ_ERROR_GUID_NOT_MATCHING ((HRESULT)0xC00E0078)
    535 #define MQ_ERROR_PUBLIC_KEY_NOT_FOUND ((HRESULT)0xC00E0079)
    536 #define MQ_ERROR_PUBLIC_KEY_DOES_NOT_EXIST ((HRESULT)0xC00E007A)
    537 #define MQ_ERROR_ILLEGAL_MQPRIVATEPROPS ((HRESULT)0xC00E007B)
    538 #define MQ_ERROR_NO_GC_IN_DOMAIN ((HRESULT)0xC00E007C)
    539 #define MQ_ERROR_NO_MSMQ_SERVERS_ON_GC ((HRESULT)0xC00E007D)
    540 #define MQ_ERROR_CANNOT_GET_DN ((HRESULT)0xC00E007E)
    541 #define MQ_ERROR_CANNOT_HASH_DATA_EX ((HRESULT)0xC00E007F)
    542 #define MQ_ERROR_CANNOT_SIGN_DATA_EX ((HRESULT)0xC00E0080)
    543 #define MQ_ERROR_CANNOT_CREATE_HASH_EX ((HRESULT)0xC00E0081)
    544 #define MQ_ERROR_FAIL_VERIFY_SIGNATURE_EX ((HRESULT)0xC00E0082)
    545 #define MQ_ERROR_CANNOT_DELETE_PSC_OBJECTS ((HRESULT)0xC00E0083)
    546 #define MQ_ERROR_NO_MQUSER_OU ((HRESULT)0xC00E0084)
    547 #define MQ_ERROR_CANNOT_LOAD_MQAD ((HRESULT)0xC00E0085)
    548 #define MQ_ERROR_CANNOT_LOAD_MQDSSRV ((HRESULT)0xC00E0086)
    549 #define MQ_ERROR_PROPERTIES_CONFLICT ((HRESULT)0xC00E0087)
    550 #define MQ_ERROR_MESSAGE_NOT_FOUND ((HRESULT)0xC00E0088)
    551 #define MQ_ERROR_CANT_RESOLVE_SITES ((HRESULT)0xC00E0089)
    552 #define MQ_ERROR_NOT_SUPPORTED_BY_DEPENDENT_CLIENTS ((HRESULT)0xC00E008A)
    553 #define MQ_ERROR_OPERATION_NOT_SUPPORTED_BY_REMOTE_COMPUTER ((HRESULT)0xC00E008B)
    554 #define MQ_ERROR_NOT_A_CORRECT_OBJECT_CLASS ((HRESULT)0xC00E008C)
    555 #define MQ_ERROR_MULTI_SORT_KEYS ((HRESULT)0xC00E008D)
    556 #define MQ_ERROR_GC_NEEDED ((HRESULT)0xC00E008E)
    557 #define MQ_ERROR_DS_BIND_ROOT_FOREST ((HRESULT)0xC00E008F)
    558 #define MQ_ERROR_DS_LOCAL_USER ((HRESULT)0xC00E0090)
    559 #define MQ_ERROR_Q_ADS_PROPERTY_NOT_SUPPORTED ((HRESULT)0xC00E0091)
    560 #define MQ_ERROR_BAD_XML_FORMAT ((HRESULT)0xC00E0092)
    561 #define MQ_ERROR_UNSUPPORTED_CLASS ((HRESULT)0xC00E0093)
    562 #define MQ_ERROR_UNINITIALIZED_OBJECT ((HRESULT)0xC00E0094)
    563 #define MQ_ERROR_CANNOT_CREATE_PSC_OBJECTS ((HRESULT)0xC00E0095)
    564 #define MQ_ERROR_CANNOT_UPDATE_PSC_OBJECTS ((HRESULT)0xC00E0096)
    565 
    566 #define MQCERT_REGISTER_ALWAYS 0x01
    567 #define MQCERT_REGISTER_IF_NOT_EXIST 0x02
    568 
    569 #define MQSEC_DELETE_MESSAGE 0x1
    570 #define MQSEC_PEEK_MESSAGE 0x2
    571 #define MQSEC_WRITE_MESSAGE 0x4
    572 #define MQSEC_DELETE_JOURNAL_MESSAGE 0x8
    573 #define MQSEC_SET_QUEUE_PROPERTIES 0x10
    574 #define MQSEC_GET_QUEUE_PROPERTIES 0x20
    575 #define MQSEC_DELETE_QUEUE DELETE
    576 #define MQSEC_GET_QUEUE_PERMISSIONS READ_CONTROL
    577 #define MQSEC_CHANGE_QUEUE_PERMISSIONS WRITE_DAC
    578 #define MQSEC_TAKE_QUEUE_OWNERSHIP WRITE_OWNER
    579 
    580 #define MQSEC_RECEIVE_MESSAGE (MQSEC_DELETE_MESSAGE | MQSEC_PEEK_MESSAGE)
    581 #define MQSEC_RECEIVE_JOURNAL_MESSAGE (MQSEC_DELETE_JOURNAL_MESSAGE | MQSEC_PEEK_MESSAGE)
    582 #define MQSEC_QUEUE_GENERIC_READ (MQSEC_GET_QUEUE_PROPERTIES | MQSEC_GET_QUEUE_PERMISSIONS | MQSEC_RECEIVE_MESSAGE | MQSEC_RECEIVE_JOURNAL_MESSAGE)
    583 #define MQSEC_QUEUE_GENERIC_WRITE (MQSEC_GET_QUEUE_PROPERTIES | MQSEC_GET_QUEUE_PERMISSIONS | MQSEC_WRITE_MESSAGE)
    584 #define MQSEC_QUEUE_GENERIC_EXECUTE 0
    585 #define MQSEC_QUEUE_GENERIC_ALL (MQSEC_RECEIVE_MESSAGE | MQSEC_RECEIVE_JOURNAL_MESSAGE | MQSEC_WRITE_MESSAGE | MQSEC_SET_QUEUE_PROPERTIES | MQSEC_GET_QUEUE_PROPERTIES | MQSEC_DELETE_QUEUE | MQSEC_GET_QUEUE_PERMISSIONS | MQSEC_CHANGE_QUEUE_PERMISSIONS | MQSEC_TAKE_QUEUE_OWNERSHIP)
    586 
    587 #ifdef __cplusplus
    588 extern "C" {
    589 #endif
    590 
    591   typedef VOID (WINAPI *PMQRECEIVECALLBACK)(HRESULT hrStatus,QUEUEHANDLE hSource,DWORD dwTimeout,DWORD dwAction,MQMSGPROPS *pMessageProps,LPOVERLAPPED lpOverlapped,HANDLE hCursor);
    592 
    593   HRESULT WINAPI MQCreateQueue(PSECURITY_DESCRIPTOR pSecurityDescriptor,MQQUEUEPROPS *pQueueProps,LPWSTR lpwcsFormatName,LPDWORD lpdwFormatNameLength);
    594   HRESULT WINAPI MQDeleteQueue(LPCWSTR lpwcsFormatName);
    595   HRESULT WINAPI MQLocateBegin(LPCWSTR lpwcsContext,MQRESTRICTION *pRestriction,MQCOLUMNSET *pColumns,MQSORTSET *pSort,PHANDLE phEnum);
    596   HRESULT WINAPI MQLocateNext(HANDLE hEnum,DWORD *pcProps,MQPROPVARIANT aPropVar[]);
    597   HRESULT WINAPI MQLocateEnd(HANDLE hEnum);
    598   HRESULT WINAPI MQOpenQueue(LPCWSTR lpwcsFormatName,DWORD dwAccess,DWORD dwShareMode,QUEUEHANDLE *phQueue);
    599   HRESULT WINAPI MQSendMessage(QUEUEHANDLE hDestinationQueue,MQMSGPROPS *pMessageProps,ITransaction *pTransaction);
    600   HRESULT WINAPI MQReceiveMessage(QUEUEHANDLE hSource,DWORD dwTimeout,DWORD dwAction,MQMSGPROPS *pMessageProps,LPOVERLAPPED lpOverlapped,PMQRECEIVECALLBACK fnReceiveCallback,HANDLE hCursor,ITransaction *pTransaction);
    601   HRESULT WINAPI MQReceiveMessageByLookupId(QUEUEHANDLE hSource,ULONGLONG ullLookupId,DWORD dwLookupAction,MQMSGPROPS *pMessageProps,LPOVERLAPPED lpOverlapped,PMQRECEIVECALLBACK fnReceiveCallback,ITransaction *pTransaction);
    602   HRESULT WINAPI MQCreateCursor(QUEUEHANDLE hQueue,PHANDLE phCursor);
    603   HRESULT WINAPI MQCloseCursor(HANDLE hCursor);
    604   HRESULT WINAPI MQCloseQueue(QUEUEHANDLE hQueue);
    605   HRESULT WINAPI MQSetQueueProperties(LPCWSTR lpwcsFormatName,MQQUEUEPROPS *pQueueProps);
    606   HRESULT WINAPI MQGetQueueProperties(LPCWSTR lpwcsFormatName,MQQUEUEPROPS *pQueueProps);
    607   HRESULT WINAPI MQGetQueueSecurity(LPCWSTR lpwcsFormatName,SECURITY_INFORMATION RequestedInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor,DWORD nLength,LPDWORD lpnLengthNeeded);
    608   HRESULT WINAPI MQSetQueueSecurity(LPCWSTR lpwcsFormatName,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor);
    609   HRESULT WINAPI MQPathNameToFormatName(LPCWSTR lpwcsPathName,LPWSTR lpwcsFormatName,LPDWORD lpdwFormatNameLength);
    610   HRESULT WINAPI MQHandleToFormatName(QUEUEHANDLE hQueue,LPWSTR lpwcsFormatName,LPDWORD lpdwFormatNameLength);
    611   HRESULT WINAPI MQInstanceToFormatName(GUID *pGuid,LPWSTR lpwcsFormatName,LPDWORD lpdwFormatNameLength);
    612   HRESULT WINAPI MQADsPathToFormatName(LPCWSTR lpwcsADsPath,LPWSTR lpwcsFormatName,LPDWORD lpdwFormatNameLength);
    613   VOID WINAPI MQFreeMemory(PVOID pvMemory);
    614   HRESULT WINAPI MQGetMachineProperties(LPCWSTR lpwcsMachineName,const GUID *pguidMachineId,MQQMPROPS *pQMProps);
    615   HRESULT WINAPI MQGetSecurityContext(PVOID lpCertBuffer,DWORD dwCertBufferLength,HANDLE *phSecurityContext);
    616   HRESULT WINAPI MQGetSecurityContextEx(PVOID lpCertBuffer,DWORD dwCertBufferLength,HANDLE *phSecurityContext);
    617   VOID WINAPI MQFreeSecurityContext(HANDLE hSecurityContext);
    618   HRESULT WINAPI MQRegisterCertificate(DWORD dwFlags,PVOID lpCertBuffer,DWORD dwCertBufferLength);
    619   HRESULT WINAPI MQBeginTransaction(ITransaction **ppTransaction);
    620   HRESULT WINAPI MQGetOverlappedResult(LPOVERLAPPED lpOverlapped);
    621   HRESULT WINAPI MQGetPrivateComputerInformation(LPCWSTR lpwcsComputerName,MQPRIVATEPROPS *pPrivateProps);
    622   HRESULT WINAPI MQPurgeQueue(QUEUEHANDLE hQueue);
    623   HRESULT WINAPI MQMgmtGetInfo(LPCWSTR pComputerName,LPCWSTR pObjectName,MQMGMTPROPS *pMgmtProps);
    624   HRESULT WINAPI MQMgmtAction(LPCWSTR pComputerName,LPCWSTR pObjectName,LPCWSTR pAction);
    625 
    626 #ifdef __cplusplus
    627 }
    628 #endif
    629 #endif
    630