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.4: If the originating MSMQ application receives messages from a remote queue through a supporting server, the queue manager on the supporting server uses the protocol described in [MS-MQQP] but does not support this protocol.

<2> Section 1.7: Windows NT operating system, Windows 2000 operating system, and the Windows XP operating system do not support this protocol.

<3> Section 1.7: Windows Vista and later client operating systems and Windows Server 2003 and later server operating systems use Kerberos when the computer is a member of a Windows domain; otherwise, they use NTLM.

<4> Section 2.1: The Windows Server 2003 protocol client uses RPC dynamic endpoints to obtain the initial RPC binding handle. The client calls the R_GetServerPort (Opnum 0) (section 3.1.4.1) method with the initial RPC binding handle and uses the returned value to obtain a new RPC binding handle to be used for all subsequent RPC method calls on the protocol. When acting as protocol clients, Windows Vista and later client operating systems and Windows Server 2008 and later server operating systems use RPC dynamic endpoints to obtain the RPC binding handle. This handle is used for all RPC method calls on the protocol. The R_GetServerPort method is not called by the Windows Vista and later client operating systems and the Windows Server 2008 and later server operating systems when acting as protocol clients.

<5> Section 2.2.5.2: The ExtensionHeader (section 2.2.5.2) is not supported on Windows Server 2003.

<6> Section 2.2.5.3: The SubqueueHeader (section 2.2.5.3) is not supported on Windows Server 2003.

<7> Section 2.2.5.4: The DeadLetterHeader (section 2.2.5.4) is not supported on Windows Server 2003.

<8> Section 2.2.5.5: The ExtendedAddressHeader (section 2.2.5.5) is not supported on Windows Server 2003.

<9> Section 2.2.8: All Windows clients produce new XACTUOW ([MS-MQMQ] section 2.2.18.1.8) structure values by calling the Windows RPC function UuidCreate.

<10> Section 3.1.2.1: If the registry key HKLM\SOFTWARE\Microsoft\MSMQ\Parameters\RpcCancelTimeout is defined and is set to a nonzero DWORD value, Windows Vista and later client operating systems and Windows Server 2003 and later server operating systems, when acting as protocol servers, interpret this value as the RPC Call Timeout value in minutes.

<11> Section 3.1.2.2: The Windows default timeout is 5 * 60 * 1000 milliseconds (5 minutes). This default value can be overridden by setting the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\RpcCancelTimeout to the desired value, in minutes. This value cannot be set to zero.

<12> Section 3.1.4: Opnums reserved for local use apply to Windows as follows.

Opnum

Description

1

Not used by Windows

<13> Section 3.1.4.1: The Windows Server 2003 protocol client uses RPC dynamic endpoints to obtain the initial RPC binding handle. The client calls the R_GetServerPort (Opnum 0) (section 3.1.4.1) method with the initial RPC binding handle and uses the returned value to obtain a new RPC binding handle to be used for all subsequent RPC method calls on the protocol.

When acting as protocol clients, Windows Vista and later client operating systems and Windows Server 2008 and later server operating systems use RPC dynamic endpoints to obtain the RPC binding handle. This handle is used for all RPC method calls on the protocol. The R_GetServerPort method is not called by the Windows Vista and later client operating systems and the Windows Server 2008 and later server operating systems when acting as protocol clients.

<14> Section 3.1.4.2: Windows Server 2003 protocol servers limit the number of unique concurrent clients if the following DWORD registry key exists and its value is 0x00000001: HKLM\SYSTEM\CurrentControlSet\Services\LicenseInfo\FilePrint. The maximum number of unique concurrent clients permitted is taken from the DWORD registry key HKLM\System\CurrentControlSet\Services\LicenseInfo\FilePrint\ConcurrentLimit. If the number of existing unique callers is equal to this value, the R_OpenQueue (Opnum 2) (section 3.1.4.2) method throws an RPC exception MQ_ERROR_DEPEND_WKS_LICENSE_OVERFLOW (0xc00e0067).

When acting as protocol servers, Windows Vista and later client operating systems and Windows Server 2008 and later server operating systems do not enforce limits on the number of unique concurrent clients. The pClientId parameter is ignored.

