/*++ Copyright (c) 1996-1999 Microsoft Corporation Module Name: mq.h Abstract: Master include file for Message Queue applications --*/ #ifndef __MQ_H__ #pragma option push -b -a8 -pc -A- /*P_O_Push*/ #define __MQ_H__ #if _MSC_VER > 1000 #pragma once #endif // // Clients that need transactions should include transact.h before mq.h // For the clients not needing transactions - ITransaction is opaque // #ifndef __transact_h__ typedef void ITransaction; #endif // // Support version older than VC4.2 // #if defined(_MSC_VER) && (_MSC_VER < 1020) typedef struct tagMQPROPVARIANT MQPROPVARIANT; #define TYPEDEF_CA(type, name) \ typedef struct tag##name {\ ULONG cElems;\ type * pElems;\ } name #ifndef _tagCAUB_DEFINED #define _tagCAUB_DEFINED TYPEDEF_CA(unsigned char, CAUB); #endif #ifndef _tagCAI_DEFINED #define _tagCAI_DEFINED TYPEDEF_CA(short, CAI); #endif #ifndef _tagCAUI_DEFINED #define _tagCAUI_DEFINED TYPEDEF_CA(USHORT, CAUI); #endif #ifndef _tagCAL_DEFINED #define _tagCAL_DEFINED TYPEDEF_CA(long, CAL); #endif #ifndef _tagCAUL_DEFINED #define _tagCAUL_DEFINED TYPEDEF_CA(ULONG, CAUL); #endif #ifndef _tagCACLSID_DEFINED #define _tagCACLSID_DEFINED TYPEDEF_CA(CLSID, CACLSID); #endif #ifndef _tagCABSTR_DEFINED #define _tagCABSTR_DEFINED TYPEDEF_CA(LPOLESTR, CABSTR); #endif #ifndef _tagCALPWSTR_DEFINED #define _tagCALPWSTR_DEFINED TYPEDEF_CA(LPWSTR, CALPWSTR); #endif #ifndef _tagCAMQPROPVARIANT_DEFINED #define _tagCAMQPROPVARIANT_DEFINED TYPEDEF_CA(MQPROPVARIANT, CAMQPROPVARIANT); #endif struct tagMQPROPVARIANT { VARTYPE vt; WORD wReserved1; WORD wReserved2; WORD wReserved3; /*[switch_is((unsigned short)vt)]*/ union { /*[case(VT_EMPTY, VT_NULL)];*/ /*[case(VT_UI1)]*/ UCHAR bVal; /*[case(VT_I2)]*/ short iVal; /*[case(VT_UI2)]*/ USHORT uiVal; /*[case(VT_BOOL)]*/ VARIANT_BOOL boolVal; /*[case(VT_I4)]*/ long lVal; /*[case(VT_UI4)]*/ ULONG ulVal; /*[case(VT_HRESULT)]*/ SCODE scode; /*[case(VT_DATE)]*/ DATE date; /*[case(VT_CLSID)]*/ CLSID *puuid; /*[case(VT_BLOB)]*/ BLOB blob; /*[case(VT_BSTR)]*/ LPOLESTR bstrVal; /*[case(VT_LPSTR)]*/ LPSTR pszVal; /*[case(VT_LPWSTR)]*/ LPWSTR pwszVal; /*[case(VT_VECTOR | VT_UI1)]*/ CAUB caub; /*[case(VT_VECTOR | VT_I2)]*/ CAI cai; /*[case(VT_VECTOR | VT_UI2)]*/ CAUI caui; /*[case(VT_VECTOR | VT_I4)]*/ CAL cal; /*[case(VT_VECTOR | VT_UI4)]*/ CAUL caul; /*[case(VT_VECTOR | VT_CLSID)]*/ CACLSID cauuid; /*[case(VT_VECTOR | VT_BSTR)]*/ CABSTR cabstr; /*[case(VT_VECTOR | VT_LPWSTR)]*/CALPWSTR calpwstr; /*[case(VT_VARIANT)]*/ CAMQPROPVARIANT capropvar; }; }; #else // defined(_MSC_VER) && (_MSC_VER < 1020) #ifdef __midl // This is the PROPVARIANT definition for marshaling. typedef struct tag_inner_PROPVARIANT tagMQPROPVARIANT; #else // This is the standard C layout of the PROPVARIANT. typedef struct tagPROPVARIANT tagMQPROPVARIANT; #endif typedef tagMQPROPVARIANT MQPROPVARIANT; #endif // defined(_MSC_VER) && (_MSC_VER < 1020) #define PRLT ( 0 ) #define PRLE ( 1 ) #define PRGT ( 2 ) #define PRGE ( 3 ) #define PREQ ( 4 ) #define PRNE ( 5 ) typedef struct tagMQPROPERTYRESTRICTION { ULONG rel; PROPID prop; MQPROPVARIANT prval; } MQPROPERTYRESTRICTION; typedef struct tagMQRESTRICTION { ULONG cRes; /* [size_is] */ MQPROPERTYRESTRICTION __RPC_FAR *paPropRes; } MQRESTRICTION; typedef struct tagMQCOLUMNSET { ULONG cCol; /* [size_is] */ PROPID __RPC_FAR *aCol; } MQCOLUMNSET; #define QUERY_SORTASCEND ( 0 ) #define QUERY_SORTDESCEND ( 1 ) typedef struct tagMQSORTKEY { PROPID propColumn; ULONG dwOrder; } MQSORTKEY; typedef struct tagMQSORTSET { ULONG cCol; /* [size_is] */ MQSORTKEY __RPC_FAR *aCol; } MQSORTSET; #define MQ_MAX_Q_NAME_LEN 124 // Maximal WCHAR length of a queue name. #define MQ_MAX_Q_LABEL_LEN 124 #define MQ_MAX_MSG_LABEL_LEN 250 typedef HANDLE QUEUEHANDLE; typedef PROPID MSGPROPID; typedef PROPID QUEUEPROPID; typedef PROPID QMPROPID; typedef struct tagMQMSGPROPS { DWORD cProp; MSGPROPID* aPropID; MQPROPVARIANT* aPropVar; HRESULT* aStatus; } MQMSGPROPS; typedef struct tagMQQUEUEPROPS { DWORD cProp; QUEUEPROPID* aPropID; MQPROPVARIANT* aPropVar; HRESULT* aStatus; } MQQUEUEPROPS; typedef struct tagMQQMPROPS { DWORD cProp; QMPROPID* aPropID; MQPROPVARIANT* aPropVar; HRESULT* aStatus; } MQQMPROPS; typedef struct tagMQPRIVATEPROPS { DWORD cProp; QMPROPID* aPropID; MQPROPVARIANT* aPropVar; HRESULT* aStatus; } MQPRIVATEPROPS; //******************************************************************** // API FLAGS //******************************************************************** // // MQOpenQueue - Access values // #define MQ_RECEIVE_ACCESS 0x00000001 #define MQ_SEND_ACCESS 0x00000002 #define MQ_PEEK_ACCESS 0x00000020 // // MQOpenQueue - Share values // #define MQ_DENY_NONE 0x00000000 #define MQ_DENY_RECEIVE_SHARE 0x00000001 // // MQReceiveMessage - Action values // #define MQ_ACTION_RECEIVE 0x00000000 #define MQ_ACTION_PEEK_CURRENT 0x80000000 #define MQ_ACTION_PEEK_NEXT 0x80000001 // // MQSendMessage, MQReceiveMessage: special cases for the transaction parameter // #define MQ_NO_TRANSACTION NULL #define MQ_MTS_TRANSACTION (ITransaction *)1 #define MQ_XA_TRANSACTION (ITransaction *)2 #define MQ_SINGLE_MESSAGE (ITransaction *)3 //******************************************************************** // PRIORITY LIMITS //******************************************************************** // // Message priorities // #define MQ_MIN_PRIORITY 0 // Minimal message priority #define MQ_MAX_PRIORITY 7 // Maximal message priority //******************************************************************** // MESSAGE PROPERTIES //******************************************************************** #define PROPID_M_BASE 0 #define PROPID_M_CLASS (PROPID_M_BASE + 1) /* VT_UI2 */ #define PROPID_M_MSGID (PROPID_M_BASE + 2) /* VT_UI1|VT_VECTOR */ #define PROPID_M_CORRELATIONID (PROPID_M_BASE + 3) /* VT_UI1|VT_VECTOR */ #define PROPID_M_PRIORITY (PROPID_M_BASE + 4) /* VT_UI1 */ #define PROPID_M_DELIVERY (PROPID_M_BASE + 5) /* VT_UI1 */ #define PROPID_M_ACKNOWLEDGE (PROPID_M_BASE + 6) /* VT_UI1 */ #define PROPID_M_JOURNAL (PROPID_M_BASE + 7) /* VT_UI1 */ #define PROPID_M_APPSPECIFIC (PROPID_M_BASE + 8) /* VT_UI4 */ #define PROPID_M_BODY (PROPID_M_BASE + 9) /* VT_UI1|VT_VECTOR */ #define PROPID_M_BODY_SIZE (PROPID_M_BASE + 10) /* VT_UI4 */ #define PROPID_M_LABEL (PROPID_M_BASE + 11) /* VT_LPWSTR */ #define PROPID_M_LABEL_LEN (PROPID_M_BASE + 12) /* VT_UI4 */ #define PROPID_M_TIME_TO_REACH_QUEUE (PROPID_M_BASE + 13) /* VT_UI4 */ #define PROPID_M_TIME_TO_BE_RECEIVED (PROPID_M_BASE + 14) /* VT_UI4 */ #define PROPID_M_RESP_QUEUE (PROPID_M_BASE + 15) /* VT_LPWSTR */ #define PROPID_M_RESP_QUEUE_LEN (PROPID_M_BASE + 16) /* VT_UI4 */ #define PROPID_M_ADMIN_QUEUE (PROPID_M_BASE + 17) /* VT_LPWSTR */ #define PROPID_M_ADMIN_QUEUE_LEN (PROPID_M_BASE + 18) /* VT_UI4 */ #define PROPID_M_VERSION (PROPID_M_BASE + 19) /* VT_UI4 */ #define PROPID_M_SENDERID (PROPID_M_BASE + 20) /* VT_UI1|VT_VECTOR */ #define PROPID_M_SENDERID_LEN (PROPID_M_BASE + 21) /* VT_UI4 */ #define PROPID_M_SENDERID_TYPE (PROPID_M_BASE + 22) /* VT_UI4 */ #define PROPID_M_PRIV_LEVEL (PROPID_M_BASE + 23) /* VT_UI4 */ #define PROPID_M_AUTH_LEVEL (PROPID_M_BASE + 24) /* VT_UI4 */ #define PROPID_M_AUTHENTICATED (PROPID_M_BASE + 25) /* VT_UI1 */ #define PROPID_M_HASH_ALG (PROPID_M_BASE + 26) /* VT_UI4 */ #define PROPID_M_ENCRYPTION_ALG (PROPID_M_BASE + 27) /* VT_UI4 */ #define PROPID_M_SENDER_CERT (PROPID_M_BASE + 28) /* VT_UI1|VT_VECTOR */ #define PROPID_M_SENDER_CERT_LEN (PROPID_M_BASE + 29) /* VT_UI4 */ #define PROPID_M_SRC_MACHINE_ID (PROPID_M_BASE + 30) /* VT_CLSID */ #define PROPID_M_SENTTIME (PROPID_M_BASE + 31) /* VT_UI4 */ #define PROPID_M_ARRIVEDTIME (PROPID_M_BASE + 32) /* VT_UI4 */ #define PROPID_M_DEST_QUEUE (PROPID_M_BASE + 33) /* VT_LPWSTR */ #define PROPID_M_DEST_QUEUE_LEN (PROPID_M_BASE + 34) /* VT_UI4 */ #define PROPID_M_EXTENSION (PROPID_M_BASE + 35) /* VT_UI1|VT_VECTOR */ #define PROPID_M_EXTENSION_LEN (PROPID_M_BASE + 36) /* VT_UI4 */ #define PROPID_M_SECURITY_CONTEXT (PROPID_M_BASE + 37) /* VT_UI4 */ #define PROPID_M_CONNECTOR_TYPE (PROPID_M_BASE + 38) /* VT_CLSID */ #define PROPID_M_XACT_STATUS_QUEUE (PROPID_M_BASE + 39) /* VT_LPWSTR */ #define PROPID_M_XACT_STATUS_QUEUE_LEN (PROPID_M_BASE + 40) /* VT_UI4 */ #define PROPID_M_TRACE (PROPID_M_BASE + 41) /* VT_UI1 */ #define PROPID_M_BODY_TYPE (PROPID_M_BASE + 42) /* VT_UI4 */ #define PROPID_M_DEST_SYMM_KEY (PROPID_M_BASE + 43) /* VT_UI1|VT_VECTOR */ #define PROPID_M_DEST_SYMM_KEY_LEN (PROPID_M_BASE + 44) /* VT_UI4 */ #define PROPID_M_SIGNATURE (PROPID_M_BASE + 45) /* VT_UI1|VT_VECTOR */ #define PROPID_M_SIGNATURE_LEN (PROPID_M_BASE + 46) /* VT_UI4 */ #define PROPID_M_PROV_TYPE (PROPID_M_BASE + 47) /* VT_UI4 */ #define PROPID_M_PROV_NAME (PROPID_M_BASE + 48) /* VT_LPWSTR */ #define PROPID_M_PROV_NAME_LEN (PROPID_M_BASE + 49) /* VT_UI4 */ #define PROPID_M_FIRST_IN_XACT (PROPID_M_BASE + 50) /* VT_UI1 */ #define PROPID_M_LAST_IN_XACT (PROPID_M_BASE + 51) /* VT_UI1 */ #define PROPID_M_XACTID (PROPID_M_BASE + 52) /* VT_UI1|VT_VECTOR */ // // Message Property Size // #define PROPID_M_MSGID_SIZE 20 #define PROPID_M_CORRELATIONID_SIZE 20 #define PROPID_M_XACTID_SIZE 20 //******************************************************************** // MESSAGE CLASS VALUES //******************************************************************** // // Message Class Values are 16 bits layed out as follows: // // 1 1 1 1 1 1 // 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 // +-+-+-----------+---------------+ // |S|R| Reserved | Class code | // +-+-+-----------+---------------+ // // where // // S - is the severity flag // 0 - Normal Message/Positive Acknowledgment (ACK) // 1 - Negative Acknowledgment (NACK) // // R - is the receive flag // 0 - Arrival ACK/NACK // 1 - Receive ACK/NACK // #define MQCLASS_CODE(s, r, code) ((USHORT)(((s) << 15) | ((r) << 14) | (code))) #define MQCLASS_NACK(c) ((c) & 0x8000) #define MQCLASS_RECEIVE(c) ((c) & 0x4000) // // Normal message // #define MQMSG_CLASS_NORMAL MQCLASS_CODE(0, 0, 0x00) // // Report message // #define MQMSG_CLASS_REPORT MQCLASS_CODE(0, 0, 0x01) // // Arrival acknowledgment. The message has reached the destination queue // #define MQMSG_CLASS_ACK_REACH_QUEUE MQCLASS_CODE(0, 0, 0x02) // // Receive acknowledgment. The message has been received by the application // #define MQMSG_CLASS_ACK_RECEIVE MQCLASS_CODE(0, 1, 0x00) //----------------------------------------------- // // Negative arrival acknowledgments // // // Destination queue can not be reached, the queue may have been deleted // #define MQMSG_CLASS_NACK_BAD_DST_Q MQCLASS_CODE(1, 0, 0x00) // // The message was purged before reaching the destination queue // #define MQMSG_CLASS_NACK_PURGED MQCLASS_CODE(1, 0, 0x01) // // Time to reach queue has expired // #define MQMSG_CLASS_NACK_REACH_QUEUE_TIMEOUT MQCLASS_CODE(1, 0, 0x02) // // The message has exceeded the queue quota // #define MQMSG_CLASS_NACK_Q_EXCEED_QUOTA MQCLASS_CODE(1, 0, 0x03) // // The sender does not have send access rights on the queue. // #define MQMSG_CLASS_NACK_ACCESS_DENIED MQCLASS_CODE(1, 0, 0x04) // // The message hop count exceeded // #define MQMSG_CLASS_NACK_HOP_COUNT_EXCEEDED MQCLASS_CODE(1, 0, 0x05) // // The message signature is bad. The message could not be authenticated. // #define MQMSG_CLASS_NACK_BAD_SIGNATURE MQCLASS_CODE(1, 0, 0x06) // // The message could not be decrypted. // #define MQMSG_CLASS_NACK_BAD_ENCRYPTION MQCLASS_CODE(1, 0, 0x07) // // The message could not be encrypted for the destination. // #define MQMSG_CLASS_NACK_COULD_NOT_ENCRYPT MQCLASS_CODE(1, 0, 0x08) // // The message was sent to a non-transactional queue within a transaction. // #define MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_Q MQCLASS_CODE(1, 0, 0x09) // // The message was sent to a transactional queue not within a transaction. // #define MQMSG_CLASS_NACK_NOT_TRANSACTIONAL_MSG MQCLASS_CODE(1, 0, 0x0A) // // The requested crypto provider for encryption is not supported by destination. // #define MQMSG_CLASS_NACK_UNSUPPORTED_CRYPTO_PROVIDER MQCLASS_CODE(1, 0, 0x0B) //----------------------------------------------- // // Negative receive acknowledgments // // // The queue was deleted, after the message has arrived // #define MQMSG_CLASS_NACK_Q_DELETED MQCLASS_CODE(1, 1, 0x00) // // The message was purged at the destination queue // #define MQMSG_CLASS_NACK_Q_PURGED MQCLASS_CODE(1, 1, 0x01) // // Time to receive has expired, while the message is in the queue (info from the destination) // #define MQMSG_CLASS_NACK_RECEIVE_TIMEOUT MQCLASS_CODE(1, 1, 0x02) // // Time to receive has expired, while the message is in the queue (generated by sender locally) // #define MQMSG_CLASS_NACK_RECEIVE_TIMEOUT_AT_SENDER MQCLASS_CODE(1, 1, 0x03) //------ PROPID_M_ACKNOWLEDGE --------------- #define MQMSG_ACKNOWLEDGMENT_NONE 0x00 #define MQMSG_ACKNOWLEDGMENT_POS_ARRIVAL 0x01 #define MQMSG_ACKNOWLEDGMENT_POS_RECEIVE 0x02 #define MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL 0x04 #define MQMSG_ACKNOWLEDGMENT_NEG_RECEIVE 0x08 #define MQMSG_ACKNOWLEDGMENT_NACK_REACH_QUEUE ((UCHAR)( \ MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL )) #define MQMSG_ACKNOWLEDGMENT_FULL_REACH_QUEUE ((UCHAR)( \ MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL | \ MQMSG_ACKNOWLEDGMENT_POS_ARRIVAL )) #define MQMSG_ACKNOWLEDGMENT_NACK_RECEIVE ((UCHAR)( \ MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL | \ MQMSG_ACKNOWLEDGMENT_NEG_RECEIVE )) #define MQMSG_ACKNOWLEDGMENT_FULL_RECEIVE ((UCHAR)( \ MQMSG_ACKNOWLEDGMENT_NEG_ARRIVAL | \ MQMSG_ACKNOWLEDGMENT_NEG_RECEIVE | \ MQMSG_ACKNOWLEDGMENT_POS_RECEIVE )) //------ PROPID_M_DELIVERY ------------------ #define MQMSG_DELIVERY_EXPRESS 0 #define MQMSG_DELIVERY_RECOVERABLE 1 //----- PROPID_M_JOURNAL -------------------- #define MQMSG_JOURNAL_NONE 0 #define MQMSG_DEADLETTER 1 #define MQMSG_JOURNAL 2 //----- PROPID_M_TRACE ---------------------- #define MQMSG_TRACE_NONE 0 #define MQMSG_SEND_ROUTE_TO_REPORT_QUEUE 1 //----- PROPID_M_SENDERID_TYPE -------------- #define MQMSG_SENDERID_TYPE_NONE 0 #define MQMSG_SENDERID_TYPE_SID 1 //----- PROPID_M_PRIV_LEVEL ----------------- #define MQMSG_PRIV_LEVEL_NONE 0 #define MQMSG_PRIV_LEVEL_BODY 0x01 #define MQMSG_PRIV_LEVEL_BODY_BASE 0x01 #define MQMSG_PRIV_LEVEL_BODY_ENHANCED 0x03 //----- PROPID_M_AUTH_LEVEL ----------------- #define MQMSG_AUTH_LEVEL_NONE 0 #define MQMSG_AUTH_LEVEL_ALWAYS 1 //----- PROPID_M_AUTHENTICATED -------------- #define MQMSG_AUTHENTICATION_NOT_REQUESTED 0 #define MQMSG_AUTHENTICATION_REQUESTED 1 //----- PROPID_M_FIRST_IN_XACT -------------- #define MQMSG_NOT_FIRST_IN_XACT 0 #define MQMSG_FIRST_IN_XACT 1 //----- PROPID_M_LAST_IN_XACT -------------- #define MQMSG_NOT_LAST_IN_XACT 0 #define MQMSG_LAST_IN_XACT 1 //******************************************************************** // QUEUE PROPERTIES //******************************************************************** #define PROPID_Q_BASE 100 #define PROPID_Q_INSTANCE (PROPID_Q_BASE + 1) /* VT_CLSID */ #define PROPID_Q_TYPE (PROPID_Q_BASE + 2) /* VT_CLSID */ #define PROPID_Q_PATHNAME (PROPID_Q_BASE + 3) /* VT_LPWSTR */ #define PROPID_Q_JOURNAL (PROPID_Q_BASE + 4) /* VT_UI1 */ #define PROPID_Q_QUOTA (PROPID_Q_BASE + 5) /* VT_UI4 */ #define PROPID_Q_BASEPRIORITY (PROPID_Q_BASE + 6) /* VT_I2 */ #define PROPID_Q_JOURNAL_QUOTA (PROPID_Q_BASE + 7) /* VT_UI4 */ #define PROPID_Q_LABEL (PROPID_Q_BASE + 8) /* VT_LPWSTR */ #define PROPID_Q_CREATE_TIME (PROPID_Q_BASE + 9) /* VT_I4 */ #define PROPID_Q_MODIFY_TIME (PROPID_Q_BASE + 10) /* VT_I4 */ #define PROPID_Q_AUTHENTICATE (PROPID_Q_BASE + 11) /* VT_UI1 */ #define PROPID_Q_PRIV_LEVEL (PROPID_Q_BASE + 12) /* VT_UI4 */ #define PROPID_Q_TRANSACTION (PROPID_Q_BASE + 13) /* VT_UI1 */ #define PROPID_Q_PATHNAME_DNS (PROPID_Q_BASE + 24) /* VT_LPWSTR */ //----- PROPID_Q_JOURNAL ------------------ #define MQ_JOURNAL_NONE (unsigned char)0 #define MQ_JOURNAL (unsigned char)1 //----- PROPID_Q_TYPE ------------------ // {55EE8F32-CCE9-11cf-B108-0020AFD61CE9} #define MQ_QTYPE_REPORT {0x55ee8f32, 0xcce9, 0x11cf, \ {0xb1, 0x8, 0x0, 0x20, 0xaf, 0xd6, 0x1c, 0xe9}} // {55EE8F33-CCE9-11cf-B108-0020AFD61CE9} #define MQ_QTYPE_TEST {0x55ee8f33, 0xcce9, 0x11cf, \ {0xb1, 0x8, 0x0, 0x20, 0xaf, 0xd6, 0x1c, 0xe9}} //----- PROPID_Q_TRANSACTION ------------------ #define MQ_TRANSACTIONAL_NONE (unsigned char)0 #define MQ_TRANSACTIONAL (unsigned char)1 //----- PROPID_Q_AUTHENTICATE ------------------ #define MQ_AUTHENTICATE_NONE (unsigned char)0 #define MQ_AUTHENTICATE (unsigned char)1 //----- PROPID_Q_PRIV_LEVEL ------------------ #define MQ_PRIV_LEVEL_NONE (unsigned long)0 #define MQ_PRIV_LEVEL_OPTIONAL (unsigned long)1 #define MQ_PRIV_LEVEL_BODY (unsigned long)2 //******************************************************************** // MACHINE PROPERTIES //******************************************************************** #define PROPID_QM_BASE 200 #define PROPID_QM_SITE_ID (PROPID_QM_BASE + 1) /* VT_CLSID */ #define PROPID_QM_MACHINE_ID (PROPID_QM_BASE + 2) /* VT_CLSID */ #define PROPID_QM_PATHNAME (PROPID_QM_BASE + 3) /* VT_LPWSTR */ #define PROPID_QM_CONNECTION (PROPID_QM_BASE + 4) /* VT_LPWSTR|VT_VECTOR */ #define PROPID_QM_ENCRYPTION_PK (PROPID_QM_BASE + 5) /* VT_BLOB */ #define PROPID_QM_ENCRYPTION_PK_BASE (PROPID_QM_BASE + 31) /* VT_UI1|VT_VECTOR */ #define PROPID_QM_ENCRYPTION_PK_ENHANCED (PROPID_QM_BASE + 32) /* VT_UI1|VT_VECTOR */ #define PROPID_QM_PATHNAME_DNS (PROPID_QM_BASE + 33) /* VT_LPWSTR */ // // LONG_LIVED is the default for PROPID_M_TIME_TO_REACH_QUEUE. If call // to MQSendMessage() specify this value, or not give this property at // all, then the actual timeout is taken from MQIS database. // #define LONG_LIVED 0xfffffffe //******************************************************************** // PRIVATE COMPUTER PROPERTIES //******************************************************************** #define PROPID_PC_BASE 5800 #define PROPID_PC_VERSION (PROPID_PC_BASE + 1) /* VT_UI4 */ #define PROPID_PC_DS_ENABLED (PROPID_PC_BASE + 2) /* VT_BOOL */ // // Success // #define MQ_OK 0L #ifndef FACILITY_MSMQ #define FACILITY_MSMQ 0x0E #endif // // Error // // // Values are 32 bit values layed out as follows: // // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 // 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 // +---+-+-+-----------------------+-------------------------------+ // |Sev|C|R| Facility | Code | // +---+-+-+-----------------------+-------------------------------+ // // where // // Sev - is the severity code // // 00 - Success // 01 - Informational // 10 - Warning // 11 - Error // // C - is the Customer code flag // // R - is a reserved bit // // Facility - is the facility code // // Code - is the facility's status code // // // Define the facility codes // // // Define the severity codes // // // MessageId: MQ_ERROR // // MessageText: // // GenericError // #define MQ_ERROR 0xC00E0001L // // MessageId: MQ_ERROR_PROPERTY // // MessageText: // // One or more of the passed properties are invalid. // #define MQ_ERROR_PROPERTY 0xC00E0002L // // MessageId: MQ_ERROR_QUEUE_NOT_FOUND // // MessageText: // // The queue does not exist, or you do not have sufficient permissions to perform the operation. // #define MQ_ERROR_QUEUE_NOT_FOUND 0xC00E0003L // // MessageId: MQ_ERROR_QUEUE_EXISTS // // MessageText: // // A queue with the same pathname already exists. // #define MQ_ERROR_QUEUE_EXISTS 0xC00E0005L // // MessageId: MQ_ERROR_INVALID_PARAMETER // // MessageText: // // An invalid parameter was passed to a function. // #define MQ_ERROR_INVALID_PARAMETER 0xC00E0006L // // MessageId: MQ_ERROR_INVALID_HANDLE // // MessageText: // // An invalid handle was passed to a function. // #define MQ_ERROR_INVALID_HANDLE 0xC00E0007L // // MessageId: MQ_ERROR_OPERATION_CANCELLED // // MessageText: // // The operation was cancelled before it could be completed. // #define MQ_ERROR_OPERATION_CANCELLED 0xC00E0008L // // MessageId: MQ_ERROR_SHARING_VIOLATION // // MessageText: // // There is a sharing violation. The queue is already open for an exclusive receive. // #define MQ_ERROR_SHARING_VIOLATION 0xC00E0009L // // MessageId: MQ_ERROR_SERVICE_NOT_AVAILABLE // // MessageText: // // The Message Queuing service is not available // #define MQ_ERROR_SERVICE_NOT_AVAILABLE 0xC00E000BL // // MessageId: MQ_ERROR_MACHINE_NOT_FOUND // // MessageText: // // The specified computer could not be found. // #define MQ_ERROR_MACHINE_NOT_FOUND 0xC00E000DL // // MessageId: MQ_ERROR_ILLEGAL_SORT // // MessageText: // // The sort operation specified in MQLocateBegin is invalid (for example: duplicate columns). // #define MQ_ERROR_ILLEGAL_SORT 0xC00E0010L // // MessageId: MQ_ERROR_ILLEGAL_USER // // MessageText: // // The user specified is not a valid user. // #define MQ_ERROR_ILLEGAL_USER 0xC00E0011L // // MessageId: MQ_ERROR_NO_DS // // MessageText: // // Unable to establish a connection with Active Directory. Verify there are sufficient permissions to perform this operation. // #define MQ_ERROR_NO_DS 0xC00E0013L // // MessageId: MQ_ERROR_ILLEGAL_QUEUE_PATHNAME // // MessageText: // // The queue pathname specified is invalid. // #define MQ_ERROR_ILLEGAL_QUEUE_PATHNAME 0xC00E0014L // // MessageId: MQ_ERROR_ILLEGAL_PROPERTY_VALUE // // MessageText: // // The property value specified is invalid. // #define MQ_ERROR_ILLEGAL_PROPERTY_VALUE 0xC00E0018L // // MessageId: MQ_ERROR_ILLEGAL_PROPERTY_VT // // MessageText: // // The VARTYPE value specified is invalid. // #define MQ_ERROR_ILLEGAL_PROPERTY_VT 0xC00E0019L // // MessageId: MQ_ERROR_BUFFER_OVERFLOW // // MessageText: // // The buffer supplied to MQReceiveMessage for message body retrieval // was too small. The message was not removed from the queue and part // of the message body that is in the buffer was copied. // #define MQ_ERROR_BUFFER_OVERFLOW 0xC00E001AL // // MessageId: MQ_ERROR_IO_TIMEOUT // // MessageText: // // The MQReceiveMessage timeout has expired // #define MQ_ERROR_IO_TIMEOUT 0xC00E001BL // // MessageId: MQ_ERROR_ILLEGAL_CURSOR_ACTION // // MessageText: // // The MQ_ACTION_PEEK_NEXT value specified for MQReceiveMessage cannot be used with // the current cursor position. // #define MQ_ERROR_ILLEGAL_CURSOR_ACTION 0xC00E001CL // // MessageId: MQ_ERROR_MESSAGE_ALREADY_RECEIVED // // MessageText: // // A message that is currently pointed at by the cursor has been removed from // the queue by another process or by another call to MQReceiveMessage // without the use of this cursor. // #define MQ_ERROR_MESSAGE_ALREADY_RECEIVED 0xC00E001DL // // MessageId: MQ_ERROR_ILLEGAL_FORMATNAME // // MessageText: // // The specified format name is invalid. // #define MQ_ERROR_ILLEGAL_FORMATNAME 0xC00E001EL // // MessageId: MQ_ERROR_FORMATNAME_BUFFER_TOO_SMALL // // MessageText: // // The format name buffer supplied to the API was too small // to hold the format name. // #define MQ_ERROR_FORMATNAME_BUFFER_TOO_SMALL 0xC00E001FL // // MessageId: MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION // // MessageText: // // The requested operation for the specified format name is not // supported (for example:: delete a direct queue format name). // #define MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION 0xC00E0020L // // MessageId: MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR // // MessageText: // // The specified security descriptor is invalid. // #define MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR 0xC00E0021L // // MessageId: MQ_ERROR_SENDERID_BUFFER_TOO_SMALL // // MessageText: // // The size of the buffer for the user ID property is too small. // #define MQ_ERROR_SENDERID_BUFFER_TOO_SMALL 0xC00E0022L // // MessageId: MQ_ERROR_SECURITY_DESCRIPTOR_TOO_SMALL // // MessageText: // // The size of the buffer passed to MQGetQueueSecurity is too small. // #define MQ_ERROR_SECURITY_DESCRIPTOR_TOO_SMALL 0xC00E0023L // // MessageId: MQ_ERROR_CANNOT_IMPERSONATE_CLIENT // // MessageText: // // The RPC server can not impersonate the client application, so the security // credentials could not be verified. // #define MQ_ERROR_CANNOT_IMPERSONATE_CLIENT 0xC00E0024L // // MessageId: MQ_ERROR_ACCESS_DENIED // // MessageText: // // Access is denied. // #define MQ_ERROR_ACCESS_DENIED 0xC00E0025L // // MessageId: MQ_ERROR_PRIVILEGE_NOT_HELD // // MessageText: // // The client does not have sufficient security privileges to perform the operation. // #define MQ_ERROR_PRIVILEGE_NOT_HELD 0xC00E0026L // // MessageId: MQ_ERROR_INSUFFICIENT_RESOURCES // // MessageText: // // There are insufficient resources to perform the operation. // #define MQ_ERROR_INSUFFICIENT_RESOURCES 0xC00E0027L // // MessageId: MQ_ERROR_USER_BUFFER_TOO_SMALL // // MessageText: // // The request failed because the user buffer is too small to hold the returned information. // #define MQ_ERROR_USER_BUFFER_TOO_SMALL 0xC00E0028L // // MessageId: MQ_ERROR_MESSAGE_STORAGE_FAILED // // MessageText: // // Unable to store a recoverable or a journal message. The message was not sent. // #define MQ_ERROR_MESSAGE_STORAGE_FAILED 0xC00E002AL // // MessageId: MQ_ERROR_SENDER_CERT_BUFFER_TOO_SMALL // // MessageText: // // The buffer for the user certificate property is too small. // #define MQ_ERROR_SENDER_CERT_BUFFER_TOO_SMALL 0xC00E002BL // // MessageId: MQ_ERROR_INVALID_CERTIFICATE // // MessageText: // // The user certificate is invalid. // #define MQ_ERROR_INVALID_CERTIFICATE 0xC00E002CL // // MessageId: MQ_ERROR_CORRUPTED_INTERNAL_CERTIFICATE // // MessageText: // // The internal Message Queuing certificate is corrupted. // #define MQ_ERROR_CORRUPTED_INTERNAL_CERTIFICATE 0xC00E002DL // // MessageId: MQ_ERROR_NO_INTERNAL_USER_CERT // // MessageText: // // The internal Message Queuing certificate for the user does not exist. // #define MQ_ERROR_NO_INTERNAL_USER_CERT 0xC00E002FL // // MessageId: MQ_ERROR_CORRUPTED_SECURITY_DATA // // MessageText: // // A cryptographic function has failed. // #define MQ_ERROR_CORRUPTED_SECURITY_DATA 0xC00E0030L // // MessageId: MQ_ERROR_CORRUPTED_PERSONAL_CERT_STORE // // MessageText: // // The personal certificate store is corrupted. // #define MQ_ERROR_CORRUPTED_PERSONAL_CERT_STORE 0xC00E0031L // // MessageId: MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION // // MessageText: // // The computer does not support encryption operations. // #define MQ_ERROR_COMPUTER_DOES_NOT_SUPPORT_ENCRYPTION 0xC00E0033L // // MessageId: MQ_ERROR_BAD_SECURITY_CONTEXT // // MessageText: // // The security context is invalid. // #define MQ_ERROR_BAD_SECURITY_CONTEXT 0xC00E0035L // // MessageId: MQ_ERROR_COULD_NOT_GET_USER_SID // // MessageText: // // Unable to obtain SID information from the thread token. // #define MQ_ERROR_COULD_NOT_GET_USER_SID 0xC00E0036L // // MessageId: MQ_ERROR_COULD_NOT_GET_ACCOUNT_INFO // // MessageText: // // Unable to obtain account information for the user. // #define MQ_ERROR_COULD_NOT_GET_ACCOUNT_INFO 0xC00E0037L // // MessageId: MQ_ERROR_ILLEGAL_MQCOLUMNS // // MessageText: // // The MQCOLUMNS parameter is invalid. // #define MQ_ERROR_ILLEGAL_MQCOLUMNS 0xC00E0038L // // MessageId: MQ_ERROR_ILLEGAL_PROPID // // MessageText: // // The PROPID value is invalid. // #define MQ_ERROR_ILLEGAL_PROPID 0xC00E0039L // // MessageId: MQ_ERROR_ILLEGAL_RELATION // // MessageText: // // The RELATION value is invalid. // #define MQ_ERROR_ILLEGAL_RELATION 0xC00E003AL // // MessageId: MQ_ERROR_ILLEGAL_PROPERTY_SIZE // // MessageText: // // A buffer size property is invalid. // #define MQ_ERROR_ILLEGAL_PROPERTY_SIZE 0xC00E003BL // // MessageId: MQ_ERROR_ILLEGAL_RESTRICTION_PROPID // // MessageText: // // The PROPID value for the MQRESTRICTION parameter is invalid. // #define MQ_ERROR_ILLEGAL_RESTRICTION_PROPID 0xC00E003CL // // MessageId: MQ_ERROR_ILLEGAL_MQQUEUEPROPS // // MessageText: // // The MQQUEUEPROPS parameter is invalid. This may be because it has a null value or has zero properties specified. // #define MQ_ERROR_ILLEGAL_MQQUEUEPROPS 0xC00E003DL // // MessageId: MQ_ERROR_PROPERTY_NOTALLOWED // // MessageText: // // The PROPID value for the requested operation is invalid. (for example: PROPID_Q_INSTANCE // in MQSetQueueProperties) // #define MQ_ERROR_PROPERTY_NOTALLOWED 0xC00E003EL // // MessageId: MQ_ERROR_INSUFFICIENT_PROPERTIES // // MessageText: // // Not all the required properties for the operation were specified // for the input parameters. // #define MQ_ERROR_INSUFFICIENT_PROPERTIES 0xC00E003FL // // MessageId: MQ_ERROR_MACHINE_EXISTS // // MessageText: // // A computer with the same name already exists in the site. Either the computer object already exists // (for a Windows NT enterprise), or the MSMQ configuration object already exists for the applicable computer // object in Active directory (for a Windows 2000 enterprise). // #define MQ_ERROR_MACHINE_EXISTS 0xC00E0040L // // MessageId: MQ_ERROR_ILLEGAL_MQQMPROPS // // MessageText: // // The MQQMPROPS parameter value is invalid. This may be because it has a null value or has zero properties specified. // #define MQ_ERROR_ILLEGAL_MQQMPROPS 0xC00E0041L // // MessageId: MQ_ERROR_DS_IS_FULL // // MessageText: // // This error message is obsolete. // #define MQ_ERROR_DS_IS_FULL 0xC00E0042L // // MessageId: MQ_ERROR_DS_ERROR // // MessageText: // // There is an internal Active Directory error. // #define MQ_ERROR_DS_ERROR 0xC00E0043L // // MessageId: MQ_ERROR_INVALID_OWNER // // MessageText: // // The object owner is invalid. For example: MQCreateQueue failed because the QM // object is invalid. // #define MQ_ERROR_INVALID_OWNER 0xC00E0044L // // MessageId: MQ_ERROR_UNSUPPORTED_ACCESS_MODE // // MessageText: // // The specified access mode is unsupported. // #define MQ_ERROR_UNSUPPORTED_ACCESS_MODE 0xC00E0045L // // MessageId: MQ_ERROR_RESULT_BUFFER_TOO_SMALL // // MessageText: // // The specified result buffer is too small. // #define MQ_ERROR_RESULT_BUFFER_TOO_SMALL 0xC00E0046L // // MessageId: MQ_ERROR_DELETE_CN_IN_USE // // MessageText: // // The Connected Network cannot be deleted as it is currently in use. // #define MQ_ERROR_DELETE_CN_IN_USE 0xC00E0048L // // MessageId: MQ_ERROR_NO_RESPONSE_FROM_OBJECT_SERVER // // MessageText: // // There was no response from the object owner. // #define MQ_ERROR_NO_RESPONSE_FROM_OBJECT_SERVER 0xC00E0049L // // MessageId: MQ_ERROR_OBJECT_SERVER_NOT_AVAILABLE // // MessageText: // // The object owner is not available. // #define MQ_ERROR_OBJECT_SERVER_NOT_AVAILABLE 0xC00E004AL // // MessageId: MQ_ERROR_QUEUE_NOT_AVAILABLE // // MessageText: // // An error occurred while reading from a queue located on a remote computer. // #define MQ_ERROR_QUEUE_NOT_AVAILABLE 0xC00E004BL // // MessageId: MQ_ERROR_DTC_CONNECT // // MessageText: // // Cannot connect to the Distributed Transaction Coordinator. // #define MQ_ERROR_DTC_CONNECT 0xC00E004CL // // MessageId: MQ_ERROR_TRANSACTION_IMPORT // // MessageText: // // Cannot import the transaction. // #define MQ_ERROR_TRANSACTION_IMPORT 0xC00E004EL // // MessageId: MQ_ERROR_TRANSACTION_USAGE // // MessageText: // // Transaction usage is invalid. // #define MQ_ERROR_TRANSACTION_USAGE 0xC00E0050L // // MessageId: MQ_ERROR_TRANSACTION_SEQUENCE // // MessageText: // // The transaction operations sequence is incorrect. // #define MQ_ERROR_TRANSACTION_SEQUENCE 0xC00E0051L // // MessageId: MQ_ERROR_MISSING_CONNECTOR_TYPE // // MessageText: // // The Connector Type value is missing and is required when sending an acknowledgment message or a secure message. // #define MQ_ERROR_MISSING_CONNECTOR_TYPE 0xC00E0055L // // MessageId: MQ_ERROR_STALE_HANDLE // // MessageText: // // The Queue Manager service has been restarted. The queue handle should be closed. // #define MQ_ERROR_STALE_HANDLE 0xC00E0056L // // MessageId: MQ_ERROR_TRANSACTION_ENLIST // // MessageText: // // Cannot enlist the specified transaction. // #define MQ_ERROR_TRANSACTION_ENLIST 0xC00E0058L // // MessageId: MQ_ERROR_QUEUE_DELETED // // MessageText: // // The queue was deleted. Messages cannot be received anymore using this // queue handle. The handle should be closed. // #define MQ_ERROR_QUEUE_DELETED 0xC00E005AL // // MessageId: MQ_ERROR_ILLEGAL_CONTEXT // // MessageText: // // The context parameter for MQLocateBegin is invalid. // #define MQ_ERROR_ILLEGAL_CONTEXT 0xC00E005BL // // MessageId: MQ_ERROR_ILLEGAL_SORT_PROPID // // MessageText: // // ThePROPID value in MQSORTSET is invalid. // #define MQ_ERROR_ILLEGAL_SORT_PROPID 0xC00E005CL // // MessageId: MQ_ERROR_LABEL_TOO_LONG // // MessageText: // // The label is too long. It should be less or equal to MQ_MAX_MSG_LABEL_LEN in length. // #define MQ_ERROR_LABEL_TOO_LONG 0xC00E005DL // // MessageId: MQ_ERROR_LABEL_BUFFER_TOO_SMALL // // MessageText: // // The label buffer supplied to the API was too small. // #define MQ_ERROR_LABEL_BUFFER_TOO_SMALL 0xC00E005EL // // MessageId: MQ_ERROR_MQIS_SERVER_EMPTY // // MessageText: // // The list (in the registry) of domain controllers that are running Message Queuing is empty. // #define MQ_ERROR_MQIS_SERVER_EMPTY 0xC00E005FL // // MessageId: MQ_ERROR_MQIS_READONLY_MODE // // MessageText: // // MQIS database is in read-only mode. // #define MQ_ERROR_MQIS_READONLY_MODE 0xC00E0060L // // MessageId: MQ_ERROR_SYMM_KEY_BUFFER_TOO_SMALL // // MessageText: // // The passed buffer for the Symmetric key property is too small. // #define MQ_ERROR_SYMM_KEY_BUFFER_TOO_SMALL 0xC00E0061L // // MessageId: MQ_ERROR_SIGNATURE_BUFFER_TOO_SMALL // // MessageText: // // The passed buffer for the Signature property is too small. // #define MQ_ERROR_SIGNATURE_BUFFER_TOO_SMALL 0xC00E0062L // // MessageId: MQ_ERROR_PROV_NAME_BUFFER_TOO_SMALL // // MessageText: // // The passed buffer for the Provider Name property is too small. // #define MQ_ERROR_PROV_NAME_BUFFER_TOO_SMALL 0xC00E0063L // // MessageId: MQ_ERROR_ILLEGAL_OPERATION // // MessageText: // // The operation is invalid for a foreign message queuing system. // #define MQ_ERROR_ILLEGAL_OPERATION 0xC00E0064L // // MessageId: MQ_ERROR_WRITE_NOT_ALLOWED // // MessageText: // // Another MQIS server is being installed, write operations to the // database are not allowed at this stage. // #define MQ_ERROR_WRITE_NOT_ALLOWED 0xC00E0065L // // MessageId: MQ_ERROR_WKS_CANT_SERVE_CLIENT // // MessageText: // // Independent clients cannot support dependent clients. // #define MQ_ERROR_WKS_CANT_SERVE_CLIENT 0xC00E0066L // // // MessageId: MQ_ERROR_DEPEND_WKS_LICENSE_OVERFLOW // // MessageText: // // The number of dependent clients served by the Message Queuing server reached // its upper limit. // // #define MQ_ERROR_DEPEND_WKS_LICENSE_OVERFLOW 0xC00E0067L // // // MessageId: MQ_CORRUPTED_QUEUE_WAS_DELETED // // MessageText: // // The file %1 for queue %2 in the LQS folder has been deleted because it was corrupted. // #define MQ_CORRUPTED_QUEUE_WAS_DELETED 0xC00E0068L // // // MessageId: MQ_ERROR_REMOTE_MACHINE_NOT_AVAILABLE // // MessageText: // // The remote computer is not available. // #define MQ_ERROR_REMOTE_MACHINE_NOT_AVAILABLE 0xC00E0069L // // // MessageId: MQ_ERROR_UNSUPPORTED_OPERATION // // MessageText: // // The operation is not supported for a WORKGROUP installation computer. // #define MQ_ERROR_UNSUPPORTED_OPERATION 0xC00E006AL // // // MessageId: MQ_ERROR_ENCRYPTION_PROVIDER_NOT_SUPPORTED // // MessageText: // // The Cryptographic Service Provider %1 is not supported by Message Queuing. // #define MQ_ERROR_ENCRYPTION_PROVIDER_NOT_SUPPORTED 0xC00E006BL // // // MessageId: MQ_ERROR_CANNOT_SET_CRYPTO_SEC_DESCR // // MessageText: // // Unable to set the security descriptor for the cryptographic keys. // #define MQ_ERROR_CANNOT_SET_CRYPTO_SEC_DESCR 0xC00E006CL // // // MessageId: MQ_ERROR_CERTIFICATE_NOT_PROVIDED // // MessageText: // // A user attempted to send an authenticated message without a certificate. // #define MQ_ERROR_CERTIFICATE_NOT_PROVIDED 0xC00E006DL // // // MessageId: MQ_ERROR_Q_DNS_PROPERTY_NOT_SUPPORTED // // MessageText: // // The column PROPID_Q_PATHNAME_DNS is not supported for the // MQLocateBegin API. // #define MQ_ERROR_Q_DNS_PROPERTY_NOT_SUPPORTED 0xC00E006EL // // // MessageId: MQ_ERROR_CANNOT_CREATE_CERT_STORE // // MessageText: // // Unable to create a certificate store for the internal certificate. // #define MQ_ERROR_CANNOT_CREATE_CERT_STORE 0xC00E006FL // // // MessageId: MQ_ERROR_CANNOT_OPEN_CERT_STORE // // MessageText: // // Unable to open the certificates store for the internal certificate. // #define MQ_ERROR_CANNOT_OPEN_CERT_STORE 0xC00E0070L // // // MessageId: MQ_ERROR_ILLEGAL_ENTERPRISE_OPERATION // // MessageText: // // The operation is invalid for a msmqServices object. // #define MQ_ERROR_ILLEGAL_ENTERPRISE_OPERATION 0xC00E0071L // // // MessageId: MQ_ERROR_CANNOT_GRANT_ADD_GUID // // MessageText: // // Failed to grant the "Add Guid" permission to current user. // #define MQ_ERROR_CANNOT_GRANT_ADD_GUID 0xC00E0072L // // // MessageId: MQ_ERROR_CANNOT_LOAD_MSMQOCM // // MessageText: // // Can't load the MSMQOCM.DLL library. // #define MQ_ERROR_CANNOT_LOAD_MSMQOCM 0xC00E0073L // // // MessageId: MQ_ERROR_NO_ENTRY_POINT_MSMQOCM // // MessageText: // // Cannot locate an entry point in the MSMQOCM.DLL library. // #define MQ_ERROR_NO_ENTRY_POINT_MSMQOCM 0xC00E0074L // // // MessageId: MQ_ERROR_NO_MSMQ_SERVERS_ON_DC // // MessageText: // // Failed to find Message Queuing servers on domain controllers. // #define MQ_ERROR_NO_MSMQ_SERVERS_ON_DC 0xC00E0075L // // // MessageId: MQ_ERROR_CANNOT_JOIN_DOMAIN // // MessageText: // // Failed to join MSMQ enterprise on Windows 2000 domain. // #define MQ_ERROR_CANNOT_JOIN_DOMAIN 0xC00E0076L // // // MessageId: MQ_ERROR_CANNOT_CREATE_ON_GC // // MessageText: // // Failed to create an object on a specified GC server. // #define MQ_ERROR_CANNOT_CREATE_ON_GC 0xC00E0077L // // // MessageId: MQ_ERROR_GUID_NOT_MATCHING // // MessageText: // // Failed to create msmqConfiguration object with GUID that match machine installation. You must uninstall MSMQ and then reinstall it. // #define MQ_ERROR_GUID_NOT_MATCHING 0xC00E0078L // // MessageId: MQ_ERROR_PUBLIC_KEY_NOT_FOUND // // MessageText: // // Unable to find the public key for computer %1 // #define MQ_ERROR_PUBLIC_KEY_NOT_FOUND 0xC00E0079L // // MessageId: MQ_ERROR_PUBLIC_KEY_DOES_NOT_EXIST // // MessageText: // // The public key for computer %1 does not exist // #define MQ_ERROR_PUBLIC_KEY_DOES_NOT_EXIST 0xC00E007AL // // // MessageId: MQ_ERROR_ILLEGAL_MQPRIVATEPROPS // // MessageText: // // The MQPRIVATEPROPS parameter value is invalid. This may be because it has a null value or has zero properties specified. // #define MQ_ERROR_ILLEGAL_MQPRIVATEPROPS 0xC00E007BL // // // MessageId: MQ_ERROR_NO_GC_IN_DOMAIN // // MessageText: // // Unable to find Global Catalog servers in the specified domain. // #define MQ_ERROR_NO_GC_IN_DOMAIN 0xC00E007CL // // // MessageId: MQ_ERROR_NO_MSMQ_SERVERS_ON_GC // // MessageText: // // Failed to find Message Queuing servers on Global Catalog domain controllers. // #define MQ_ERROR_NO_MSMQ_SERVERS_ON_GC 0xC00E007DL // // // MessageId: MQ_ERROR_CANNOT_GET_DN // // MessageText: // // Failed to retrieve the distinguished name of local computer. // #define MQ_ERROR_CANNOT_GET_DN 0xC00E007EL // // Informational // // // MessageId: MQ_INFORMATION_PROPERTY // // MessageText: // // One or more of the passed properties resulted in a warning but the // function completed. // #define MQ_INFORMATION_PROPERTY 0x400E0001L // // MessageId: MQ_INFORMATION_ILLEGAL_PROPERTY // // MessageText: // // Invalid property ID. // #define MQ_INFORMATION_ILLEGAL_PROPERTY 0x400E0002L // // MessageId: MQ_INFORMATION_PROPERTY_IGNORED // // MessageText: // // The specified property has been ignored for this operation // (for example:, PROPID_M_SENDERID in SendMessage()). // #define MQ_INFORMATION_PROPERTY_IGNORED 0x400E0003L // // MessageId: MQ_INFORMATION_UNSUPPORTED_PROPERTY // // MessageText: // // The specified property is not supported and has been ignored for this operation. // #define MQ_INFORMATION_UNSUPPORTED_PROPERTY 0x400E0004L // // MessageId: MQ_INFORMATION_DUPLICATE_PROPERTY // // MessageText: // // The specified property is already in the PROPID array, and has been // ignored for this operation. // #define MQ_INFORMATION_DUPLICATE_PROPERTY 0x400E0005L // // MessageId: MQ_INFORMATION_OPERATION_PENDING // // MessageText: // // An asynchronous operation is currently pending. // #define MQ_INFORMATION_OPERATION_PENDING 0x400E0006L // // MessageId: MQ_INFORMATION_FORMATNAME_BUFFER_TOO_SMALL // // MessageText: // // The format name buffer supplied to MQCreateQueue was too small // to hold the format name, however the queue was created successfully. // #define MQ_INFORMATION_FORMATNAME_BUFFER_TOO_SMALL 0x400E0009L // // MessageId: MQ_INFORMATION_INTERNAL_USER_CERT_EXIST // // MessageText: // // An internal Message Queuing certificate already exists for this user. // #define MQ_INFORMATION_INTERNAL_USER_CERT_EXIST 0x400E000AL // // MessageId: MQ_INFORMATION_OWNER_IGNORED // // MessageText: // // Owner of queue was not set while processing this call to MQSetQueueSecurity(). // #define MQ_INFORMATION_OWNER_IGNORED 0x400E000BL //+----------------------------------------- // // Flags for MQRegisterCertificate() // //+----------------------------------------- #define MQCERT_REGISTER_ALWAYS 0x01 #define MQCERT_REGISTER_IF_NOT_EXIST 0x02 //******************************************************************** // SECURITY Flags (Queue access control) //******************************************************************** #define MQSEC_DELETE_MESSAGE 0x1 #define MQSEC_PEEK_MESSAGE 0x2 #define MQSEC_WRITE_MESSAGE 0x4 #define MQSEC_DELETE_JOURNAL_MESSAGE 0x8 #define MQSEC_SET_QUEUE_PROPERTIES 0x10 #define MQSEC_GET_QUEUE_PROPERTIES 0x20 #define MQSEC_DELETE_QUEUE DELETE #define MQSEC_GET_QUEUE_PERMISSIONS READ_CONTROL #define MQSEC_CHANGE_QUEUE_PERMISSIONS WRITE_DAC #define MQSEC_TAKE_QUEUE_OWNERSHIP WRITE_OWNER #define MQSEC_RECEIVE_MESSAGE (MQSEC_DELETE_MESSAGE | \ MQSEC_PEEK_MESSAGE) #define MQSEC_RECEIVE_JOURNAL_MESSAGE (MQSEC_DELETE_JOURNAL_MESSAGE | \ MQSEC_PEEK_MESSAGE) #define MQSEC_QUEUE_GENERIC_READ (MQSEC_GET_QUEUE_PROPERTIES | \ MQSEC_GET_QUEUE_PERMISSIONS | \ MQSEC_RECEIVE_MESSAGE | \ MQSEC_RECEIVE_JOURNAL_MESSAGE) #define MQSEC_QUEUE_GENERIC_WRITE (MQSEC_GET_QUEUE_PROPERTIES | \ MQSEC_GET_QUEUE_PERMISSIONS | \ MQSEC_WRITE_MESSAGE) #define MQSEC_QUEUE_GENERIC_EXECUTE 0 #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) #ifdef __cplusplus extern "C" { #endif //******************************************************************** // RECEIVE CALLBACK //******************************************************************** typedef VOID (APIENTRY *PMQRECEIVECALLBACK)( HRESULT hrStatus, QUEUEHANDLE hSource, DWORD dwTimeout, DWORD dwAction, MQMSGPROPS* pMessageProps, LPOVERLAPPED lpOverlapped, HANDLE hCursor ); //******************************************************************** // MSMQ API //******************************************************************** HRESULT APIENTRY MQCreateQueue( IN PSECURITY_DESCRIPTOR pSecurityDescriptor, IN OUT MQQUEUEPROPS* pQueueProps, OUT LPWSTR lpwcsFormatName, IN OUT LPDWORD lpdwFormatNameLength ); HRESULT APIENTRY MQDeleteQueue( IN LPCWSTR lpwcsFormatName ); HRESULT APIENTRY MQLocateBegin( IN LPCWSTR lpwcsContext, IN MQRESTRICTION* pRestriction, IN MQCOLUMNSET* pColumns, IN MQSORTSET* pSort, OUT PHANDLE phEnum ); HRESULT APIENTRY MQLocateNext( IN HANDLE hEnum, IN OUT DWORD* pcProps, OUT MQPROPVARIANT aPropVar[] ); HRESULT APIENTRY MQLocateEnd( IN HANDLE hEnum ); HRESULT APIENTRY MQOpenQueue( IN LPCWSTR lpwcsFormatName, IN DWORD dwAccess, IN DWORD dwShareMode, OUT QUEUEHANDLE* phQueue ); HRESULT APIENTRY MQSendMessage( IN QUEUEHANDLE hDestinationQueue, IN MQMSGPROPS* pMessageProps, IN ITransaction *pTransaction ); HRESULT APIENTRY MQReceiveMessage( IN QUEUEHANDLE hSource, IN DWORD dwTimeout, IN DWORD dwAction, IN OUT MQMSGPROPS* pMessageProps, IN OUT LPOVERLAPPED lpOverlapped, IN PMQRECEIVECALLBACK fnReceiveCallback, IN HANDLE hCursor, IN ITransaction* pTransaction ); HRESULT APIENTRY MQCreateCursor( IN QUEUEHANDLE hQueue, OUT PHANDLE phCursor ); HRESULT APIENTRY MQCloseCursor( IN HANDLE hCursor ); HRESULT APIENTRY MQCloseQueue( IN HANDLE hQueue ); HRESULT APIENTRY MQSetQueueProperties( IN LPCWSTR lpwcsFormatName, IN MQQUEUEPROPS* pQueueProps ); HRESULT APIENTRY MQGetQueueProperties( IN LPCWSTR lpwcsFormatName, OUT MQQUEUEPROPS* pQueueProps ); HRESULT APIENTRY MQGetQueueSecurity( IN LPCWSTR lpwcsFormatName, IN SECURITY_INFORMATION RequestedInformation, OUT PSECURITY_DESCRIPTOR pSecurityDescriptor, IN DWORD nLength, OUT LPDWORD lpnLengthNeeded ); HRESULT APIENTRY MQSetQueueSecurity( IN LPCWSTR lpwcsFormatName, IN SECURITY_INFORMATION SecurityInformation, IN PSECURITY_DESCRIPTOR pSecurityDescriptor ); HRESULT APIENTRY MQPathNameToFormatName( IN LPCWSTR lpwcsPathName, OUT LPWSTR lpwcsFormatName, IN OUT LPDWORD lpdwFormatNameLength ); HRESULT APIENTRY MQHandleToFormatName( IN QUEUEHANDLE hQueue, OUT LPWSTR lpwcsFormatName, IN OUT LPDWORD lpdwFormatNameLength ); HRESULT APIENTRY MQInstanceToFormatName( IN GUID* pGuid, OUT LPWSTR lpwcsFormatName, IN OUT LPDWORD lpdwFormatNameLength ); void APIENTRY MQFreeMemory( IN PVOID pvMemory ); HRESULT APIENTRY MQGetMachineProperties( IN LPCWSTR lpwcsMachineName, IN const GUID* pguidMachineId, IN OUT MQQMPROPS* pQMProps ); HRESULT APIENTRY MQGetSecurityContext( IN PVOID lpCertBuffer, IN DWORD dwCertBufferLength, OUT HANDLE* hSecurityContext ); void APIENTRY MQFreeSecurityContext( IN HANDLE hSecurityContext ); HRESULT APIENTRY MQRegisterCertificate( IN DWORD dwFlags, IN PVOID lpCertBuffer, IN DWORD dwCertBufferLength ); typedef HRESULT (APIENTRY *MQRegisterCertificate_ROUTINE) (DWORD, PVOID, DWORD); HRESULT APIENTRY MQBeginTransaction( OUT ITransaction **ppTransaction ); HRESULT APIENTRY MQGetOverlappedResult( IN LPOVERLAPPED lpOverlapped ); HRESULT APIENTRY MQGetPrivateComputerInformation( IN LPCWSTR lpwcsComputerName, IN OUT MQPRIVATEPROPS* pPrivateProps ); #ifdef __cplusplus } #endif #pragma option pop /*P_O_Pop*/ #endif // __MQ_H__