<div class="content" name="NetrChainSetClientAttributes" uuid="3a416e82-0299-4ff0-a25d-223f972ba1d6"><p>The <b>NetrChainSetClientAttributes</b> method SHOULD<a id="Appendix_A_Target_208"></a><a aria-label="Product behavior note 208" href="0c858a52-732a-43ec-85dd-e44b357c1898#Appendix_A_208" data-linktype="relative-path">&lt;208&gt;</a> be invoked by an <span><a href="b5e7d25a-40b2-41c8-9611-98f53358af66#gt_8b0a073b-3099-4efe-8b81-c2886b66a870" data-linktype="relative-path">RODC</a></span> 
on a normal (writable) DC to update to a client&#39;s computer account object in <span><a href="b5e7d25a-40b2-41c8-9611-98f53358af66#gt_e467d927-17bf-49c9-98d1-96ddf61ddd90" data-linktype="relative-path">Active
Directory</a></span> when it receives either the <span><b><a href="3a9ed16f-8014-45ae-80af-c0ecb06e2db9" data-linktype="relative-path">NetrServerAuthenticate3</a></b></span>
method or the <span><b><a href="7c3ad0cc-ee05-4643-b773-4d84e1d431dc" data-linktype="relative-path">NetrLogonGetDomainInfo</a></b></span>
method with updates requested. </p><dl>
<dd>
<div><pre> NTSTATUS NetrChainSetClientAttributes(
   [in, string, ref] LOGONSRV_HANDLE PrimaryName,
   [in,string,ref,range(0,256)] wchar_t* ChainedFromServerName,
   [in,string,ref,range(0,256)] wchar_t* ChainedForClientName,
   [in, ref] PNETLOGON_AUTHENTICATOR Authenticator,
   [in, out, ref] PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
   [in] DWORD dwInVersion,
   [in, ref] [switch_is(dwInVersion)] 
     NL_IN_CHAIN_SET_CLIENT_ATTRIBUTES* pmsgIn,
   [in, out, ref] DWORD* pdwOutVersion,
   [in, out, ref] [switch_is(*pdwOutVersion)] 
     NL_OUT_CHAIN_SET_CLIENT_ATTRIBUTES* pmsgOut
 );
</pre></div>
</dd></dl><p><b>PrimaryName: </b>The custom binding handle, as
defined in section <span><a href="3b224201-b531-43e2-8c79-b61f6dea8640" data-linktype="relative-path">3.5.4.1</a></span>.</p><p><b>ChainedFromServerName: </b>The null-terminated
Unicode string that contains the name of the read-only DC that issues the
request.</p><p><b>ChainedForClientName: </b>The null-terminated
Unicode string that contains the name of the client computer that called
NetrServerAuthenticate3 or NetrLogonGetDomainInfo on the RODC.</p><p><b>Authenticator: </b>A pointer to a <b>NETLOGON_AUTHENTICATOR</b>
structure, as specified in section <span><a href="76c93227-942a-4687-ab9d-9d972ffabdab" data-linktype="relative-path">2.2.1.1.5</a></span>, that
contains the client <span><a href="b5e7d25a-40b2-41c8-9611-98f53358af66#gt_e72a2c02-84a2-4ce3-b66f-86f725642dc3" data-linktype="relative-path">authenticator</a></span>.</p><p><b>ReturnAuthenticator: </b>A pointer to a <b>NETLOGON_AUTHENTICATOR</b>
structure, as specified in section 2.2.1.1.5, that contains the server return
authenticator.</p><p><b>dwInVersion: </b>One of the <span><a href="548d7519-53d1-4891-92d5-f7d240c73496" data-linktype="relative-path">NL_IN_CHAIN_SET_CLIENT_ATTRIBUTES</a></span>
union types selected based on the value of the <i>pmsgIn</i> field. The value
MUST be 1.</p><p><b>pmsgIn: </b>A pointer to an <span><a href="f4ed8790-d7e8-4ca1-8062-d25784ed79e3" data-linktype="relative-path">NL_IN_CHAIN_SET_CLIENT_ATTRIBUTES_V1</a></span>
structure that contains the values to update on the client&#39;s computer account
object in Active Directory on the normal (writable) DC.</p><p><b>pdwOutVersion: </b>A pointer to one of the <span><a href="b8491488-cbb6-452b-bab1-b0f4390bca59" data-linktype="relative-path">NL_OUT_CHAIN_SET_CLIENT_ATTRIBUTES</a></span>
union types selected based on the value of the <i>pmsgIn</i> field. The value
MUST be 1.</p><p><b>pmsgOut: </b>A pointer to an <span><a href="ab43a762-24e2-45c3-8701-1838589d80fe" data-linktype="relative-path">NL_OUT_CHAIN_SET_CLIENT_ATTRIBUTES_V1</a></span>
structure that contains information on the client workstation and the <span><a href="b5e7d25a-40b2-41c8-9611-98f53358af66#gt_9d964ddb-09d6-4a1b-b27b-42adabc07993" data-linktype="relative-path">writable
domain controller</a></span>. For how it is populated by the server, see below.</p><p><b>Return Values: </b>The method returns 0x00000000
on success.</p><p>On receiving this call, the normal (writable) DC MUST
perform the following validation steps.</p><ul><li><p><span><span> 
</span></span>Verify that the server is a normal (writable) DC machine;
otherwise, the server MUST return STATUS_NOT_SUPPORTED.</p>
</li><li><p><span><span> 
</span></span>Verify that the <i>dwInVersion</i> parameter is set to 1. All
other values are invalid and STATUS_NOT_SUPPORTED MUST be returned.</p>
</li><li><p><span><span> 
</span></span>Verify that the <i>pdwOutVersion</i> parameter is set to 1. All
other values are invalid and STATUS_NOT_SUPPORTED MUST be returned.</p>
</li><li><p><span><span> 
</span></span>Verify that the <i>Authenticator</i> passed, and compute the <i>ReturnAuthenticator</i>,
as specified in section <span><a href="da7acaa3-030b-481e-979b-f58f89389806" data-linktype="relative-path">3.1.4.5</a></span>. If the <i>Authenticator</i>
verification fails, the server MUST return STATUS_ACCESS_DENIED.</p>
<p>STATUS_ACCESS_DENIED is returned
if the RODC, <i>ChainedFromServerName</i>, does not have permission to
replicate the secrets for the client&#39;s computer account identified by <i>ChainedForClientName</i>.</p>
</li></ul><p>The return structure MUST be generated as follows:</p><ul><li><p><span><span> 
</span></span>NL_OUT_CHAIN_SET_CLIENT_ATTRIBUTES.HubName MUST be set to the <span><a href="b5e7d25a-40b2-41c8-9611-98f53358af66#gt_0334e0bd-2755-42f6-aeff-2d4a22bf4abf" data-linktype="relative-path">NetBIOS
name</a></span> of the writable domain controller.</p>
</li><li><p><span><span> 
</span></span>If NL_OUT_CHAIN_SET_CLIENT_ATTRIBUTES.OldDnsHostName is not NULL,
it MUST be set to the client&#39;s <span><a href="b5e7d25a-40b2-41c8-9611-98f53358af66#gt_604dcfcd-72f5-46e5-85c1-f3ce69956700" data-linktype="relative-path">DNS</a></span> host name, if
any. If there was a change in domain naming, this value holds the previous DNS host
name.</p>
</li><li><p><span><span> 
</span></span>If NL_OUT_CHAIN_SET_CLIENT_ATTRIBUTES.SupportedEncTypes is not
NULL, it MUST be set to the supported encryption algorithms.</p>
</li></ul></div>