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.

  • Windows NT 4.0 operating system Option Pack for Windows NT Server

  • Windows 2000 operating system

  • Windows XP operating system

  • Windows Server 2003 operating system

  • Windows Vista operating system

  • Windows Server 2008 operating system

  • Windows 7 operating system

  • Windows Server 2008 R2 operating system

  • Windows 8 operating system

  • Windows Server 2012 operating system

  • Windows 8.1 operating system

  • Windows Server 2012 R2 operating system

  • Windows 10 operating system

  • Windows Server 2016 operating system

  • Windows Server operating system

  • Windows Server 2019 operating system

  • Windows Server 2022 operating system

  • Windows 11 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.3.2:  In Windows, except in Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003, the "ncacn_spx" protocol is not supported, its entry will be ignored, and the protocol selection will proceed to the next step.

<2> Section 1.7: Windows NT 4.0 Option Pack uses version 1.0 of the protocol. Otherwise Windows uses version 1.1 of the protocol.

<3> Section 2.1.1: Windows by default supports "ncacn_ip_tcp" but can be configured to support either or both of the "ncacn_spx" and "ncacn_nb_nb" protocols. However, "ncacn_spx" is only supported by Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003. The ncacn_ protocols are described in [MS-RPCE] section 2.

<4> Section 2.1.2: The usage of a specific port, instead of the one automatically selected by the endpoint mapper, is not supported by Windows NT 4.0 Option Pack, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, and Windows Server 2008.

<5> Section 2.1.3: The security level No Authentication is supported by all applicable Windows releases. In applicable Windows releases except in Windows NT 4.0 Option Pack, Windows 2000, Windows XP operating system Service Pack 1 (SP1), and Windows Server 2003 without service packs, Incoming Authentication and Mutual Authentication are supported and the security level is configurable to any of the three values.

<6> Section 2.1.3: In Windows NT 4.0 Option Pack, Windows 2000, Windows XP, Windows Server 2003, and Windows Vista releases, the callee does not check for the authentication level configuration that was set by the caller. Otherwise, applicable Windows releases require that the caller use an authentication level of RPC_C_AUTHN_LEVEL_PKT_PRIVACY or the call will be rejected.

<7> Section 2.1.3: In Windows NT 4.0 Option Pack, Windows 2000, Windows XP, Windows Server 2003, and Windows Vista releases the callee does not check for the authentication level configuration that was set by the caller. Otherwise, applicable Windows releases require that the caller use an authentication level of RPC_C_AUTHN_LEVEL_PKT_PRIVACY or the call will be rejected.

<8> Section 3.2.2.1: Applicable Windows releases calculate this value using the formula CmCancelRpcAfter/2, where the value of CmCancelRpcAfter is retrieved from the registry.  The following table specifies the registry path and key name for the location of this value, and the default value in milliseconds that Windows uses if the key is not present in the registry.

Registry Path

Key value

Default value

HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC\

CmCancelRpcAfter

12000

<9> Section 3.3.1: This object is supported only on Windows 7, Windows Server 2008 R2 operating system, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<10> Section 3.3.1: The "ncacn_spx" protocol is not supported by applicable Windows releases, except by Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003.

<11> Section 3.3.1: The usage of Server Security Settings is not supported in Windows NT 4.0 Option Pack.

<12> Section 3.3.3: The Server TCP Port local data element is not supported by Windows NT 4.0 Option Pack, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, and Windows Server 2008.

<13> Section 3.3.3: The Server TCP Port local data element is not supported by Windows NT 4.0 Option Pack, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, and Windows Server 2008.

<14> Section 3.3.3: Windows retrieves this value from the Windows registry. The following table specifies the registry path, the key name, and the default value that Windows uses if the key is not present in the registry.

Registry path

Key value

Default value

HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC\

RpcAuthnSvc

RPC_C_AUTHN_GSS_NEGOTIATE

<15> Section 3.3.4: Windows NT 4.0 Option Pack and Windows 2000 do not indicate to the RPC runtime that it is to perform such a check.

<16> Section 3.3.4.1: The expected error code 0x80000123 (E_CM_SERVER_NOT_READY) is returned by Windows, except that Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003 return 0x00000000 and set the pszGuidOut parameter to 00000000-0000-0000-0000-000000000000 to indicate that the bind was successful.

<17> Section 3.3.4.1: In Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003, when a Poke is invoked on a secondary partner, the secondary partner responds by making a BuildContext callback on the primary partner. Otherwise in applicable Windows releases a Poke can be invoked only on a primary partner. If a Poke is invoked on a secondary partner, Windows returns the 0x80070057 (E_INVALIDARG) error code.

<18> Section 3.3.4.1: On Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003, when a Poke is invoked on a secondary partner, the secondary partner responds by making a BuildContext callback on the primary partner. Otherwise in applicable Windows releases a Poke can be invoked only on a primary partner. If a Poke is invoked on a secondary partner, Windows returns the 0x80070057 (E_INVALIDARG) error code.

<19> Section 3.3.4.1: The expected error code 0x80000123 (E_CM_SERVER_NOT_READY) is returned by Windows, except that Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003 return 0x00000000 and set the pszGuidOut parameter to 00000000-0000-0000-0000-000000000000 to indicate that the bind was unsuccessful.

<20> Section 3.3.4.1: In Windows, when a Poke or PokeW call is received by a primary partner, the work of establishing the session with the subsequent BuildContext or BuildContextW call is done on a separate thread. Therefore, the call to Poke or PokeW will most likely return before the call to BuildContext or BuildContextW is made on the secondary partner; however, due to multithreading behavior, the reverse order can occur.

