3.1.4.8 R_DnssrvComplexOperation2 (Opnum 7)

The R_DnssrvComplexOperation2 method is used to invoke a set of server functions specified by the caller. These functions generally return more complex structures than simple 32-bit integer values, unlike the operations accessible through R_DnssrvOperation (section 3.1.4.1). The DNS server SHOULD implement R_DnssrvComplexOperation2.

All parameters are as specified by the R_DnssrvComplexOperation method (section 3.1.4.3) with the following exceptions:

 LONG R_DnssrvComplexOperation2(
   [in]                                 handle_t               hBindingHandle,
   [in]                                 DWORD                  dwClientVersion,
   [in]                                 DWORD                  dwSettingFlags,
   [in, unique, string]                 LPCWSTR                pwszServerName,
   [in, unique, string]                 LPCSTR                 pszZone,
   [in, unique, string]                 LPCSTR                 pszOperation,
   [in]                                 DWORD                  dwTypeIn,
   [in, switch_is(dwTypeIn)]            DNSSRV_RPC_UNION       pDataIn,
   [out]                                PDWORD                 pdwTypeOut,
   [out, switch_is(*pdwTypeOut)]        DNSSRV_RPC_UNION*      ppDataOut
 );

dwClientVersion: The client version in DNS_RPC_CURRENT_CLIENT_VER (section 2.2.1.2.1) format.

dwSettingFlags: Reserved for future use only. This field MUST be set to zero by clients and ignored by servers.

Return Values: Return values and interpretations are the same as for R_DnssrvComplexOperation (section 3.1.4.3).

When processing this call, the server MUST perform the same actions as for the R_DnssrvComplexOperation method (section 3.1.4.3) except that for output structure types with multiple versions, the server MUST return the structure type selected by dwClientVersion except in the event the dwClientVersion is greater than the server version, in which case the server MUST return the highest version number known to itself.