<15> Section 3.1.4.2: When acting as protocol clients, Windows Vista and later client operating systems and Windows Server 2003 and later server operating systems set the fNonRoutingServer parameter value based on the registry key HKLM\Software\Windows\MSMQ\Parameters\MachineCache\MQS_Routing.

If this key exists and is set to the DWORD value 0x00000001, the parameter is set to FALSE (0x00000000); otherwise, it is set to TRUE (0x00000001).

<16> Section 3.1.4.2: When acting as a protocol client, Windows Server 2003 sets the message queuing Major Version to 5. Windows Vista and later client operating systems and Windows Server 2008 and later server operating systems protocol clients set the message queuing Major Version to 6.

When acting as protocol servers, Windows Vista and later client operating systems and Windows Server 2003 and later server operating systems ignore the message queuing Major Version parameter.

<17> Section 3.1.4.2: The Windows Server 2003 protocol client sets the message queuing Minor Version to 2.

When acting as protocol clients, Windows Vista and Windows Server 2008 set the message queuing Minor Version to 0, while Windows 7 and later client operating systems and Windows Server 2008 R2 and later server operating systems set the message queuing Minor Version to 1.

When acting as protocol servers, the Windows Vista and later client operating systems and Windows Server 2003 and later server operating systems ignore the message queuing Minor Version parameter.

<18> Section 3.1.4.2: When acting as protocol clients, Windows Vista and later client operating systems and Windows Server 2003 and later server operating systems set the message queuing BuildNumber to a build-specific number.

When acting as protocol servers, Windows Vista and later client operating systems and Windows Server 2003 and later server operating systems ignore the message queuing BuildNumber parameter.

<19> Section 3.1.4.2: The Windows Server 2003 protocol server minimum RPC authentication level is determined as follows:

  • RPC_C_AUTHN_LEVEL_NONE, if any of the following conditions is true

    • The fWorkgroup parameter is TRUE.

    • The registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\NewRemoteReadServerAllowNoneSecurityClient exists and is set to any DWORD value other than 0x00000000, and the Anonymous Logon account is granted Peek or Receive permissions on the queue being accessed.

    • The registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\NewRemoteReadServerDenyWorkgroupClient is set to the DWORD value 0x00000000 or does not exist.

  • RPC_C_AUTHN_LEVEL_PKT_INTEGRITY, if the registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\DebugRpc exists and is set to any DWORD value other than 0x00000000.

  • RPC_C_AUTHN_LEVEL_PKT_PRIVACY otherwise.

When acting as protocol servers, Windows Vista and later client operating systems and Windows Server 2008 and later server operating systems have their minimum RPC authentication level determined as follows:

  • RPC_C_AUTHN_LEVEL_NONE, if the registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\AllowNonauthenticatedRpc exists and is set to any DWORD value other than 0x00000000 and any of the following conditions is true:

    • The fWorkgroup parameter is TRUE.

    • The registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\NewRemoteReadServerDenyWorkgroupClient is set to the DWORD value 0x00000000 or does not exist.

  • RPC_C_AUTHN_LEVEL_NONE, if the registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\NewRemoteReadServerAllowNoneSecurityClient exists and is set to any DWORD value other than 0x00000000, and the Anonymous Logon account is granted Peek or Receive permissions on the queue being accessed.

  • RPC_C_AUTHN_LEVEL_PKT_INTEGRITY, if the registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\DebugRpc exists and is set to any DWORD value other than 0x00000000.

  • RPC_C_AUTHN_LEVEL_PKT_PRIVACY otherwise.

<20> Section 3.1.4.10: R_MoveMessage (Opnum 10) (section 3.1.4.10) is not implemented on Windows Server 2003.

<21> Section 3.1.4.11: The R_OpenQueueForMove (Opnum 11) (section 3.1.4.11) method is not implemented on Windows Server 2003.

<22> Section 3.1.4.11: When acting as protocol clients, Windows Vista and later client operating systems and Windows Server 2003 and later server operating systems set the fNonRoutingServer parameter value based on the registry key HKLM\Software\Windows\MSMQ\Parameters\MachineCache\MQS_Routing.