<21> Section 3.3.4.2: The expected error code 0x80000120 (E_CM_SESSION_DOWN) is returned by Windows, except that Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003 return 0x00000000 and set the pszGuidOut parameter to 00000000-0000-0000-0000-000000000000 to indicate that the bind was unsuccessful.

<22> Section 3.3.4.2: The expected error code 0x80000123 (E_CM_SERVER_NOT_READY) is returned by Windows, except that Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003 return 0x00000000 and set the pszGuidOut parameter to 00000000-0000-0000-0000-000000000000 to indicate that the bind was successful.

<23> Section 3.3.4.2.1: The expected error code 0x80000123 (E_CM_SERVER_NOT_READY) is returned by Windows, except that Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003 return 0x00000000 and set the pszGuidOut parameter to 00000000-0000-0000-0000-000000000000 to indicate that the bind was unsuccessful.

<24> Section 3.3.4.2.1: The BuildContextW or PokeW method is always tried first in applicable Windows releases, except by Windows NT operating system. If the BuildContextW or PokeW method fails, as indicated by an RPC_S_PROCNUM_OUT_OF_RANGE error, Windows falls back to the BuildContext or Poke method. Windows does not inspect the BIND_VERSION_SET to determine which methods are supported by the partner.

<25> Section 3.3.4.2.1: Windows NT 4.0 Option Pack, Windows 2000, and Windows XP do not support Mutual Authentication.

<26> Section 3.3.4.2.2: The expected error code 0x80000120 (E_CM_SESSION_DOWN) is returned by Windows, except that Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003 return 0x00000000 and set the pszGuidOut parameter to 00000000-0000-0000-0000-000000000000 to indicate that the bind was unsuccessful.

<27> Section 3.3.4.5: Windows does not check if the sRank value passed as a parameter is valid and returns 0x00000000 (ERROR_STATUS).

<28> Section 3.3.4.7: The expected error code 0x80000123 (E_CM_SERVER_NOT_READY) is returned by Windows, except that Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003 return 0x00000000 and set the pszGuidOut parameter to 00000000-0000-0000-0000-000000000000 to indicate that the bind was successful.

<29> Section 3.3.4.7: In Windows 2000, Windows XP, and Windows Server 2003, when a PokeW is invoked on a secondary partner, the secondary partner responds by making a BuildContextW callback on the primary partner. In applicable Windows releases, except Windows NT 4.0 Option Pack, Windows 2000, Windows XP, Windows Server 2003, and Windows Vista without service packs, a PokeW can be invoked only on a primary partner. If a PokeW is invoked on a secondary partner, Windows returns the 0x80070057 (E_INVALIDARG) error code.

<30> Section 3.3.4.8: The expected error code 0x80000120 (E_CM_SESSION_DOWN) is returned by Windows, except that Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003 return 0x00000000 and set the pszGuidOut parameter to 00000000-0000-0000-0000-000000000000 to indicate that the bind was unsuccessful.

<31> Section 3.3.4.8: The expected error code 0x80000123 (E_CM_SERVER_NOT_READY) is returned by Windows, except that Windows NT 4.0 Option Pack, Windows 2000, Windows XP, and Windows Server 2003 return 0x00000000 and set the pszGuidOut parameter to 00000000-0000-0000-0000-000000000000 to indicate that the bind was successful.

<32> Section 3.4.1: Windows calculates this value using the formula ((CmMaxNumberBindRetries + 1) / 2) * 3, where CmMaxNumberBindRetries is retrieved from the registry. The following table specifies the registry path, the key name, and the default value that Windows uses if the key is not present in the registry.

Registry path

Key name

Default value

HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC

CmMaxNumberBindRetries

8

<33> Section 3.4.1: The usage of Client Security Settings is not supported in Windows NT 4.0 Option Pack.

<34> Section 3.4.1: Windows NT 4.0 Option Pack does not support the RPC Authentication Level setting.

<35> Section 3.4.2.1: Windows retrieves this value from the registry. The following table specifies the registry path, the key name, and the default value in milliseconds that Windows uses if the key is not present in the registry.

Registry path

Key name

Default value

HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC\

CmCancelRpcAfter

12000

<36> Section 3.4.3: Windows retrieves this value from the registry. The following table specifies the registry path, the key name, and the default value that Windows uses if the key is not present in the registry.

Registry path

Key value

Default value

HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC

RpcAuthnSvc

RPC_C_AUTHN_GSS_NEGOTIATE

<37> Section 3.4.3: Applicable Windows releases always set the value of the Authentication Level to RPC_C_AUTHN_LEVEL_PKT_PRIVACY, and do not allow the user to change this value, except in Windows NT 4.0 Option Pack, Windows 2000 operating system Service Pack 1 (SP1), Windows XP, Windows Server 2003, and Windows Vista allows the user to configure this value through the Windows registry. The following table specifies the registry path, the key name, and the default value that Windows uses if the key is not present in the registry.

Registry path

Key value

Default value

HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC

RpcAuthnLevel

RPC_C_AUTHN_LEVEL_PKT_PRIVACY

<38> Section 3.4.4: The strict NDR data consistency check is indicated to the RPC runtime in Windows, except in Windows NT 4.0 Option Pack and Windows 2000.

<39> Section 5.1: Applicable Windows releases support unauthenticated RPC calls. Applicable Windows releases by default support authenticated RPC calls except on Windows NT 4.0 Option Pack, Windows 2000, and Windows XP SP1. In addition, these systems by default do not allow fallback to unauthenticated RPC calls but can be configured to do so.

<40> Section 5.1: Windows NT 4.0 Option Pack, Windows 2000, and Windows XP do not support Mutual Authentication.