3.1.4.16 R_DnssrvOperation4 (Opnum: 15)

The R_DnssrvOperation4 method is used to invoke a set of server functions specified by the caller on the virtualization instance, if specified. The DNS server SHOULD<291> implement R_DnssrvOperation4.

All parameters are as specified by the R_DnssrvOperation3 (section 3.1.4.13) method with the following exceptions.

    LONG R_DnssrvOperation4(
      [in]                       handle_t            hBindingHandle,
      [in]                       DWORD               dwClientVersion,
      [in]                       DWORD               dwSettingFlags,
      [in, unique, string]       LPCWSTR             pwszServerName,
      [in, unique, string]       LPCWSTR             pwszVirtualizationInstanceID,
      [in, unique, string]       LPCSTR              pszZone,
      [in, unique, string]       LPCWSTR             pwszZoneScopeName,
      [in]                       DWORD               dwContext,
      [in, unique, string]       LPCSTR              pszOperation,
      [in]                       DWORD               dwTypeId,
      [in, switch_is(dwTypeId)]  DNSSRV_RPC_UNION    pData
    );

pwszVirtualizationInstanceID: A pointer to a null-terminated Unicode string that contains the name of the virtualization instance configured on the DNS server in which the operation is to be performed. For operations specific to a particular virtualization instance, this field MUST contain the name of the virtualization instance. If the value is NULL then the API gives the same behavior as R_DnssrvOperation3. If the value is not NULL then pszZone MUST point to a null-terminated character string that contains the name of the zone in UTF-8 format. In this case the type of the zone pointed to by pszZone MUST be a primary zone. It MUST also be a non-autocreated zone, and a non-AD integrated zone. Apart from the CreateVirtualizationInstance, DeleteVirtualizationInstance, and UpdateVirtualizationInstance operations (section 3.1.4.1), R_DnssrvComplexOperation4 changes the behavior of the following operations: WriteDirtyZones, ZoneCreate, DeleteNode, DeleteRecordSet, WriteBackFile, PauseZone, ResumeZone, DeleteZone, ReloadZone, RefreshZone, CreateZoneScope, and DeleteZoneScope (section 3.1.4.1). If these operations are called with R_DnssrvOperation4 and a non-NULL pwszVirtualizationInstanceID, they are performed under the given virtualization instance.

Return Values: The method MUST return ERROR_SUCCESS (0x00000000) on success or a nonzero Win32 error code value if an error occurred. If unable to perform the operation, returns error EPT_S_CANT_PERFORM_OP (0x000006D8). See [MS-ERREF] section 2.2 or section 2.2.1.1.5. All error values MUST be treated the same.

When processing this call, the server MUST perform the same actions as for the R_DnssrvOperation3 method (section 3.1.4.13) except in the event that the dwClientVersion is greater than the server version, in which case the server MUST return the highest version number.