If this key exists and is set to the DWORD value 0x00000001, the parameter is set to FALSE (0x00000000); otherwise, it is set to TRUE (0x00000001).

<23> Section 3.1.4.11: The Windows Server 2003 protocol client sets the message queuing Major Version to 5. When acting as protocol clients, Windows Vista and later client operating systems and Windows Server 2008 and later server operating systems set the message queuing Major version to 6.

When acting as protocol servers, Windows Vista and later client operating systems and Windows Server 2003 and later server operating systems ignore the message queuing Major Version parameter.

<24> Section 3.1.4.11: The Windows Server 2003 protocol client sets the message queuing Minor Version to 2.

The Windows Vista and Windows Server 2008 protocol clients set the message queuing Minor Version to 0.

When acting as protocol clients, Windows 7 and later client operating systems and Windows Server 2008 R2 and later server operating systems set the message queuing Minor Version to 1.

When acting as protocol servers, Windows Vista and later client operating systems and Windows Server 2003 and later server operating systems ignore the message queuing Minor Version parameter.

<25> Section 3.1.4.11: When acting as protocol clients, Windows Vista and later client operating systems and Windows Server 2003 and later server operating systems set the message queuing BuildNumber to a build-specific number.

When acting as protocol servers, Windows Vista and later client operating systems and Windows Server 2003 and later server operating systems ignore the message queuing BuildNumber parameter.

<26> Section 3.1.4.11: The Windows Server 2003 protocol server minimum RPC authentication level is determined as follows:

  • RPC_C_AUTHN_LEVEL_NONE, if any of the following conditions is true.

    • The fWorkgroup parameter is TRUE.

    • The registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\NewRemoteReadServerAllowNoneSecurityClient exists and is set to any DWORD value other than 0x00000000, and the Anonymous Logon account is granted Peek or Receive permissions on the queue being accessed.

    • The registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\NewRemoteReadServerDenyWorkgroupClient is set to the DWORD value 0x00000000 or does not exist.

  • RPC_C_AUTHN_LEVEL_PKT_INTEGRITY, if the registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\DebugRpc exists and is set to any DWORD value other than 0x00000000.

  • RPC_C_AUTHN_LEVEL_PKT_PRIVACY otherwise.

When acting as protocol servers, the minimum RPC authentication level for Windows Vista and later client operating systems and Windows Server 2008 and later server operating systems is determined as follows:

  • RPC_C_AUTHN_LEVEL_NONE, if the registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\AllowNonauthenticatedRpc exists and is set to any DWORD value other than 0x00000000 and any of the following conditions is true:

    • The fWorkgroup parameter is TRUE.

    • The registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\NewRemoteReadServerDenyWorkgroupClient is set to the DWORD value 0x00000000 or does not exist.

  • RPC_C_AUTHN_LEVEL_NONE, if the registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\NewRemoteReadServerAllowNoneSecurityClient exists and is set to any DWORD value other than 0x00000000, and the Anonymous Logon account is granted Peek or Receive permissions on the queue being accessed.

  • RPC_C_AUTHN_LEVEL_PKT_INTEGRITY, if the registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\DebugRpc exists and is set to any DWORD value other than 0x00000000.

  • RPC_C_AUTHN_LEVEL_PKT_PRIVACY otherwise.

<27> Section 3.1.4.12: The R_QMEnlistRemoteTransaction (Opnum 12) (section 3.1.4.12) method is not implemented on Windows Server 2003.

<28> Section 3.1.4.12: A server running Windows Vista and later client operating systems or Windows Server 2008 and later server operating systems ignores the pQueueFormat parameter.

<29> Section 3.1.4.13: The R_StartTransactionalReceive (Opnum 13) (section 3.1.4.13) method is not implemented on Windows Server 2003.

<30> Section 3.1.4.14: R_SetUserAcknowledgementClass (Opnum 14) (section 3.1.4.14) is not implemented on Windows Server 2003.

<31> Section 3.1.4.15: The R_EndTransactionalReceive (Opnum 15) (section 3.1.4.15) method is not implemented on Windows Server 2003.

