7 Appendix B: Product Behavior
The information in this specification is applicable to the following Microsoft products or supplemental software. References to product versions include updates to those products.
The terms "earlier" and "later", when used with a product version, refer to either all preceding versions or all subsequent versions, respectively. The term "through" refers to the inclusive range of versions. Applicable Microsoft products are listed chronologically in this section.
Windows Client
Windows NT Workstation operating system
Windows 2000 Professional operating system
Windows XP operating system
Windows Vista operating system
Windows 7 operating system
Windows 8 operating system
Windows 8.1 operating system
Windows 10 operating system
Windows 11 operating system
Windows Server
Windows NT Server operating system
Windows 2000 Server operating system
Windows Server 2003 operating system
Windows Server 2008 operating system
Windows Server 2008 R2 operating system
Windows Server 2012 operating system
Windows Server 2012 R2 operating system
Windows Server 2016 operating system
Windows Server operating system
Windows Server 2019 operating system
Windows Server 2022 operating system
Windows Server 2025 operating system
Exceptions, if any, are noted in this section. If an update version, service pack or Knowledge Base (KB) number appears with a product name, the behavior changed in that update. The new behavior also applies to subsequent updates unless otherwise specified. If a product edition appears with the product version, behavior is different in that product edition.
Unless otherwise specified, any statement of optional behavior in this specification that is prescribed using the terms "SHOULD" or "SHOULD NOT" implies product behavior in accordance with the SHOULD or SHOULD NOT prescription. Unless otherwise specified, the term "MAY" implies that the product does not follow the prescription.
<1> Section 1.6: Only Windows NT operating system, Windows 2000 operating system, Windows XP 32-bit, and Windows Server 2003 32-bit on domain-joined machines can be configured as clients of a supporting server. Servers running Windows NT and Windows 2000 act as supporting servers. By default, Windows Server 2003, Windows Server 2008 and Windows Server 2008 R2 operating system do not act as supporting servers, although an administrator can enable support when the MSMQ service is integrated with a directory service.
<2> Section 2.1: The ncacn_spx protocol sequence is supported only by Windows NT and Windows 2000 and is supported only if TCP/IP is unavailable. Support for IPX and the ncacn_spx protocol sequence is deprecated on Windows XP and later client versions, and on Windows Server 2003 and later server versions. The ncacn_ip_tcp protocol sequence is supported when TCP/IP is available.
<3> Section 2.2.3.1: All Windows clients produce new XACTUOW values by calling the Windows RPC function UuidCreate.
<4> Section 2.2.3.2: All Windows implementations of qmcomm and qmcomm2 Server ignore this value. If this field is not set to FALSE, clients on Windows NT, Windows 2000, Windows XP, and Windows Server 2003 create a new thread that is used to perform the steps described in Receiving a Message (section 3.2.4.12).
<5> Section 2.2.3.2: With MSMQ version 2 and higher, the ppSignature member contains an MSMQ 1.0 digital signature followed by an MSMQ 2.0 digital signature.
<6> Section 2.2.3.2: The only value supported by Windows is FALCON_PACKET_VERSION (0x00000010).
<7> Section 2.3: For Windows NT and Windows 2000, this protocol uses the Message Queuing (MSMQ): Directory Service Protocol [MS-MQDS].
<8> Section 2.3: For the Message Queuing (MSMQ): Directory Service Protocol [MS-MQDS], the Directory Service schema elements are described in [MS-MQDS] sections 2.2.10 and 3.1.4.21.1 through 3.1.4.21.4.
<9> Section 3.1.4: Windows 2000 and Windows Server 2003 use target level 5.0. Windows NT disables strict NDR data consistency checks.
<10> Section 3.1.4: Opnums reserved for local use apply to Windows as follows:
Opnum |
Description |
---|---|
0 |
Used only locally by Windows, never remotely. |
5 |
Not used by Windows. |
13 |
Used only locally by Windows, never remotely. |
21 |
Not used by Windows. |
24 |
Not used by Windows. |
25 |
Not used by Windows. |
29 |
Used only locally by Windows, never remotely. |
30 |
Used only locally by Windows, never remotely. |
32 |
Used only locally by Windows, never remotely. |
33 |
Used only locally by Windows, never remotely. |
34 |
Used only locally by Windows, never remotely. |
<11> Section 3.1.4.1: Only Windows NT and Windows 2000 servers implement this method. The remote cursor creation process was revised for Windows Server 2003, Windows Server 2008, and Windows Server 2008 R2.
For Windows NT and Windows 2000 servers, the method rpc_ACCreateCursorEx returns MQ_INFORMATION_REMOTE_OPERATION (0x400e03e8) to the client to indicate that a different queue manager is required to create the cursor. Upon receiving this return code, a client can proceed with cursor creation by calling R_QMGetRemoteQueueName to determine which queue manager to contact. For Windows Server 2003, Windows Server 2008, and Windows Server 2008 R2, this process was revised such that rpc_ACCreateCursorEx contacts the remote queue on behalf of the client, eliminating the need for R_QMGetRemoteQueueName to exist. If invoked, R_QMGetRemoteQueueName on Windows Server 2003 immediately raises the exception MQ_ERROR_ILLEGAL_OPERATION (0xc00e0064); R_QMGetRemoteQueueName on Windows Server 2008 and Windows Server 2008 R2 returns RPC_S_ACCESS_DENIED (0x00000005).
<12> Section 3.1.4.1: For Windows NT and Windows 2000 servers, the method rpc_ACCreateCursorEx returns MQ_INFORMATION_REMOTE_OPERATION (0x400e03e8) to the client to indicate that a different queue manager is required to create the cursor. Upon receiving this return code, a client can proceed with cursor creation by calling R_QMGetRemoteQueueName to determine which queue manager to contact. For Windows Server 2003, Windows Server 2008, and Windows Server 2008 R2, this process was revised such that rpc_ACCreateCursorEx contacts the remote queue on behalf of the client, which eliminates the need for R_QMGetRemoteQueueName to exist. If invoked, R_QMGetRemoteQueueName on Windows Server 2003 immediately raises the exception MQ_ERROR_ILLEGAL_OPERATION (0xc00e0064); R_QMGetRemoteQueueName on Windows Server 2008 and Windows Server 2008 R2 returns RPC_S_ACCESS_DENIED (0x00000005).
<13> Section 3.1.4.1: For Windows NT and Windows 2000 servers, the method rpc_ACCreateCursorEx returns MQ_INFORMATION_REMOTE_OPERATION (0x400e03e8) to the client to indicate that a different queue manager is required to create the cursor. Upon receiving this return code, a client can proceed with cursor creation by calling R_QMGetRemoteQueueName to determine which queue manager to contact. For Windows Server 2003, Windows Server 2008, and Windows Server 2008 R2, this process was revised such that rpc_ACCreateCursorEx contacts the remote queue on behalf of the client, eliminating the need for R_QMGetRemoteQueueName to exist. If invoked, R_QMGetRemoteQueueName on Windows Server 2003 immediately raises the exception MQ_ERROR_ILLEGAL_OPERATION (0xc00e0064); R_QMGetRemoteQueueName on Windows Server 2008 and Windows Server 2008 R2 returns RPC_S_ACCESS_DENIED (0x00000005).
<14> Section 3.1.4.1: For Windows NT and Windows 2000 servers, the method rpc_ACCreateCursorEx returns MQ_INFORMATION_REMOTE_OPERATION (0x400e03e8) to the client to indicate that a different queue manager is required to create the cursor. Upon receiving this return code, a client can proceed with cursor creation by calling R_QMGetRemoteQueueName to determine which queue manager to contact. For Windows Server 2003, Windows Server 2008, and Windows Server 2008 R2, this process was revised such that rpc_ACCreateCursorEx contacts the remote queue on behalf of the client, eliminating the need for R_QMGetRemoteQueueName to exist. If invoked, R_QMGetRemoteQueueName on Windows Server 2003 immediately raises the exception MQ_ERROR_ILLEGAL_OPERATION (0xc00e0064); R_QMGetRemoteQueueName on Windows Server 2008 and Windows Server 2008 R2 returns RPC_S_ACCESS_DENIED (0x00000005).
<15> Section 3.1.4.2: A Windows client passes its Windows process ID, as returned by the Windows SDK function GetCurrentProcessId. Servers ignore the value of this parameter. Therefore, clients can pass 0x00000000.
<16> Section 3.1.4.2: Clients identify themselves to the server using a GUID generated at install time, and never subsequently modified.
<17> Section 3.1.4.2: These parameters are used to implement client access licensing restrictions. Such restrictions are enforced only by servers running Windows NT, Windows 2000, and Windows Server 2003. The parameters are otherwise ignored.
<18> Section 3.1.4.2: Servers running Windows NT, Windows 2000, and Windows Server 2003 can limit the number of unique callers. If the limit is exceeded, the server can take no action and return MQ_ERROR_DEPEND_WKS_LICENSE_OVERFLOW (0xc00e0067).
<19> Section 3.1.4.2: These parameters are used to implement client access licensing restrictions. Such restrictions are enforced only by servers running Windows NT, Windows 2000, and Windows Server 2003. The parameters are otherwise ignored.
<20> Section 3.1.4.2: These parameters are used to implement client access licensing restrictions. Such restrictions are enforced only by servers running Windows NT, Windows 2000, and Windows Server 2003. The parameters are otherwise ignored.
<21> Section 3.1.4.2: A non-Microsoft OS.
<22> Section 3.1.4.2: Any edition of Windows 95 operating system, Windows 98 operating system, or Windows Millennium Edition operating system.
<23> Section 3.1.4.2: All Windows Client operating system versions listed in the applicability lists.
<24> Section 3.1.4.2: All applicable Windows Server releases, plus Windows client versions, Windows Vista, and later.
<25> Section 3.1.4.2: Any premium, advanced, or data center edition of an NT-class server operating system.
<26> Section 3.1.4.2: Windows applications typically invoke R_QMOpenRemoteQueue indirectly via the Windows API function MQOpenQueue. The Windows API documentation for MQOpenQueue includes the following error codes. For their descriptions, refer to [MS-MQMQ] section 2.4 or to [MSDN-MQEIC] for those not described in [MS-MQMQ].
Name |
Value |
---|---|
MQ_ERROR_ACCESS_DENIED |
0xc00E0025 |
MQ_ERROR_ILLEGAL_FORMATNAME |
0xC00E001E |
MQ_ERROR_NO_DS |
0xC00E0013 |
MQ_ERROR_QUEUE_NOT_FOUND |
0xC00E0003 |
MQ_ERROR_REMOTE_MACHINE_NOT_AVAILABLE |
0xC00E0069 |
MQ_ERROR_SERVICE_NOT_AVAILABLE |
0xc00E000B |
MQ_ERROR_SHARING_VIOLATION |
0xC00E0009 |
MQ_ERROR_UNSUPPORTED_ACCESS_MODE |
0xC00E0045 |
MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION |
0xC00E0020 |
LDAP_BUSY |
0x8007200E |
MQ_ERROR_INVALID_PARAMETER |
0xC00E0006 |
<27> Section 3.1.4.2: Windows NT and Windows 2000 support these R_QMOpenRemoteQueue out-parameter assignments.
<28> Section 3.1.4.2: These R_QMOpenRemoteQueue out-parameter assignments are supported on Windows Server 2003 and later server versions, and on Windows XP and later client versions.
<29> Section 3.1.4.4: Windows clients pass a non-NULL pointer to a zeroed-out CACTransferBufferV1 structure when calling R_QMCreateRemoteCursor. The server ignores the CACTransferBufferV1 pointer.
<30> Section 3.1.4.5: Windows applications typically invoke R_QMCreateObjectInternal indirectly via the Windows API function MQCreateQueue. The Windows API documentation for MQCreateQueue includes the following error codes. For descriptions of the following error codes, see [MS-MQMQ] section 2.4. For error codes not described in [MS-MQMQ], refer to [MSDN-MQEIC].
Name |
Value |
---|---|
MQ_ERROR_ACCESS_DENIED |
0xc00e0025 |
MQ_ERROR_ILLEGAL_PROPERTY_VALUE |
0xc00e0018 |
MQ_ERROR_ILLEGAL_QUEUE_PATHNAME |
0xc00e0014 |
MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR |
0xc00e0021 |
MQ_ERROR_INSUFFICIENT_PROPERTIES |
0xc00e003f |
MQ_ERROR_INVALID_OWNER |
0xc00e0044 |
MQ_ERROR_NO_DS |
0xc00e0013 |
MQ_ERROR_PROPERTY |
0xc00e0002 |
MQ_ERROR_PROPERTY_NOTALLOWED |
0xc00e003e |
MQ_ERROR_QUEUE_EXISTS |
0xc00e0005 |
MQ_ERROR_SERVICE_NOT_AVAILABLE |
0xc00e000b |
MQ_ERROR_WRITE_NOT_ALLOWED |
0xc00e0065 |
MQ_INFORMATION_FORMATNAME_BUFFER_TOO_SMALL |
0x400e0009 |
MQ_INFORMATION_PROPERTY |
0x400e0001 |
LDAP_BUSY |
0x8007200e |
MQ_ERROR_INVALID_PARAMETER |
0xC00E0006 |
<31> Section 3.1.4.5: Windows components that invoke R_QMCreateObjectInternal indirectly via the Windows API function MQCreateQueue test for the following return value. For a description of the following error code, see [MS-MQMQ] section 2.4.
Name |
Value |
---|---|
MQ_ERROR_FORMATNAME_BUFFER_TOO_SMALL |
0xc00e001f |
<32> Section 3.1.4.6: Windows applications typically invoke R_QMSetObjectSecurityInternal indirectly via the Windows API function MQSetQueueSecurity. The Windows API documentation for MQSetQueueSecurity includes the following error codes. For descriptions of the following error codes, see [MS-MQMQ] section 2.4. For error codes not described in [MS-MQMQ], refer to [MSDN-MQEIC].
Name |
Value |
---|---|
MQ_ERROR_ACCESS_DENIED |
0xc00e0025 |
MQ_ERROR_ILLEGAL_FORMATNAME |
0xc00e001e |
MQ_ERROR_NO_DS |
0xc00e0013 |
MQ_ERROR_PRIVILEGE_NOT_HELD |
0xc00e0026 |
MQ_ERROR_SERVICE_NOT_AVAILABLE |
0xc00e000b |
MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION |
0xc00e0020 |
MQ_INFORMATION_OWNER_IGNORED |
0x400e000b |
LDAP_BUSY |
0x8007200e |
<33> Section 3.1.4.7: Windows applications typically invoke R_QMGetObjectSecurityInternal indirectly via the Windows API function MQGetQueueSecurity. The Windows API documentation for MQGetQueueSecurity includes the following error codes. For descriptions of the following error codes, see [MS-MQMQ] section 2.4. For error codes not described in [MS-MQMQ], refer to [MSDN-MQEIC].
Name |
Value |
---|---|
MQ_ERROR_ACCESS_DENIED |
0xc00e0025 |
MQ_ERROR_ILLEGAL_FORMATNAME |
0xc00e001e |
MQ_ERROR_NO_DS |
0xc00e0013 |
MQ_ERROR_PRIVILEGE_NOT_HELD |
0xc00e0026 |
MQ_ERROR_SECURITY_DESCRIPTOR_TOO_SMALL |
0xc00e0023 |
MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION |
0xc00e0020 |
LDAP_BUSY |
0x8007200e |
<34> Section 3.1.4.8: Windows applications typically invoke R_QMDeleteObject indirectly via the Windows API function MQDeleteQueue. The Windows API documentation for MQDeleteQueue includes the following error codes. For descriptions of the following error codes, see [MS-MQMQ] section 2.4. For error codes not described in [MS-MQMQ], refer to [MSDN-MQEIC].
Name |
Value |
---|---|
MQ_ERROR_ACCESS_DENIED |
0xc00e0025 |
MQ_ERROR_ILLEGAL_FORMATNAME |
0xc00e001e |
MQ_ERROR_NO_DS |
0xc00e0013 |
MQ_ERROR_SERVICE_NOT_AVAILABLE |
0xc00e000b |
MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION |
0xc00e0020 |
MQ_ERROR_WRITE_NOT_ALLOWED |
0xc00e0065 |
LDAP_BUSY |
0x8007200e |
<35> Section 3.1.4.8: Windows components that invoke R_QMDeleteObject indirectly via the Windows API function MQDeleteQueue test for the following return value. For a description of the following error code, see [MS-MQMQ] section 2.4.
Name |
Value |
---|---|
MQ_ERROR_QUEUE_DELETED |
0xc00e005a |
<36> Section 3.1.4.9: Windows NT, Windows 2000, Windows Server 2003, and Windows Server 2008 return MQ_ERROR_ILLEGAL_PROPERTY_VT (0xc00e0019).
<37> Section 3.1.4.9: Windows applications typically invoke R_QMGetObjectProperties indirectly via the Windows API function MQGetQueueProperties. The Windows API documentation for MQGetQueueProperties includes the following error codes. For descriptions of the following error codes, see [MS-MQMQ] section 2.4. For error codes not described in [MS-MQMQ], refer to [MSDN-MQEIC].
Name |
Value |
---|---|
MQ_ERROR_ACCESS_DENIED |
0xc00e0025 |
MQ_ERROR_ILLEGAL_FORMATNAME |
0xc00e001e |
MQ_ERROR_ILLEGAL_PROPERTY_VT |
0xc00e0019 |
MQ_ERROR_NO_DS |
0xc00e0013 |
MQ_ERROR_SERVICE_NOT_AVAILABLE |
0xc00e000b |
MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION |
0xc00e0020 |
MQ_INFORMATION_DUPLICATE_PROPERTY |
0x400e0005 |
MQ_INFORMATION_PROPERTY |
0x400e0001 |
MQ_INFORMATION_UNSUPPORTED_PROPERTY |
0x400e0004 |
LDAP_BUSY |
0x8007200e |
<38> Section 3.1.4.9: Windows components that invoke R_QMGetObjectProperties indirectly via the Windows API function MQGetQueueProperties test for the following return value. For a description of the following error code, see [MS-MQMQ] section 2.4.
Name |
Value |
---|---|
MQ_ERROR |
0xc00e0001 |
<39> Section 3.1.4.10: Windows NT, Windows 2000, Windows Server 2003, and Windows Server 2008 return MQ_ERROR_ILLEGAL_PROPERTY_VT (0xc00e0019).
<40> Section 3.1.4.10: Windows applications typically invoke R_QMSetObjectProperties indirectly via the Windows API function MQSetQueueProperties. The Windows API documentation for MQSetQueueProperties includes the following error codes. For descriptions of the following error codes, see [MS-MQMQ] section 2.4. For error codes not described in [MS-MQMQ], refer to [MSDN-MQEIC].
Name |
Value |
---|---|
MQ_ERROR_ACCESS_DENIED |
0xc00e0025 |
MQ_ERROR_ILLEGAL_FORMATNAME |
0xc00e001e |
MQ_ERROR_ILLEGAL_PROPERTY_VALUE |
0xc00e0018 |
MQ_ERROR_NO_DS |
0xc00e0013 |
MQ_ERROR_PROPERTY |
0xc00e0002 |
MQ_ERROR_SERVICE_NOT_AVAILABLE |
0xc00e000b |
MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION |
0xc00e0020 |
MQ_ERROR_WRITE_NOT_ALLOWED |
0xc00e0065 |
MQ_INFORMATION_PROPERTY |
0x400e0001 |
LDAP_BUSY |
0x8007200e |
<41> Section 3.1.4.11: Windows applications typically invoke R_QMObjectPathToObjectFormat indirectly via the Windows API function MQPathNameToFormatName. The Windows API documentation for MQPathNameToFormatName includes the following error codes. For descriptions of the following error codes, see [MS-MQMQ] section 2.4. For error codes not described in [MS-MQMQ], refer to [MSDN-MQEIC].
Name |
Value |
---|---|
MQ_ERROR_FORMATNAME_BUFFER_TOO_SMALL |
0xc00e001f |
MQ_ERROR_ILLEGAL_QUEUE_PATHNAME |
0xc00e0014 |
MQ_ERROR_NO_DS |
0xc00e0013 |
MQ_ERROR_QUEUE_NOT_FOUND |
0xc00e0003 |
MQ_ERROR_SERVICE_NOT_AVAILABLE |
0xc00e000b |
LDAP_BUSY |
0x8007200e |
<42> Section 3.1.4.11: Windows components that invoke R_QMObjectPathToObjectFormat indirectly via the Windows API function MQPathNameToFormatName test for the following return value. For a description of the following error code, see [MS-MQMQ] section 2.4.
Name |
Value |
---|---|
MQ_ERROR_UNSUPPORTED_OPERATION |
0xc00e006a |
<43> Section 3.1.4.13: Windows components that invoke R_QMEnlistTransaction indirectly via the Windows API function MQBeginTransaction test for the following return value. For a description of the following error code, see [MS-MQMQ] section 2.4.
Name |
Value |
---|---|
MQ_ERROR_INSUFFICIENT_RESOURCES |
0xC00E0027 |
<44> Section 3.1.4.14: All Windows clients produce new XACTUOW values by calling the Windows RPC function UuidCreate.
<45> Section 3.1.4.17: Clients identify themselves to the server using a GUID generated at install time, and never subsequently modified.
<46> Section 3.1.4.17: These parameters are used to implement client access licensing restrictions. Such restrictions are enforced only by Windows NT, Windows 2000, and Windows Server 2003 servers. The parameters are ignored by Windows Server 2008 and Windows Server 2008 R2.
<47> Section 3.1.4.17: Windows NT, Windows 2000, and Windows Server 2003 servers can limit the number of unique callers. If the limit is exceeded, the server can take no action and can return MQ_ERROR_DEPEND_WKS_LICENSE_OVERFLOW (0xc00e0067).
<48> Section 3.1.4.17: Windows clients obtain this string from the Windows SDK function GetComputerName.
<49> Section 3.1.4.17: Client access licensing restrictions are only enforced by Windows NT, Windows 2000, and Windows Server 2003 supporting servers.
<50> Section 3.1.4.17: Applicable Windows Server releases accept the value 0x00000000 to indicate that the TCP/IP protocol sequence is used when connecting to a remote queue manager for remote read. Windows NT and Windows 2000 servers accept the value 0x00000003 to indicate that the IPX/SPX protocol sequence is used when connecting to a remote queue manager for remote read. Windows XP and later clients and Windows Server 2003 and later servers ignore the parameter.
<51> Section 3.1.4.17: Windows applications typically invoke rpc_QMOpenQueueInternal indirectly via the Windows API function MQOpenQueue. The Windows API documentation for MQOpenQueue includes the following error codes. For descriptions of the following error codes, see [MS-MQMQ] section 2.4. For error codes not described in [MS-MQMQ], refer to [MSDN-MQEIC].
Name |
Value |
---|---|
MQ_ERROR_ACCESS_DENIED |
0xc00e0025 |
MQ_ERROR_ILLEGAL_FORMATNAME |
0xc00e001e |
MQ_ERROR_NO_DS |
0xc00e0013 |
MQ_ERROR_QUEUE_NOT_FOUND |
0xc00e0003 |
MQ_ERROR_REMOTE_MACHINE_NOT_AVAILABLE |
0xc00e0069 |
MQ_ERROR_SERVICE_NOT_AVAILABLE |
0xc00e000b |
MQ_ERROR_SHARING_VIOLATION |
0xc00e0009 |
MQ_ERROR_UNSUPPORTED_ACCESS_MODE |
0xc00e0045 |
MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION |
0xc00e0020 |
<52> Section 3.1.4.18: Windows applications typically invoke rpc_ACCloseHandle indirectly via the Windows API function MQCloseQueue. The Windows API documentation for MQCloseQueue includes the following error code. For a description of the following error code, see [MS-MQMQ] section 2.4.
Name |
Value |
---|---|
MQ_ERROR_INVALID_HANDLE |
0xc00e0007 |
<53> Section 3.1.4.18: All applicable Windows Server releases invoke the [MS-MQQP] method RemoteQMCloseQueue using a parallel process, permitting immediate return of control to the client. Note that this introduces the possibility that RemoteQMCloseQueue could fail and that the client would not be informed.
<54> Section 3.1.4.19: Windows applications typically invoke rpc_ACCloseCursor indirectly via the Windows API function MQCloseCursor. The Windows API documentation for MQCloseCursor includes the following error code. For a description of the following error code, see [MS-MQMQ] section 2.4.
Name |
Value |
---|---|
MQ_ERROR_INVALID_HANDLE |
0xc00e0007 |
<55> Section 3.1.4.20: This method is implemented only on Windows NT and Windows 2000. Due to revisions to the cursor creation process, the method rpc_ACSetCursorProperties is obsolete on all other Windows versions. If the server implementation does not support rpc_ACSetCursorProperties, it takes no action and returns MQ_ERROR_ILLEGAL_OPERATION (0xc00e0064). Note that this differs from the behavior of other obsolete methods that raise MQ_ERROR_ILLEGAL_OPERATION as an RPC exception.
<56> Section 3.1.4.20: For Windows NT and Windows 2000 servers, the method rpc_ACCreateCursorEx returns MQ_INFORMATION_REMOTE_OPERATION (0x400e03e8) to the client to indicate that a different queue manager is required to create the cursor. Upon receiving this return code, a client can proceed with cursor creation by calling R_QMGetRemoteQueueName (section 3.1.4.1) to determine which queue manager to contact. For Windows Server 2003, Windows Server 2008, Windows Server 2008 R2, and Windows Server 2012, this process was revised such that rpc_ACCreateCursorEx contacts the remote queue on behalf of the client, eliminating the need for R_QMGetRemoteQueueName to exist. If invoked, R_QMGetRemoteQueueName on Windows Server 2003 takes no action and immediately raises the exception MQ_ERROR_ILLEGAL_OPERATION (0xc00e0064); R_QMGetRemoteQueueName on Windows Server 2008, Windows Server 2008 R2, and Windows Server 2012 returns RPC_S_ACCESS_DENIED (0x00000005).
<57> Section 3.1.4.21: Windows applications typically invoke rpc_ACHandleToFormatName indirectly via the Windows API function MQHandleToFormatName. The Windows API documentation for MQHandleToFormatName includes the following error codes. For descriptions of the following error codes, see [MS-MQMQ] section 2.4. For error codes not described in [MS-MQMQ], refer to [MSDN-MQEIC].
Name |
Value |
---|---|
MQ_ERROR_FORMATNAME_BUFFER_TOO_SMALL |
0xc00e001f |
MQ_ERROR_INVALID_HANDLE |
0xc00e0007 |
MQ_ERROR_SERVICE_NOT_AVAILABLE |
0xc00e000b |
MQ_ERROR_STALE_HANDLE |
0xc00e0056 |
<58> Section 3.1.4.22: Windows applications typically invoke rpc_ACPurgeQueue indirectly via the Windows API function MQPurgeQueue. The Windows API documentation for MQPurgeQueue includes the following error code. For a description of the following error code, see [MS-MQMQ] section 2.4.
Name |
Value |
---|---|
MQ_ERROR_INVALID_HANDLE |
0xc00e0007 |
<59> Section 3.1.4.23: For Windows NT and Windows 2000 servers, this value defaults to "7776000" (90 days). For Windows Server 2003 and Windows Server 2008, the default value is "345600" (4 days).
<60> Section 3.1.4.23: Applicable Windows Server releases store and retrieve these values from the registry.
<61> Section 3.1.4.23: Applicable Windows Server releases store and retrieve these values from the registry.
<62> Section 3.1.4.23: This value is supported by Windows 2000 Server operating system and later server versions and by Windows 2000 Professional and later client versions. Windows NT servers return a failure HRESULT.
<63> Section 3.1.4.23: This value is supported by Windows 2000 Server and later server versions and by Windows 2000 Professional and later client versions. Windows NT servers return a failure HRESULT.
<64> Section 3.1.4.23: Applicable Windows Server releases store and retrieve these values from the registry.
<65> Section 3.1.4.24: RPC over SPX is supported only by Windows NT and Windows 2000. This value is not supported by Windows XP or later client versions, or by Windows Server 2003 or later server versions. The server returns 0x00000000 to indicate failure.
<66> Section 3.1.4.24: RPC over SPX is supported only by Windows NT and Windows 2000. This value is not supported by Windows XP or later client versions, or by Windows Server 2003 or later server versions. The server returns 0x00000000 to indicate failure.
<67> Section 3.1.5.1: Windows applications typically invoke QMSendMessageInternalEx indirectly via the Windows API function MQSendMessage. The Windows API documentation for MQSendMessage includes the following error codes. For descriptions of the following error codes, see [MS-MQMQ] section 2.4. For error codes not described in [MS-MQMQ], refer to [MSDN-MQEIC].
Name |
Value |
---|---|
MQ_ERROR_ACCESS_DENIED |
0xc00e0025 |
MQ_ERROR_BAD_SECURITY_CONTEXT |
0xc00e0035 |
MQ_ERROR_CERTIFICATE_NOT_PROVIDED |
0xc00e006d |
MQ_ERROR_CORRUPTED_INTERNAL_CERTIFICATE |
0xc00e002d |
MQ_ERROR_CORRUPTED_PERSONAL_CERT_STORE |
0xc00e0031 |
MQ_ERROR_CORRUPTED_SECURITY_DATA |
0xc00e0030 |
MQ_ERROR_COULD_NOT_GET_USER_SID |
0xc00e0036 |
MQ_ERROR_DTC_CONNECT |
0xc00e004c |
MQ_ERROR_ILLEGAL_FORMATNAME |
0xc00e001e |
MQ_ERROR_INSUFFICIENT_RESOURCES |
0xc00e0027 |
MQ_ERROR_INVALID_CERTIFICATE |
0xc00e002c |
MQ_ERROR_INVALID_HANDLE |
0xc00e0007 |
MQ_ERROR_MESSAGE_STORAGE_FAILED |
0xc00e002a |
MQ_ERROR_NO_INTERNAL_USER_CERT |
0xc00e002f |
MQ_ERROR_PROPERTY |
0xc00e0002 |
MQ_ERROR_SERVICE_NOT_AVAILABLE |
0xc00e000b |
MQ_ERROR_STALE_HANDLE |
0xc00e0056 |
MQ_ERROR_TRANSACTION_USAGE |
0xc00e0050 |
MQ_ERROR_TRANSACTION_ENLIST |
0xc00e0058 |
MQ_ERROR_TRANSACTION_SEQUENCE |
0xc00e0051 |
MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION |
0xc00e0020 |
MQ_INFORMATION_PROPERTY |
0x400e0001 |
<68> Section 3.1.5.2: Message bodies are stored encrypted when messages reach their destination queues. Servers running Windows NT and Windows 2000 only perform message body decryption in the QMSendMessageInternalEx (section 3.1.5.1) method. If a message with an encrypted body is sent directly to a target queue via the rpc_ACSendMessageEx method, servers running Windows NT and Windows 2000 return STATUS_RETRY (0xc000022d) to indicate that the client calls QMSendMessageInternalEx instead.
<69> Section 3.1.5.2: Clients running Windows NT and Windows 2000 use MQMSG_CALG_MD5 (0x00008003) as the default hash algorithm. Clients running Windows XP 32-bit and Windows Server 2003 32-bit use MQMSG_CALG_SHA1 (0x00008004) as the default hash algorithm.
<70> Section 3.1.5.2: Clients on supported Windows platforms use MQMSG_CALG_RC2 (0x00006602) as the default encryption algorithm value.
<71> Section 3.1.5.2: The ptb.old.pulAuthProvNameLenProp field is ignored on input to send operations on Windows NT.
<72> Section 3.1.5.2: Windows applications typically invoke rpc_ACSendMessageEx indirectly via the Windows API function MQSendMessage. The Windows API documentation for MQSendMessage includes the following error codes. For descriptions of the following error codes, see [MS-MQMQ] section 2.4. For error codes not described in [MS-MQMQ], refer to [MSDN-MQEIC].
Name |
Value |
---|---|
MQ_ERROR_ACCESS_DENIED |
0xc00e0025 |
MQ_ERROR_BAD_SECURITY_CONTEXT |
0xc00e0035 |
MQ_ERROR_CERTIFICATE_NOT_PROVIDED |
0xc00e006d |
MQ_ERROR_CORRUPTED_INTERNAL_CERTIFICATE |
0xc00e002d |
MQ_ERROR_CORRUPTED_PERSONAL_CERT_STORE |
0xc00e0031 |
MQ_ERROR_CORRUPTED_SECURITY_DATA |
0xc00e0030 |
MQ_ERROR_COULD_NOT_GET_USER_SID |
0xc00e0036 |
MQ_ERROR_DTC_CONNECT |
0xc00e004c |
MQ_ERROR_ILLEGAL_FORMATNAME |
0xc00e001e |
MQ_ERROR_INSUFFICIENT_RESOURCES |
0xc00e0027 |
MQ_ERROR_INVALID_CERTIFICATE |
0xc00e002c |
MQ_ERROR_INVALID_HANDLE |
0xc00e0007 |
MQ_ERROR_MESSAGE_STORAGE_FAILED |
0xc00e002a |
MQ_ERROR_NO_INTERNAL_USER_CERT |
0xc00e002f |
MQ_ERROR_PROPERTY |
0xc00e0002 |
MQ_ERROR_SERVICE_NOT_AVAILABLE |
0xc00e000b |
MQ_ERROR_STALE_HANDLE |
0xc00e0056 |
MQ_ERROR_TRANSACTION_USAGE |
0xc00e0050 |
MQ_ERROR_TRANSACTION_ENLIST |
0xc00e0058 |
MQ_ERROR_TRANSACTION_SEQUENCE |
0xc00e0051 |
MQ_ERROR_UNSUPPORTED_FORMATNAME_OPERATION |
0xc00e0020 |
MQ_INFORMATION_PROPERTY |
0x400e0001 |
<73> Section 3.1.5.3: Windows applications typically invoke rpc_ACReceiveMessageEx indirectly via the Windows API function MQReceiveMessage. The Windows API documentation for MQReceiveMessage includes the following error codes. For descriptions of the following error codes, see [MS-MQMQ] section 2.4. For error codes not described in [MS-MQMQ], refer to [MSDN-MQEIC].
Name |
Value |
---|---|
MQ_ERROR_ACCESS_DENIED |
0xc00e0025 |
MQ_ERROR_BUFFER_OVERFLOW |
0xc00e001a |
MQ_ERROR_DTC_CONNECT |
0xc00e004c |
MQ_ERROR_FORMATNAME_BUFFER_TOO_SMALL |
0xc00e001f |
MQ_ERROR_ILLEGAL_CURSOR_ACTION |
0xc00e001c |
MQ_ERROR_INSUFFICIENT_PROPERTIES |
0xc00e003f |
MQ_ERROR_INVALID_HANDLE |
0xc00e0007 |
MQ_ERROR_IO_TIMEOUT |
0xc00e001b |
MQ_ERROR_LABEL_BUFFER_TOO_SMALL |
0xc00e005e |
MQ_ERROR_MESSAGE_ALREADY_RECEIVED |
0xc00e001d |
MQ_ERROR_OPERATION_CANCELLED |
0xc00e0008 |
MQ_ERROR_PROV_NAME_BUFFER_TOO_SMALL |
0xc00e0063 |
MQ_ERROR_PROPERTY |
0xc00e0002 |
MQ_ERROR_QUEUE_DELETED |
0xc00e005a |
MQ_ERROR_SENDER_CERT_BUFFER_TOO_SMALL |
0xc00e002b |
MQ_ERROR_SENDERID_BUFFER_TOO_SMALL |
0xc00e0022 |
MQ_ERROR_SERVICE_NOT_AVAILABLE |
0xc00e000b |
MQ_ERROR_SIGNATURE_BUFFER_TOO_SMALL |
0xc00e0062 |
MQ_ERROR_STALE_HANDLE |
0xc00e0056 |
MQ_ERROR_SYMM_KEY_BUFFER_TOO_SMALL |
0xc00e0061 |
MQ_ERROR_TRANSACTION_USAGE |
0xc00e0050 |
MQ_INFORMATION_OPERATION_PENDING |
0x400e0006 |
MQ_INFORMATION_PROPERTY |
0x400e0001 |
<74> Section 3.1.5.3: Windows components that invoke rpc_ACReceiveMessageEx indirectly via the Windows API function MQReceiveMessage test for the following return value. For a description of the following error code, see [MS-ERREF] section 2.1.
Name |
Value |
---|---|
E_OUTOFMEMORY |
0x8007000E |
<75> Section 3.1.5.4: Windows applications typically invoke rpc_ACCreateCursorEx indirectly via the Windows API function MQCreateCursor. The Windows API documentation for MQCreateCursor includes the following error codes. For descriptions of the following error codes, see [MS-MQMQ] section 2.4. For error codes not described in [MS-MQMQ], refer to [MSDN-MQEIC].
Name |
Value |
---|---|
MQ_ERROR_INVALID_HANDLE |
0xc00e0007 |
MQ_ERROR_INSUFFICIENT_RESOURCES |
0xc00e0027 |
MQ_ERROR_REMOTE_MACHINE_NOT_AVAILABLE |
0xc00e0069 |
MQ_ERROR_STALE_HANDLE |
0xc00e0056 |
<76> Section 3.1.5.4: The described behavior is for Windows Server 2003 and later server versions, and Windows Vista and later client versions. Servers running Windows NT, Windows 2000, and Windows XP behave as follows: if the given queue handle represents a queue that is NOT local (remote) to the supporting server, the server creates a cursor object and returns a handle to it via the hCursor member of pcc. Additionally, the server also sets pcc.srv_hQueue to RemoteQueueProxyHandle.RemoteContext and sets pcc.cli_pQMQueue to RemoteQueueProxyHandle.Context. Note that the value returned for pcc.cli_pQMQueue is not required to equal the RemoteQueueProxyHandle.Context; instead, the server is permitted to use any value that can be correlated to the impending invocation of rpc_ACSetCursorProperties. Abstractly, the value in RemoteQueueProxyHandle.Context is most suitable for this purpose; however, Windows NT, Windows 2000, and Windows XP correlate the subsequent call rpc_ACSetCursorProperties using a different DWORD value.
The server then returns MQ_INFORMATION_REMOTE_OPERATION (0x400e03e8). This specific return code instructs the client to contact a remote queue manager to create a remote cursor via R_QMCreateRemoteCursor and to associate the result with the local cursor handle via rpc_ACSetCursorProperties. The caller completes these operations successfully prior to using the cursor handle returned by this method.
<77> Section 4.4: In this example, the supporting server is exhibiting the behavior of Windows NT and Windows 2000 with regard to creating a cursor for a remote queue.
<78> Section 4.5: All Windows clients produce new XACTUOW ([MS-MQMQ] section 2.2.18.1.8) values by calling the Windows RPC function UuidCreate.