3.2.4.35 R_DhcpServerQueryAttribute (Opnum 34)

The R_DhcpServerQueryAttribute method retrieves attribute information from the DHCP server. The caller of this function can free the memory pointed to by pDhcpAttrib by calling the function midl_user_free (section 3).

 DWORD R_DhcpServerQueryAttribute(
   [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress,
   [in] ULONG dwReserved,
   [in] DHCP_ATTRIB_ID DhcpAttribId,
   [out] LPDHCP_ATTRIB* pDhcpAttrib
 );

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

dwReserved: This flag is not used and MUST be set to 0.

DhcpAttribId: This is of type DHCP_ATTRIB_ID (section 2.2.1.1.1), specifying the attribute to be queried.

pDhcpAttrib: This is a pointer to type LPDHCP_ATTRIB (section 2.2.1.2.78) that points to a location that contains the value and the type of the queried attribute.

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 34.

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

  • If dwReserved is not 0, return ERROR_INVALID_PARAMETER.

  • Validate if this API is authorized for read access per section 3.5.4. If not then return the error ERROR_ACCESS_DENIED.

  • If DhcpAttribId doesn't match with any valid value for DHCP_ATTRIB_ID, return ERROR_NOT_SUPPORTED.

  • Allocate memory to pDhcpAttrib.

  • If DhcpAttribId is DHCP_ATTRIB_BOOL_IS_ROGUE, DHCP_ATTRIB_BOOL_IS_DYNBOOTP, DHCP_ATTRIB_BOOL_IS_BINDING_AWARE or DHCP_ATTRIB_ULONG_RESTORE_STATUS, fill it with information from the corresponding field in the server ADM element DHCPv4ServerAttributes, and return it to the caller.

  • If DhcpAttribId is DHCP_ATTRIB_BOOL_IS_ADMIN, set the fields DhcpAttribId and DhcpAttribType of pDhcpAttrib (section 2.2.1.2.78) corresponding to DHCP_ATTRIB_BOOL_IS_ADMIN. If this API is authorized for read/write access as specified in section 3.5.5, set DhcpAttribBool to TRUE, otherwise set it to FALSE. Return it to the caller.

  • If DhcpAttribId is DHCP_ATTRIB_BOOL_IS_PART_OF_DSDC, set the fields DhcpAttribId and DhcpAttribType of pDhcpAttrib corresponding to DHCP_ATTRIB_BOOL_IS_PART_OF_DSDC. Check if the DHCP server is part of a domain. If positive, set DhcpAttribBool to TRUE, otherwise set it to FALSE. Return it to the caller.

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