3.1.4.45 R_DhcpCreateClientInfoVQ (Opnum 44)

The R_DhcpCreateClientInfoVQ method sets\modifies the DHCPv4 client lease record on the DHCP server database.

 DWORD R_DhcpCreateClientInfoVQ(
   [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress,
   [in, ref] LPDHCP_CLIENT_INFO_VQ ClientInfo
 );

ServerIpAddress: The IP address/host name of the DHCP server. This parameter is unused.

ClientInfo: A pointer of type DHCP_CLIENT_INFO_VQ (section 2.2.1.2.19) structure that contains the DHCPv4 client lease record information that needs to be set on the DHCPv4 server. The caller MUST pass the ClientIPAddress and ClientHardwareAddress members when adding a DHCPv4 client lease record to the DHCPv4 server database. The ClientHardwareAddress member represents a DHCPv4 client-identifier (section 2.2.1.2.5.1). Members ClientName, ClientComment, ClientLeaseExpires, and OwnerHost are modified on the DHCPv4 client lease record identified by the ClientIPaddress member.

Return Values: A 32-bit unsigned integer value that indicates return status. A return value ERROR_SUCCESS (0x00000000) indicates that the operation was completed successfully, else it contains a Win32 error code, as specified in [MS-ERREF]. This error code value can correspond to a DHCP-specific failure, which takes a value between 20000 and 20099, or any generic failure.

Return value/code

Description

0x00000000

ERROR_SUCCESS

The call was successful.

0x00004E2D

ERROR_DHCP_JET_ERROR

An error occurred while accessing the DHCP server database.

The opnum field value for this method is 44.

When processing this call, the DHCP server MUST do the following:

  • Validate that this method is authorized for read/write access per section 3.5.5. If not, return the error ERROR_ACCESS_DENIED.

  • Validate if the DHCPv4 client's hardware address data and its length are non-NULL. If they are NULL, return the error ERROR_INVALID_PARAMETER.

  • Iterate through the server ADM element DHCPv4ScopesList, and retrieve the DHCPv4Scope ADM element entry whose IPv4 range contains the IPv4 address specified by the ClientIpAddress member of the ClientInfo parameter. In case of an error, return ERROR_INVALID_PARAMETER.

  • Create the DHCPv4 client unique ID (section 2.2.1.2.5.2) for the DHCPv4 client from the ScopeInfo.SubnetAddress ADM element of the specified DHCPv4Scope ADM element, and the DHCPv4 client-identifier that is the ClientHardwareAddress member, as specified in the ClientInfo parameter.

  • If there is a DHCPv4Client ADM element entry corresponding to this DHCPv4 client unique ID and/or a client IP address already in the DHCPv4ClientsList ADM element, return ERROR_DHCP_JET_ERROR. Otherwise, create a DHCPv4Client ADM element object and set the ClientIPAddress, ClientName, ClientComment, Status, ProbationEnds, QuarantineCapable, and ClientLeaseExpires members as specified in the ClientInfo input parameter.<40> Set the other fields of the DHCPv4Client ADM element as follows:

    • The DHCPv4Client.SubnetMask ADM element is set to ScopeInfo.SubnetAddress ADM element of the retrieved DHCPv4Scope ADM element.

    • The DHCPv4Client.ClientHardwareAddress ADM element is set to the DHCPv4 client unique ID created in previous steps.

    • The DHCPv4Client.OwnerHost.NetBiosName ADM element is set to the NetBIOS name of the DHCPv4 Server.

      The OwnerHost.IpAddress ADM element is set to the ServerIpAddress parameter in case an IP address is passed.

    • The DHCPv4Client.bClientType ADM element is set to CLIENT_TYPE_NONE.

    • The DHCPv4Client.AddressState ADM element is set to ADDRESS_STATE_ACTIVE.

    • The DHCPv4Client.SentPotExpTime ADM element is set to 0.

    • The DHCPv4Client.AckPotExpTime ADM element is set to 0.

    • The DHCPv4Client.RecvPotExpTime ADM element is set to 0.

    • The DHCPv4Client.StartTime ADM element is set to 0.

    • The DHCPv4Client.CltLastTransTime ADM element is set to 0.

    • The DHCPv4Client.LastBndUpdTime ADM element is set to 0.

    • The DHCPv4Client.flags ADM element is set to 0.

    • The DHCPv4Client.bndMsgStatus ADM element is set to 0.

    • The DHCPv4Client.PolicyName ADM element is set to NULL.

      Insert the object into the Dhcpv4Scope.DHCPv4ClientsList ADM element, and return ERROR_SUCCESS.

Exceptions Thrown: No exceptions SHOULD be thrown beyond those thrown by the underlying RPC protocol [MS-RPCE].