<32> Section 3.2.4.1: The Windows Server 2003 protocol client uses RPC dynamic endpoints to obtain the initial RPC binding handle. The client calls the R_GetServerPort (Opnum 0) (section 3.1.4.1) method with the initial RPC binding handle and uses the returned value to obtain a new RPC binding handle to be used for all subsequent RPC method calls on the protocol. The Windows Vista and Windows Server 2008 protocol clients use RPC dynamic endpoints to obtain the RPC binding handle. This handle is used for all RPC method calls on the protocol. The R_GetServerPort method is not called by the Windows Vista or Windows Server 2008 client.

<33> Section 3.2.4.1: The Windows Server 2003 protocol client uses RPC dynamic endpoints to obtain the initial RPC binding handle. The client calls the R_GetServerPort (Opnum 0) (section 3.1.4.1) method with the initial RPC binding handle and uses the returned value to obtain a new RPC binding handle to be used for all subsequent RPC method calls on the protocol. The Windows Vista and Windows Server 2008 clients use RPC dynamic endpoints to obtain the RPC binding handle. This handle is used for all RPC method calls on the protocol. The R_GetServerPort method is not called by the Windows Vista or Windows Server 2008 client.

<34> Section 3.2.4.4.1: When acting as protocol clients, Windows Vista and later client operating systems and Windows Server 2003 and later server operating systems return the message to the message queuing application with an MQ_OK (0x00000000) status even if the call to the R_EndReceive (Opnum 9) (section 3.1.4.9) method fails.

<35> Section 3.2.4.10.1: When acting as protocol clients, Windows Vista and later client operating systems and Windows Server 2003 and later server operating systems return the message to the message queuing application with an MQ_OK (0x00000000) status even if the call to the R_EndReceive (Opnum 9) (section 3.1.4.9) method fails.

<36> Section 3.2.4.12: When acting as protocol clients, Windows Vista and later client operating systems and Windows Server 2003 and later server operating systems do not cancel pending requests associated with open cursor handles.

<37> Section 3.2.4.13: When acting as protocol clients, Windows Vista and later client operating systems and Windows Server 2003 and later server operating systems do not cancel pending requests or close associated cursor handles.

<38> Section 5.1: The minimum RPC authentication level for Windows Server 2003 protocol server is determined as follows:

  • RPC_C_AUTHN_LEVEL_NONE, if any of the following conditions is true.

    • The fWorkgroup parameter is TRUE.

    • The registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\NewRemoteReadServerAllowNoneSecurityClient exists and is set to any DWORD value other than 0x00000000, and the Anonymous Logon account is granted Peek or Receive permissions on the queue being accessed.

    • The registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\NewRemoteReadServerDenyWorkgroupClient is set to the DWORD value 0x00000000 or does not exist.

  • RPC_C_AUTHN_LEVEL_PKT_INTEGRITY, if the registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\DebugRpc exists and is set to any DWORD value other than 0x00000000.

  • RPC_C_AUTHN_LEVEL_PKT_PRIVACY otherwise.

When acting as protocol servers, the minimum RPC authentication level for Windows Vista and later client operating systems and Windows Server 2008 and later server operating systems is determined as follows:

  • RPC_C_AUTHN_LEVEL_NONE, if the registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\AllowNonauthenticatedRpc exists and is set to any DWORD value other than 0x00000000 and any of the following conditions is true.

    • The fWorkgroup parameter is TRUE.

    • The registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\NewRemoteReadServerDenyWorkgroupClient is set to the DWORD value 0x00000000 or does not exist.

  • RPC_C_AUTHN_LEVEL_NONE, if the registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\NewRemoteReadServerAllowNoneSecurityClient exists and is set to any DWORD value other than 0x00000000, and the Anonymous Logon account is granted Peek or Receive permissions on the queue being accessed.

  • RPC_C_AUTHN_LEVEL_PKT_INTEGRITY, if the registry key HKLM\Software\Microsoft\MSMQ\Parameters\security\DebugRpc exists and is set to any DWORD value other than 0x00000000.

  • RPC_C_AUTHN_LEVEL_PKT_PRIVACY otherwise.