3.2.4.27 R_DhcpDeleteClass (Opnum 26)
The R_DhcpDeleteClass method deletes the user class or vendor class definition from the DHCP server.
-
DWORD R_DhcpDeleteClass( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD ReservedMustBeZero, [in, string, unique] WCHAR* ClassName );
ServerIpAddress: The IP address/host name of the DHCP server. This parameter is unused.
ReservedMustBeZero: This is of type DWORD and is reserved for future use. Currently it is not used, and any value set to this parameter will not affect the behavior of this method.
ClassName: This is a pointer to WCHAR that contains the name of the class that needs to be deleted.
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.
0x00004E4C
ERROR_DHCP_CLASS_NOT_FOUND
The class name being used is unknown or incorrect.
0x00004E79
ERROR_DHCP_DELETE_BUILTIN_CLASS
This class cannot be deleted.
The opnum field value for this method is 26.
When processing this call, the DHCP server MUST do the following:
If ClassName is NULL, return ERROR_INVALID_PARAMETER.
Validate if this method is authorized for read/write access per section 3.5.5. If not, return the error ERROR_ACCESS_DENIED.
Retrieve the DHCPv4ClassDef entry corresponding to the ClassName from the server ADM element DHCPv4ClassDefList. If the DHCPv4ClassDef entry is not found, return ERROR_DHCP_CLASS_NOT_FOUND.
If the ClassData member of the retrieved ADM element DHCPv4ClassDef contains ClassData for any of the built-in classes (section 3.1.1.8), return ERROR_DHCP_DELETE_BUILTIN_CLASS.
Delete the DHCPv4ClassDef entry and remove it from the DHCPv4ClassDefList.
Iterate through the server ADM element DHCPv4OptionDefList and retrieve the DHCPv4OptionDef entry corresponding to the class specified by ClassName. Remove this entry from the DHCPv4OptionDefList.
Iterate through the server DHCPv4ServerPolicyList ADM element, and retrieve all DHCPv4Policy entries with DHCPv4Policy.ClassName equal to that specified by the ClassName parameter. Call R_DhcpV4DeletePolicy (section 3.2.4.112) to remove these entries from DHCPv4ServerPolicyList, passing the ServerIpAddress parameter, TRUE, 0, and the retrieved DHCPv4Policy.PolicyName value as parameters to the R_DhcpV4DeletePolicy method.
Iterate through the server DHCPv4ScopePolicyList ADM element, and retrieve all DHCPv4Policy entries with DHCPv4Policy.ClassName equal to that specified by the ClassName parameter. Call R_DhcpV4DeletePolicy (section 3.2.4.112) to remove these entries from the DHCPv4ScopePolicyList, passing the ServerIpAddress parameter, FALSE, DHCPv4Scope.ScopeInfo.SubnetAddress, and the retrieved DHCPv4Policy.PolicyName value as parameters to R_DhcpV4DeletePolicy.
Iterate through the server ADM element DHCPv4ServerOptValueList and retrieve the DHCPv4OptionValue entry corresponding to the class specified by ClassName. Remove this entry from the DHCPv4ServerOptValueList. Take the same action on DHCPv4ScopeOptValueList for all DHCPv4Scope entries, on DHCPv4MScopeOptValueList for all DHCPv4MScope entries, and on DHCPv4ResvOptValueList for all DHCPv4Reservation entries.
Return ERROR_SUCCESS.
Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying RPC protocol specified in [MS-RPCE].