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.