3.1.4.15 R_DnssrvComplexOperation3 (Opnum 14)

The R_DnssrvComplexOperation3 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<289> implement R_DnssrvComplexOperation2 (section 3.1.4.8).

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

 LONG R_DnssrvComplexOperation3(
     [in]                                DWORD                   dwClientVersion,
     [in]                                DWORD                   dwSettingFlags,
     [in, unique, string]                LPCWSTR                 pwszServerName,
     [in, unique, string]                LPCWSTR                 pwszVirtualizationInstanceID,
     [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.

pwszVirtualizationInstanceID: A pointer to a null-terminated Unicode string that contains the name of the virtualization instance configured in the DNS server. For operations specific to a virtualization instance, this field MUST contain the name of the virtualization instance. If the value is NULL, then the API is as specified in R_DnssrvComplexOperation2 (section 3.1.4.8). Apart from the EnumVirtualizationInstances operation (section 3.1.4.3), R_DnssrvComplexOperation3 changes the behavior of the following operations: EnumZoneScopes, EnumZones2, and EnumZones (section 3.1.4.3), if these operation are called with R_DnssrvComplexOperation3 and a non-NULL pwszVirtualizationInstanceID, they are performed under the given virtualization instance.

When processing this call, the server MUST perform the same actions as for the R_DnssrvComplexOperation2 method (section 3.1.4.8) with the following exceptions: for output structure types with multiple versions, the server MUST return the structure type selected by dwClientVersion. In the event the dwClientVersion is greater than the server version, the server MUST return the highest version number known. If unable to perform the operation, returns error EPT_S_CANT_PERFORM_OP (0x000006D8) ([MS-ERREF] section 2.2).