4.5 Creating and Deleting a DNS Record
The following example specifies how to create a DNS record representing the IPv4 address "1.2.3.4" for the host named "host1" in the existing primary zone named "example.com". The new record will have a TTL of one hour.
The client formats a DNS_RPC_RECORD structure (section 2.2.2.2.5), stored on the stack or elsewhere using a buffer at least large enough to hold the DNS_RPC_RECORD structure plus the DNS_RPC_RECORD_DATA in the Buffer member, to represent the new record data as follows:
wDataLength is set to the size of the data that will be stored in the Buffer member. In this case, because the record data will be a DNS_RPC_RECORD_A (section 2.2.2.2.4.1) structure, the value of wDataLength is set to 4.
wType is set to the desired record type (section 2.2.2.1.1), in this case DNS_TYPE_A.
dwFlags, dwSerial, dwTimeStamp, and dwReserved are set to zero.
dwTtlSeconds is set to the desired TTL value in seconds, in this case 3600 for one hour.
The client formats the Buffer member as a DNS_RPC_RECORD_A structure. The byte values 0x01, 0x02, 0x03, and 0x04 are set in the four bytes of memory starting at the offset of Buffer.
The client calls R_DnssrvUpdateRecord2 and provides the following parameters:
DNS_RPC_CURRENT_CLIENT_VER as the client version.
Zero as the settings flag.
A Unicode string containing the FQDN of the DNS server on which the operation is to be performed.
"example.com" as the zone name.
"host1" as the node name.
A pointer to the DNS_RPC_RECORD created above as the pAddRecord parameter.
A NULL pointer as the pDeleteRecord pointer.
The DNS server will return ERROR_SUCCESS if the record was successfully created or a Windows error code on failure.
To delete this DNS record, format a DNS_RPC_RECORD structure exactly as described above, and call R_DnssrvUpdateRecord2 in exactly the same way but pass NULL as the pAddRecord parameter and the DNS_RPC_RECORD pointer as the pDeleteRecord.