.pragma list(push, 0)
ifndef _DHCPSAPI_
define _DHCPSAPI_

.pragma comment(lib, dhcpsapi)

include winapifamily.inc

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

ifndef _DHCP_

DHCP_IP_ADDRESS		typedef DWORD
PDHCP_IP_ADDRESS	typedef ptr DWORD
LPDHCP_IP_ADDRESS	typedef ptr DWORD
DHCP_OPTION_ID		typedef DWORD

DATE_TIME		STRUC
dwLowDateTime		dd ?
dwHighDateTime		dd ?
DATE_TIME		ENDS
PDATE_TIME		typedef ptr DATE_TIME
LPDATE_TIME		typedef ptr DATE_TIME


endif

ERROR_DHCP_REGISTRY_INIT_FAILED equ 0x00004E20
ERROR_DHCP_DATABASE_INIT_FAILED equ 0x00004E21
ERROR_DHCP_RPC_INIT_FAILED equ 0x00004E22
ERROR_DHCP_NETWORK_INIT_FAILED equ 0x00004E23
ERROR_DHCP_SUBNET_EXITS equ 0x00004E24
ERROR_DHCP_SUBNET_NOT_PRESENT equ 0x00004E25
ERROR_DHCP_PRIMARY_NOT_FOUND equ 0x00004E26
ERROR_DHCP_ELEMENT_CANT_REMOVE equ 0x00004E27
ERROR_DHCP_OPTION_EXITS equ 0x00004E29
ERROR_DHCP_OPTION_NOT_PRESENT equ 0x00004E2A
ERROR_DHCP_ADDRESS_NOT_AVAILABLE equ 0x00004E2B
ERROR_DHCP_RANGE_FULL	equ 0x00004E2C
ERROR_DHCP_JET_ERROR	equ 0x00004E2D
ERROR_DHCP_CLIENT_EXISTS equ 0x00004E2E
ERROR_DHCP_INVALID_DHCP_MESSAGE equ 0x00004E2F
ERROR_DHCP_INVALID_DHCP_CLIENT equ 0x00004E30
ERROR_DHCP_SERVICE_PAUSED equ 0x00004E31
ERROR_DHCP_NOT_RESERVED_CLIENT equ 0x00004E32
ERROR_DHCP_RESERVED_CLIENT equ 0x00004E33
ERROR_DHCP_RANGE_TOO_SMALL equ 0x00004E34
ERROR_DHCP_IPRANGE_EXITS equ 0x00004E35
ERROR_DHCP_RESERVEDIP_EXITS equ 0x00004E36
ERROR_DHCP_INVALID_RANGE equ 0x00004E37
ERROR_DHCP_RANGE_EXTENDED equ 0x00004E38
ERROR_EXTEND_TOO_SMALL	equ 0x00004E39
WARNING_EXTENDED_LESS	equ 0x00004E3A
ERROR_DHCP_JET_CONV_REQUIRED equ 0x00004E3B
ERROR_SERVER_INVALID_BOOT_FILE_TABLE equ 0x00004E3C
ERROR_SERVER_UNKNOWN_BOOT_FILE_NAME equ 0x00004E3D
ERROR_DHCP_SUPER_SCOPE_NAME_TOO_LONG equ 0x00004E3E
ERROR_DHCP_IP_ADDRESS_IN_USE equ 0x00004E40
ERROR_DHCP_LOG_FILE_PATH_TOO_LONG equ 0x00004E41
ERROR_DHCP_UNSUPPORTED_CLIENT equ 0x00004E42
ERROR_DHCP_JET97_CONV_REQUIRED equ 0x00004E44
ERROR_DHCP_ROGUE_INIT_FAILED equ 0x00004E45
ERROR_DHCP_ROGUE_SAMSHUTDOWN equ 0x00004E46
ERROR_DHCP_ROGUE_NOT_AUTHORIZED equ 0x00004E47
ERROR_DHCP_ROGUE_DS_UNREACHABLE equ 0x00004E48
ERROR_DHCP_ROGUE_DS_CONFLICT equ 0x00004E49
ERROR_DHCP_ROGUE_NOT_OUR_ENTERPRISE equ 0x00004E4A
ERROR_DHCP_ROGUE_STANDALONE_IN_DS equ 0x00004E4B
ERROR_DHCP_CLASS_NOT_FOUND equ 0x00004E4C
ERROR_DHCP_CLASS_ALREADY_EXISTS equ 0x00004E4D
ERROR_DHCP_SCOPE_NAME_TOO_LONG equ 0x00004E4E
ERROR_DHCP_DEFAULT_SCOPE_EXITS equ 0x00004E4F
ERROR_DHCP_CANT_CHANGE_ATTRIBUTE equ 0x00004E50
ERROR_DHCP_IPRANGE_CONV_ILLEGAL equ 0x00004E51
ERROR_DHCP_NETWORK_CHANGED equ 0x00004E52
ERROR_DHCP_CANNOT_MODIFY_BINDINGS equ 0x00004E53
ERROR_DHCP_SUBNET_EXISTS equ 0x00004E54
ERROR_DHCP_MSCOPE_EXISTS equ 0x00004E55
ERROR_MSCOPE_RANGE_TOO_SMALL equ 0x00004E56
ERROR_DHCP_EXEMPTION_EXISTS equ 0x00004E57
ERROR_DHCP_EXEMPTION_NOT_PRESENT equ 0x00004E58
ERROR_DHCP_INVALID_PARAMETER_OPTION32 equ 0x00004E59
ERROR_DDS_NO_DS_AVAILABLE equ 0x00004E66
ERROR_DDS_NO_DHCP_ROOT	equ 0x00004E67
ERROR_DDS_UNEXPECTED_ERROR equ 0x00004E68
ERROR_DDS_TOO_MANY_ERRORS equ 0x00004E69
ERROR_DDS_DHCP_SERVER_NOT_FOUND equ 0x00004E6A
ERROR_DDS_OPTION_ALREADY_EXISTS equ 0x00004E6B
ERROR_DDS_OPTION_DOES_NOT_EXIST equ 0x00004E6C
ERROR_DDS_CLASS_EXISTS	equ 0x00004E6D
ERROR_DDS_CLASS_DOES_NOT_EXIST equ 0x00004E6E
ERROR_DDS_SERVER_ALREADY_EXISTS equ 0x00004E6F
ERROR_DDS_SERVER_DOES_NOT_EXIST equ 0x00004E70
ERROR_DDS_SERVER_ADDRESS_MISMATCH equ 0x00004E71
ERROR_DDS_SUBNET_EXISTS equ 0x00004E72
ERROR_DDS_SUBNET_HAS_DIFF_SSCOPE equ 0x00004E73
ERROR_DDS_SUBNET_NOT_PRESENT equ 0x00004E74
ERROR_DDS_RESERVATION_NOT_PRESENT equ 0x00004E75
ERROR_DDS_RESERVATION_CONFLICT equ 0x00004E76
ERROR_DDS_POSSIBLE_RANGE_CONFLICT equ 0x00004E77
ERROR_DDS_RANGE_DOES_NOT_EXIST equ 0x00004E78
ERROR_DHCP_DELETE_BUILTIN_CLASS equ 0x00004E79
ERROR_DHCP_INVALID_SUBNET_PREFIX equ 0x00004E7B
ERROR_DHCP_INVALID_DELAY equ 0x00004E7C
ERROR_DHCP_LINKLAYER_ADDRESS_EXISTS equ 0x00004E7D
ERROR_DHCP_LINKLAYER_ADDRESS_RESERVATION_EXISTS equ 0x00004E7E
ERROR_DHCP_LINKLAYER_ADDRESS_DOES_NOT_EXIST equ 0x00004E7F
ERROR_DHCP_HARDWARE_ADDRESS_TYPE_ALREADY_EXEMPT equ 0x00004E85
ERROR_DHCP_UNDEFINED_HARDWARE_ADDRESS_TYPE equ 0x00004E86
ERROR_DHCP_OPTION_TYPE_MISMATCH equ 0x00004E87
ERROR_DHCP_POLICY_BAD_PARENT_EXPR equ 0x00004E88
ERROR_DHCP_POLICY_EXISTS equ 0x00004E89
ERROR_DHCP_POLICY_RANGE_EXISTS equ 0x00004E8A
ERROR_DHCP_POLICY_RANGE_BAD equ 0x00004E8B
ERROR_DHCP_RANGE_INVALID_IN_SERVER_POLICY equ 0x00004E8C
ERROR_DHCP_INVALID_POLICY_EXPRESSION equ 0x00004E8D
ERROR_DHCP_INVALID_PROCESSING_ORDER equ 0x00004E8E
ERROR_DHCP_POLICY_NOT_FOUND equ 0x00004E8F
ERROR_SCOPE_RANGE_POLICY_RANGE_CONFLICT equ 0x00004E90

ERROR_DHCP_FO_SCOPE_ALREADY_IN_RELATIONSHIP equ 0x00004E91
ERROR_DHCP_FO_RELATIONSHIP_EXISTS equ 0x00004E92

ERROR_DHCP_FO_RELATIONSHIP_DOES_NOT_EXIST equ 0x00004E93
ERROR_DHCP_FO_SCOPE_NOT_IN_RELATIONSHIP equ 0x00004E94
ERROR_DHCP_FO_RELATION_IS_SECONDARY equ 0x00004E95
ERROR_DHCP_FO_NOT_SUPPORTED equ 0x00004E96
ERROR_DHCP_FO_TIME_OUT_OF_SYNC equ 0x00004E97
ERROR_DHCP_FO_STATE_NOT_NORMAL equ 0x00004E98
ERROR_DHCP_NO_ADMIN_PERMISSION equ 0x00004E99

ERROR_DHCP_SERVER_NOT_REACHABLE equ 0x00004E9A
ERROR_DHCP_SERVER_NOT_RUNNING equ 0x00004E9B
ERROR_DHCP_SERVER_NAME_NOT_RESOLVED equ 0x00004E9C
ERROR_DHCP_FO_RELATIONSHIP_NAME_TOO_LONG equ 0x00004E9D
ERROR_DHCP_REACHED_END_OF_SELECTION equ 0x00004E9E
ERROR_DHCP_FO_ADDSCOPE_LEASES_NOT_SYNCED equ 0x00004E9F
ERROR_DHCP_FO_MAX_RELATIONSHIPS equ 0x00004EA0
ERROR_DHCP_FO_IPRANGE_TYPE_CONV_ILLEGAL equ 0x00004EA1
ERROR_DHCP_FO_MAX_ADD_SCOPES equ 0x00004EA2
ERROR_DHCP_FO_BOOT_NOT_SUPPORTED equ 0x00004EA3
ERROR_DHCP_FO_RANGE_PART_OF_REL equ 0x00004EA4
ERROR_DHCP_FO_SCOPE_SYNC_IN_PROGRESS equ 0x00004EA5
ERROR_DHCP_FO_FEATURE_NOT_SUPPORTED equ 0x00004EA6
ERROR_DHCP_POLICY_FQDN_RANGE_UNSUPPORTED equ 0x00004EA7
ERROR_DHCP_POLICY_FQDN_OPTION_UNSUPPORTED equ 0x00004EA8
ERROR_DHCP_POLICY_EDIT_FQDN_UNSUPPORTED equ 0x00004EA9
ERROR_LAST_DHCP_SERVER_ERROR equ 0x00004EBA

DHCP_IP_MASK		typedef DWORD
DHCP_RESUME_HANDLE	typedef DWORD

DHCP_IP_RANGE		STRUC
StartAddress		DHCP_IP_ADDRESS ?
EndAddress		DHCP_IP_ADDRESS ?
DHCP_IP_RANGE		ENDS
LPDHCP_IP_RANGE		typedef ptr DHCP_IP_RANGE


DHCP_BINARY_DATA	STRUC
DataLength		dd ?
Data			ptr BYTE ?
DHCP_BINARY_DATA	ENDS
LPDHCP_BINARY_DATA	typedef ptr DHCP_BINARY_DATA

DHCP_CLIENT_UID		typedef DHCP_BINARY_DATA

DHCP_HOST_INFO		STRUC
IpAddress		DHCP_IP_ADDRESS ?
NetBiosName		LPWSTR ?
HostName		LPWSTR ?
DHCP_HOST_INFO		ENDS
LPDHCP_HOST_INFO	typedef ptr DHCP_HOST_INFO


.enum DHCP_FORCE_FLAG {
    DhcpFullForce,
    DhcpNoForce
    }

DWORD_DWORD		STRUC
DWord1			dd ?
DWord2			dd ?
DWORD_DWORD		ENDS
LPDWORD_DWORD		typedef ptr DWORD_DWORD

.enum DHCP_SUBNET_STATE {
    DhcpSubnetEnabled = 0,
    DhcpSubnetDisabled,
    DhcpSubnetEnabledSwitched,
    DhcpSubnetDisabledSwitched,
    DhcpSubnetInvalidState
    }


DHCP_SUBNET_INFO	STRUC
SubnetAddress		DHCP_IP_ADDRESS ?
SubnetMask		DHCP_IP_MASK ?
SubnetName		LPWSTR ?
SubnetComment		LPWSTR ?
PrimaryHost		DHCP_HOST_INFO <>
SubnetState		DHCP_SUBNET_STATE ?
DHCP_SUBNET_INFO	ENDS
LPDHCP_SUBNET_INFO	typedef ptr DHCP_SUBNET_INFO

DHCP_SUBNET_INFO_VQ_FLAG_QUARANTINE equ (1 SHL 0)

DHCP_SUBNET_INFO_VQ	STRUC
SubnetAddress		DHCP_IP_ADDRESS ?
SubnetMask		DHCP_IP_MASK ?
SubnetName		LPWSTR ?
SubnetComment		LPWSTR ?
PrimaryHost		DHCP_HOST_INFO <>
SubnetState		DHCP_SUBNET_STATE ?
QuarantineOn		dd ?
Reserved1		dd ?
Reserved2		dd ?
Reserved3		INT64 ?
Reserved4		INT64 ?
DHCP_SUBNET_INFO_VQ	ENDS
LPDHCP_SUBNET_INFO_VQ	typedef ptr DHCP_SUBNET_INFO_VQ


DHCP_IP_ARRAY		STRUC
NumElements		dd ?
Elements		LPDHCP_IP_ADDRESS ?
DHCP_IP_ARRAY		ENDS
LPDHCP_IP_ARRAY		typedef ptr DHCP_IP_ARRAY

DHCP_IP_CLUSTER		STRUC
ClusterAddress		DHCP_IP_ADDRESS ?
ClusterMask		dd ?
DHCP_IP_CLUSTER		ENDS
LPDHCP_IP_CLUSTER	typedef ptr DHCP_IP_CLUSTER

DHCP_IP_RESERVATION	STRUC
ReservedIpAddress	DHCP_IP_ADDRESS ?
ReservedForClient	ptr DHCP_CLIENT_UID ?
DHCP_IP_RESERVATION	ENDS
LPDHCP_IP_RESERVATION	typedef ptr DHCP_IP_RESERVATION

.enum DHCP_SUBNET_ELEMENT_TYPE_V5 {
    DhcpIpRanges,
    DhcpSecondaryHosts,
    DhcpReservedIps,
    DhcpExcludedIpRanges,
    DhcpIpUsedClusters,
    DhcpIpRangesDhcpOnly,
    DhcpIpRangesDhcpBootp,
    DhcpIpRangesBootpOnly,
    }

DHCP_SUBNET_ELEMENT_TYPE typedef DHCP_SUBNET_ELEMENT_TYPE_V5

ELEMENT_MASK macro E
	exitm<((((E) LE DhcpIpRangesBootpOnly) AND (DhcpIpRangesDhcpOnly LE (E)))?(0):(E))>
	endm

DHCP_SUBNET_ELEMENT_DATA STRUC
ElementType		DHCP_SUBNET_ELEMENT_TYPE ?
UNION Element
IpRange			LPDHCP_IP_RANGE ?
SecondaryHost		LPDHCP_HOST_INFO ?
ReservedIp		LPDHCP_IP_RESERVATION ?
ExcludeIpRange		LPDHCP_IP_RANGE ?
IpUsedCluster		LPDHCP_IP_CLUSTER ?
ENDS
DHCP_SUBNET_ELEMENT_DATA ENDS
LPDHCP_SUBNET_ELEMENT_DATA typedef ptr DHCP_SUBNET_ELEMENT_DATA

DHCP_SUBNET_ELEMENT_UNION UNION
IpRange			LPDHCP_IP_RANGE ?
SecondaryHost		LPDHCP_HOST_INFO ?
ReservedIp		LPDHCP_IP_RESERVATION ?
ExcludeIpRange		LPDHCP_IP_RANGE ?
IpUsedCluster		LPDHCP_IP_CLUSTER ?
DHCP_SUBNET_ELEMENT_UNION ENDS

if NOT defined(MIDL_PASS)
LPDHCP_SUBNET_ELEMENT_UNION typedef ptr DHCP_SUBNET_ELEMENT_UNION
endif

DHCP_SUBNET_ELEMENT_INFO_ARRAY	STRUC
NumElements		dd ?
Elements		LPDHCP_SUBNET_ELEMENT_DATA ?
DHCP_SUBNET_ELEMENT_INFO_ARRAY ENDS
LPDHCP_SUBNET_ELEMENT_INFO_ARRAY typedef ptr DHCP_SUBNET_ELEMENT_INFO_ARRAY

DHCP_IPV6_ADDRESS	STRUC
HighOrderBits		ULONGLONG ?
LowOrderBits		ULONGLONG ?
DHCP_IPV6_ADDRESS	ENDS
LPDHCP_IPV6_ADDRESS	typedef ptr DHCP_IPV6_ADDRESS
PDHCP_IPV6_ADDRESS	typedef ptr DHCP_IPV6_ADDRESS

DHCP_RESUME_IPV6_HANDLE typedef DHCP_IPV6_ADDRESS


MAX_PATTERN_LENGTH	equ 255
MAC_ADDRESS_LENGTH	equ 6
HWTYPE_ETHERNET_10MB	equ 1

.enum DHCP_FILTER_LIST_TYPE {
    Deny,
    Allow
    }

DHCP_ADDR_PATTERN	STRUC
MatchHWType		BOOL ?
HWType			db ?
IsWildcard		BOOL ?
Length			db ?
Pattern			db MAX_PATTERN_LENGTH dup(?)
DHCP_ADDR_PATTERN	ENDS
LPDHCP_ADDR_PATTERN	typedef ptr DHCP_ADDR_PATTERN

DHCP_FILTER_ADD_INFO	STRUC
AddrPatt		DHCP_ADDR_PATTERN <>
_Comment		LPWSTR ?
ListType		DHCP_FILTER_LIST_TYPE ?
DHCP_FILTER_ADD_INFO	ENDS
LPDHCP_FILTER_ADD_INFO	typedef ptr DHCP_FILTER_ADD_INFO

DHCP_FILTER_GLOBAL_INFO STRUC
EnforceAllowList	BOOL ?
EnforceDenyList		BOOL ?
DHCP_FILTER_GLOBAL_INFO ENDS
LPDHCP_FILTER_GLOBAL_INFO typedef ptr DHCP_FILTER_GLOBAL_INFO

DHCP_FILTER_RECORD	STRUC
AddrPatt		DHCP_ADDR_PATTERN <>
_Comment		LPWSTR ?
DHCP_FILTER_RECORD	ENDS
LPDHCP_FILTER_RECORD	typedef ptr DHCP_FILTER_RECORD

DHCP_FILTER_ENUM_INFO	STRUC
NumElements		dd ?
pEnumRecords		LPDHCP_FILTER_RECORD ?
DHCP_FILTER_ENUM_INFO	ENDS
LPDHCP_FILTER_ENUM_INFO typedef ptr DHCP_FILTER_ENUM_INFO


.enum DHCP_OPTION_DATA_TYPE {
    DhcpByteOption,
    DhcpWordOption,
    DhcpDWordOption,
    DhcpDWordDWordOption,
    DhcpIpAddressOption,
    DhcpStringDataOption,
    DhcpBinaryDataOption,
    DhcpEncapsulatedDataOption,
    DhcpIpv6AddressOption
    }


DHCP_OPTION_DATA_ELEMENT  STRUC
OptionType		DHCP_OPTION_DATA_TYPE ?
UNION Element
ByteOption		db ?
WordOption		dw ?
DWordOption		dd ?
DWordDWordOption	dd ?
IpAddressOption		DHCP_IP_ADDRESS ?
StringDataOption	LPWSTR ?
BinaryDataOption	DHCP_BINARY_DATA <>
EncapsulatedDataOption	DHCP_BINARY_DATA <>
Ipv6AddressDataOption	LPWSTR ?
ENDS
DHCP_OPTION_DATA_ELEMENT ENDS
LPDHCP_OPTION_DATA_ELEMENT typedef ptr DHCP_OPTION_DATA_ELEMENT

DHCP_OPTION_ELEMENT_UNION UNION
ByteOption		db ?
WordOption		dw ?
DWordOption		dd ?
DWordDWordOption	dd ?
IpAddressOption		DHCP_IP_ADDRESS ?
StringDataOption	LPWSTR ?
BinaryDataOption	DHCP_BINARY_DATA <>
EncapsulatedDataOption	DHCP_BINARY_DATA <>
Ipv6AddressDataOption	LPWSTR ?
DHCP_OPTION_ELEMENT_UNION ENDS

if NOT defined(MIDL_PASS)
LPDHCP_OPTION_ELEMENT_UNION typedef ptr DHCP_OPTION_ELEMENT_UNION
endif

DHCP_OPTION_DATA	STRUC
NumElements		dd ?
Elements		LPDHCP_OPTION_DATA_ELEMENT ?
DHCP_OPTION_DATA	ENDS
LPDHCP_OPTION_DATA	typedef ptr DHCP_OPTION_DATA

.enum DHCP_OPTION_TYPE {
    DhcpUnaryElementTypeOption,
    DhcpArrayTypeOption
    }

DHCP_OPTION		STRUC
OptionID		DHCP_OPTION_ID ?
OptionName		LPWSTR ?
OptionComment		LPWSTR ?
DefaultValue		DHCP_OPTION_DATA <>
OptionType		DHCP_OPTION_TYPE ?
DHCP_OPTION		ENDS
LPDHCP_OPTION		typedef ptr DHCP_OPTION

DHCP_OPTION_ARRAY	STRUC
NumElements		dd ?
Options			LPDHCP_OPTION ?
DHCP_OPTION_ARRAY	ENDS
LPDHCP_OPTION_ARRAY	typedef ptr DHCP_OPTION_ARRAY

DHCP_OPTION_VALUE	STRUC
OptionID		DHCP_OPTION_ID ?
Value			DHCP_OPTION_DATA <>
DHCP_OPTION_VALUE	ENDS
LPDHCP_OPTION_VALUE	typedef ptr DHCP_OPTION_VALUE

DHCP_OPTION_VALUE_ARRAY	 STRUC
NumElements		dd ?
Values			LPDHCP_OPTION_VALUE ?
DHCP_OPTION_VALUE_ARRAY ENDS
LPDHCP_OPTION_VALUE_ARRAY typedef ptr DHCP_OPTION_VALUE_ARRAY

.enum DHCP_OPTION_SCOPE_TYPE {
    DhcpDefaultOptions,
    DhcpGlobalOptions,
    DhcpSubnetOptions,
    DhcpReservedOptions,
    DhcpMScopeOptions
    }

DHCP_RESERVED_SCOPE	STRUC
ReservedIpAddress	DHCP_IP_ADDRESS ?
ReservedIpSubnetAddress DHCP_IP_ADDRESS ?
DHCP_RESERVED_SCOPE	ENDS
LPDHCP_RESERVED_SCOPE	typedef ptr DHCP_RESERVED_SCOPE

DHCP_OPTION_SCOPE_INFO	STRUC
ScopeType		DHCP_OPTION_SCOPE_TYPE ?
UNION ScopeInfo
DefaultScopeInfo	PVOID ?
GlobalScopeInfo		PVOID ?
SubnetScopeInfo		DHCP_IP_ADDRESS ?
ReservedScopeInfo	DHCP_RESERVED_SCOPE <>
MScopeInfo		LPWSTR ?
ENDS
DHCP_OPTION_SCOPE_INFO	ENDS
LPDHCP_OPTION_SCOPE_INFO typedef ptr DHCP_OPTION_SCOPE_INFO

.enum DHCP_OPTION_SCOPE_TYPE6 {
    DhcpDefaultOptions6,
    DhcpScopeOptions6,
    DhcpReservedOptions6,
    DhcpGlobalOptions6
    }

DHCP_RESERVED_SCOPE6	STRUC
ReservedIpAddress	DHCP_IPV6_ADDRESS <>
ReservedIpSubnetAddress DHCP_IPV6_ADDRESS <>
DHCP_RESERVED_SCOPE6	ENDS
LPDHCP_RESERVED_SCOPE6	typedef ptr DHCP_RESERVED_SCOPE6

DHCP_OPTION_SCOPE_INFO6	 STRUC
ScopeType		DHCP_OPTION_SCOPE_TYPE6 ?
UNION ScopeInfo
DefaultScopeInfo	PVOID ?
SubnetScopeInfo		DHCP_IPV6_ADDRESS <>
ReservedScopeInfo	DHCP_RESERVED_SCOPE6 <>
ENDS
DHCP_OPTION_SCOPE_INFO6 ENDS
LPDHCP_OPTION_SCOPE_INFO6 typedef ptr DHCP_OPTION_SCOPE_INFO6

DHCP_OPTION_SCOPE_UNION6 UNION
DefaultScopeInfo	PVOID ?
SubnetScopeInfo		DHCP_IPV6_ADDRESS <>
ReservedScopeInfo	DHCP_RESERVED_SCOPE6 <>
DHCP_OPTION_SCOPE_UNION6 ENDS

if NOT defined(MIDL_PASS)
LPDHCP_OPTION_SCOPE_UNION6 typedef ptr DHCP_OPTION_SCOPE_UNION6
endif

DHCP_OPTION_LIST	STRUC
NumOptions		dd ?
Options			LPDHCP_OPTION_VALUE ?
DHCP_OPTION_LIST	ENDS
LPDHCP_OPTION_LIST	typedef ptr DHCP_OPTION_LIST


DHCP_CLIENT_INFO	STRUC
ClientIpAddress		DHCP_IP_ADDRESS ?
SubnetMask		DHCP_IP_MASK ?
ClientHardwareAddress	DHCP_CLIENT_UID <>
ClientName		LPWSTR ?
ClientComment		LPWSTR ?
ClientLeaseExpires	DATE_TIME <>
OwnerHost		DHCP_HOST_INFO <>
DHCP_CLIENT_INFO	ENDS
LPDHCP_CLIENT_INFO	typedef ptr DHCP_CLIENT_INFO

DHCP_CLIENT_INFO_ARRAY	STRUC
NumElements		dd ?
Clients			LPDHCP_CLIENT_INFO ?
DHCP_CLIENT_INFO_ARRAY	ENDS
LPDHCP_CLIENT_INFO_ARRAY typedef ptr DHCP_CLIENT_INFO_ARRAY

.enum QuarantineStatus {
    NOQUARANTINE = 0,
    RESTRICTEDACCESS,
    DROPPACKET,
    PROBATION,
    EXEMPT,
    DEFAULTQUARSETTING,
    NOQUARINFO
    }

DHCP_CLIENT_INFO_VQ	STRUC
ClientIpAddress		DHCP_IP_ADDRESS ?
SubnetMask		DHCP_IP_MASK ?
ClientHardwareAddress	DHCP_CLIENT_UID <>
ClientName		LPWSTR ?
ClientComment		LPWSTR ?
ClientLeaseExpires	DATE_TIME <>
OwnerHost		DHCP_HOST_INFO <>
bClientType		db ?
AddressState		db ?
Status			QuarantineStatus ?
ProbationEnds		DATE_TIME <>
QuarantineCapable	BOOL ?
DHCP_CLIENT_INFO_VQ	ENDS
LPDHCP_CLIENT_INFO_VQ	typedef ptr DHCP_CLIENT_INFO_VQ

DHCP_CLIENT_INFO_ARRAY_VQ  STRUC
NumElements		dd ?
Clients			LPDHCP_CLIENT_INFO_VQ ?
DHCP_CLIENT_INFO_ARRAY_VQ ENDS
LPDHCP_CLIENT_INFO_ARRAY_VQ typedef ptr DHCP_CLIENT_INFO_ARRAY_VQ



FILTER_STATUS_NONE	equ 0x00000001
FILTER_STATUS_FULL_MATCH_IN_ALLOW_LIST equ 0x00000002
FILTER_STATUS_FULL_MATCH_IN_DENY_LIST equ 0x00000004
FILTER_STATUS_WILDCARD_MATCH_IN_ALLOW_LIST equ 0x00000008
FILTER_STATUS_WILDCARD_MATCH_IN_DENY_LIST equ 0x00000010


DHCP_CLIENT_FILTER_STATUS_INFO	STRUC
ClientIpAddress		DHCP_IP_ADDRESS ?
SubnetMask		DHCP_IP_MASK ?
ClientHardwareAddress	DHCP_CLIENT_UID <>
ClientName		LPWSTR ?
ClientComment		LPWSTR ?
ClientLeaseExpires	DATE_TIME <>
OwnerHost		DHCP_HOST_INFO <>
bClientType		db ?
AddressState		db ?
Status			QuarantineStatus ?
ProbationEnds		DATE_TIME <>
QuarantineCapable	BOOL ?
FilterStatus		dd ?
DHCP_CLIENT_FILTER_STATUS_INFO ENDS
LPDHCP_CLIENT_FILTER_STATUS_INFO typedef ptr DHCP_CLIENT_FILTER_STATUS_INFO

DHCP_CLIENT_FILTER_STATUS_INFO_ARRAY  STRUC
NumElements		dd ?
Clients			LPDHCP_CLIENT_FILTER_STATUS_INFO ?
DHCP_CLIENT_FILTER_STATUS_INFO_ARRAY ENDS
LPDHCP_CLIENT_FILTER_STATUS_INFO_ARRAY typedef ptr DHCP_CLIENT_FILTER_STATUS_INFO_ARRAY

DHCP_CLIENT_INFO_PB	STRUC
ClientIpAddress		DHCP_IP_ADDRESS ?
SubnetMask		DHCP_IP_MASK ?
ClientHardwareAddress	DHCP_CLIENT_UID <>
ClientName		LPWSTR ?
ClientComment		LPWSTR ?
ClientLeaseExpires	DATE_TIME <>
OwnerHost		DHCP_HOST_INFO <>
bClientType		db ?
AddressState		db ?
Status			QuarantineStatus ?
ProbationEnds		DATE_TIME <>
QuarantineCapable	BOOL ?
FilterStatus		dd ?
PolicyName		LPWSTR ?
DHCP_CLIENT_INFO_PB	ENDS
LPDHCP_CLIENT_INFO_PB	typedef ptr DHCP_CLIENT_INFO_PB

DHCP_CLIENT_INFO_PB_ARRAY  STRUC
NumElements		dd ?
Clients			LPDHCP_CLIENT_INFO_PB ?
DHCP_CLIENT_INFO_PB_ARRAY ENDS
LPDHCP_CLIENT_INFO_PB_ARRAY typedef ptr DHCP_CLIENT_INFO_PB_ARRAY

.enum DHCP_CLIENT_SEARCH_TYPE {
    DhcpClientIpAddress,
    DhcpClientHardwareAddress,
    DhcpClientName
    }
DHCP_SEARCH_INFO_TYPE	typedef DHCP_CLIENT_SEARCH_TYPE
LPDHCP_SEARCH_INFO_TYPE typedef ptr DHCP_CLIENT_SEARCH_TYPE

DHCP_SEARCH_INFO	STRUC
SearchType		DHCP_SEARCH_INFO_TYPE ?
UNION SearchInfo
ClientIpAddress		DHCP_IP_ADDRESS ?
ClientHardwareAddress	DHCP_CLIENT_UID <>
ClientName		LPWSTR ?
ENDS
DHCP_SEARCH_INFO	ENDS
LPDHCP_SEARCH_INFO	typedef ptr DHCP_SEARCH_INFO

DHCP_CLIENT_SEARCH_UNION UNION
ClientIpAddress		DHCP_IP_ADDRESS ?
ClientHardwareAddress	DHCP_CLIENT_UID <>
ClientName		LPWSTR ?
DHCP_CLIENT_SEARCH_UNION ENDS

if NOT defined(MIDL_PASS)
LPDHCP_CLIENT_SEARCH_UNION typedef ptr DHCP_CLIENT_SEARCH_UNION
endif

.enum DHCP_PROPERTY_TYPE {
    DhcpPropTypeByte,
    DhcpPropTypeWord,
    DhcpPropTypeDword,
    DhcpPropTypeString,
    DhcpPropTypeBinary,
    }

.enum DHCP_PROPERTY_ID {
    DhcpPropIdPolicyDnsSuffix,
    DhcpPropIdClientAddressStateEx,
    }


DHCP_PROPERTY		STRUC
ID			DHCP_PROPERTY_ID ?
Type			DHCP_PROPERTY_TYPE ?
UNION Value
ByteValue		db ?
WordValue		dw ?
DWordValue		dd ?
StringValue		LPWSTR ?
BinaryValue		DHCP_BINARY_DATA <>
ENDS
DHCP_PROPERTY		ENDS
PDHCP_PROPERTY		typedef ptr DHCP_PROPERTY
LPDHCP_PROPERTY		typedef ptr DHCP_PROPERTY

DHCP_PROPERTY_ARRAY	STRUC
NumElements		dd ?
Elements		LPDHCP_PROPERTY ?
DHCP_PROPERTY_ARRAY	ENDS
PDHCP_PROPERTY_ARRAY	typedef ptr DHCP_PROPERTY_ARRAY
LPDHCP_PROPERTY_ARRAY	typedef ptr DHCP_PROPERTY_ARRAY



DHCP_CLIENT_INFO_EX	STRUC
ClientIpAddress		DHCP_IP_ADDRESS ?
SubnetMask		DHCP_IP_MASK ?
ClientHardwareAddress	DHCP_CLIENT_UID <>
ClientName		LPWSTR ?
ClientComment		LPWSTR ?
ClientLeaseExpires	DATE_TIME <>
OwnerHost		DHCP_HOST_INFO <>
bClientType		db ?
AddressState		db ?
Status			QuarantineStatus ?
ProbationEnds		DATE_TIME <>
QuarantineCapable	BOOL ?
FilterStatus		dd ?
PolicyName		LPWSTR ?
Properties		LPDHCP_PROPERTY_ARRAY ?
DHCP_CLIENT_INFO_EX	ENDS
LPDHCP_CLIENT_INFO_EX	typedef ptr DHCP_CLIENT_INFO_EX

DHCP_CLIENT_INFO_EX_ARRAY STRUC
NumElements		dd ?
Clients			LPDHCP_CLIENT_INFO_EX ?
DHCP_CLIENT_INFO_EX_ARRAY ENDS
LPDHCP_CLIENT_INFO_EX_ARRAY typedef ptr DHCP_CLIENT_INFO_EX_ARRAY


SCOPE_MIB_INFO		STRUC
Subnet			DHCP_IP_ADDRESS ?
NumAddressesInuse	dd ?
NumAddressesFree	dd ?
NumPendingOffers	dd ?
SCOPE_MIB_INFO		ENDS
LPSCOPE_MIB_INFO	typedef ptr SCOPE_MIB_INFO

DHCP_MIB_INFO		STRUC
Discovers		dd ?
Offers			dd ?
Requests		dd ?
Acks			dd ?
Naks			dd ?
Declines		dd ?
Releases		dd ?
ServerStartTime		DATE_TIME <>
Scopes			dd ?
ScopeInfo		LPSCOPE_MIB_INFO ?
DHCP_MIB_INFO		ENDS
LPDHCP_MIB_INFO		typedef ptr DHCP_MIB_INFO



SCOPE_MIB_INFO_VQ	STRUC
Subnet			DHCP_IP_ADDRESS ?
NumAddressesInuse	dd ?
NumAddressesFree	dd ?
NumPendingOffers	dd ?
QtnNumLeases		dd ?
QtnPctQtnLeases		dd ?
QtnProbationLeases	dd ?
QtnNonQtnLeases		dd ?
QtnExemptLeases		dd ?
QtnCapableClients	dd ?
SCOPE_MIB_INFO_VQ	ENDS
LPSCOPE_MIB_INFO_VQ	typedef ptr SCOPE_MIB_INFO_VQ

DHCP_MIB_INFO_VQ	STRUC
Discovers		dd ?
Offers			dd ?
Requests		dd ?
Acks			dd ?
Naks			dd ?
Declines		dd ?
Releases		dd ?
ServerStartTime		DATE_TIME <>
QtnNumLeases		dd ?
QtnPctQtnLeases		dd ?
QtnProbationLeases	dd ?
QtnNonQtnLeases		dd ?
QtnExemptLeases		dd ?
QtnCapableClients	dd ?
QtnIASErrors		dd ?
Scopes			dd ?
ScopeInfo		LPSCOPE_MIB_INFO_VQ ?
DHCP_MIB_INFO_VQ	ENDS
LPDHCP_MIB_INFO_VQ	typedef ptr DHCP_MIB_INFO_VQ

SCOPE_MIB_INFO_V5	STRUC
Subnet			DHCP_IP_ADDRESS ?
NumAddressesInuse	dd ?
NumAddressesFree	dd ?
NumPendingOffers	dd ?
SCOPE_MIB_INFO_V5	ENDS
LPSCOPE_MIB_INFO_V5	typedef ptr SCOPE_MIB_INFO_V5

DHCP_MIB_INFO_V5	STRUC
Discovers		dd ?
Offers			dd ?
Requests		dd ?
Acks			dd ?
Naks			dd ?
Declines		dd ?
Releases		dd ?
ServerStartTime		DATE_TIME <>
QtnNumLeases		dd ?
QtnPctQtnLeases		dd ?
QtnProbationLeases	dd ?
QtnNonQtnLeases		dd ?
QtnExemptLeases		dd ?
QtnCapableClients	dd ?
QtnIASErrors		dd ?

DelayedOffers		dd ?
ScopesWithDelayedOffers dd ?
Scopes			dd ?
ScopeInfo		LPSCOPE_MIB_INFO_V5 ?
DHCP_MIB_INFO_V5	ENDS
LPDHCP_MIB_INFO_V5	typedef ptr DHCP_MIB_INFO_V5

Set_APIProtocolSupport	equ 0x00000001
Set_DatabaseName	equ 0x00000002
Set_DatabasePath	equ 0x00000004
Set_BackupPath		equ 0x00000008
Set_BackupInterval	equ 0x00000010
Set_DatabaseLoggingFlag equ 0x00000020
Set_RestoreFlag		equ 0x00000040
Set_DatabaseCleanupInterval equ 0x00000080
Set_DebugFlag		equ 0x00000100
Set_PingRetries		equ 0x00000200
Set_BootFileTable	equ 0x00000400
Set_AuditLogState	equ 0x00000800
Set_QuarantineON	equ 0x00001000
Set_QuarantineDefFail	equ 0x00002000


DHCP_SERVER_CONFIG_INFO	 STRUC
APIProtocolSupport	dd ?
DatabaseName		LPWSTR ?
DatabasePath		LPWSTR ?
BackupPath		LPWSTR ?
BackupInterval		dd ?
DatabaseLoggingFlag	dd ?
RestoreFlag		dd ?
DatabaseCleanupInterval dd ?
DebugFlag		dd ?
DHCP_SERVER_CONFIG_INFO ENDS
LPDHCP_SERVER_CONFIG_INFO typedef ptr DHCP_SERVER_CONFIG_INFO

.enum DHCP_SCAN_FLAG {
    DhcpRegistryFix,
    DhcpDatabaseFix
    }

DHCP_SCAN_ITEM		STRUC
IpAddress		DHCP_IP_ADDRESS ?
ScanFlag		DHCP_SCAN_FLAG ?
DHCP_SCAN_ITEM		ENDS
LPDHCP_SCAN_ITEM	typedef ptr DHCP_SCAN_ITEM

DHCP_SCAN_LIST		STRUC
NumScanItems		dd ?
ScanItems		ptr DHCP_SCAN_ITEM ?
DHCP_SCAN_LIST		ENDS
LPDHCP_SCAN_LIST	typedef ptr DHCP_SCAN_LIST

DHCP_CLASS_INFO		STRUC
ClassName		LPWSTR ?
ClassComment		LPWSTR ?
ClassDataLength		dd ?
IsVendor		BOOL ?
Flags			dd ?
ClassData		LPBYTE ?
DHCP_CLASS_INFO		ENDS
LPDHCP_CLASS_INFO	typedef ptr DHCP_CLASS_INFO

DHCP_CLASS_INFO_ARRAY	STRUC
NumElements		dd ?
Classes			LPDHCP_CLASS_INFO ?
DHCP_CLASS_INFO_ARRAY	ENDS
LPDHCP_CLASS_INFO_ARRAY typedef ptr DHCP_CLASS_INFO_ARRAY


DHCP_CLASS_INFO_V6	STRUC
ClassName		LPWSTR ?
ClassComment		LPWSTR ?
ClassDataLength		dd ?
IsVendor		BOOL ?
EnterpriseNumber	dd ?
Flags			dd ?
ClassData		LPBYTE ?
DHCP_CLASS_INFO_V6	ENDS
LPDHCP_CLASS_INFO_V6	typedef ptr DHCP_CLASS_INFO_V6

DHCP_CLASS_INFO_ARRAY_V6  STRUC
NumElements		dd ?
Classes			LPDHCP_CLASS_INFO_V6 ?
DHCP_CLASS_INFO_ARRAY_V6 ENDS
LPDHCP_CLASS_INFO_ARRAY_V6 typedef ptr DHCP_CLASS_INFO_ARRAY_V6

DHCP_SERVER_SPECIFIC_STRINGS  STRUC
DefaultVendorClassName	LPWSTR ?
DefaultUserClassName	LPWSTR ?
DHCP_SERVER_SPECIFIC_STRINGS ENDS
LPDHCP_SERVER_SPECIFIC_STRINGS typedef ptr DHCP_SERVER_SPECIFIC_STRINGS

DHCP_IP_RESERVATION_V4	STRUC
ReservedIpAddress	DHCP_IP_ADDRESS ?
ReservedForClient	ptr DHCP_CLIENT_UID ?
bAllowedClientTypes	db ?
DHCP_IP_RESERVATION_V4	ENDS
LPDHCP_IP_RESERVATION_V4 typedef ptr DHCP_IP_RESERVATION_V4

DHCP_IP_RESERVATION_INFO STRUC
ReservedIpAddress	DHCP_IP_ADDRESS ?
ReservedForClient	DHCP_CLIENT_UID <>
ReservedClientName	LPWSTR ?
ReservedClientDesc	LPWSTR ?
bAllowedClientTypes	db ?
fOptionsPresent		db ?
DHCP_IP_RESERVATION_INFO ENDS
LPDHCP_IP_RESERVATION_INFO typedef ptr DHCP_IP_RESERVATION_INFO

DHCP_RESERVATION_INFO_ARRAY  STRUC
NumElements		dd ?
Elements		LPDHCP_IP_RESERVATION_INFO ?
DHCP_RESERVATION_INFO_ARRAY ENDS
LPDHCP_RESERVATION_INFO_ARRAY typedef ptr DHCP_RESERVATION_INFO_ARRAY

DHCP_SUBNET_ELEMENT_DATA_V4  STRUC
ElementType		DHCP_SUBNET_ELEMENT_TYPE ?
UNION Element
IpRange			LPDHCP_IP_RANGE ?
SecondaryHost		LPDHCP_HOST_INFO ?
ReservedIp		LPDHCP_IP_RESERVATION_V4 ?
ExcludeIpRange		LPDHCP_IP_RANGE ?
IpUsedCluster		LPDHCP_IP_CLUSTER ?
ENDS
DHCP_SUBNET_ELEMENT_DATA_V4 ENDS
LPDHCP_SUBNET_ELEMENT_DATA_V4 typedef ptr DHCP_SUBNET_ELEMENT_DATA_V4

DHCP_SUBNET_ELEMENT_UNION_V4 UNION
IpRange			LPDHCP_IP_RANGE ?
SecondaryHost		LPDHCP_HOST_INFO ?
ReservedIp		LPDHCP_IP_RESERVATION_V4 ?
ExcludeIpRange		LPDHCP_IP_RANGE ?
IpUsedCluster		LPDHCP_IP_CLUSTER ?
DHCP_SUBNET_ELEMENT_UNION_V4 ENDS

if NOT defined(MIDL_PASS)
LPDHCP_SUBNET_ELEMENT_UNION_V4 typedef ptr DHCP_SUBNET_ELEMENT_UNION_V4
endif

DHCP_SUBNET_ELEMENT_INFO_ARRAY_V4 STRUC
NumElements		dd ?
Elements		LPDHCP_SUBNET_ELEMENT_DATA_V4 ?
DHCP_SUBNET_ELEMENT_INFO_ARRAY_V4 ENDS
LPDHCP_SUBNET_ELEMENT_INFO_ARRAY_V4 typedef ptr DHCP_SUBNET_ELEMENT_INFO_ARRAY_V4

CLIENT_TYPE_UNSPECIFIED equ 0x0
CLIENT_TYPE_DHCP	equ 0x1
CLIENT_TYPE_BOOTP	equ 0x2
CLIENT_TYPE_BOTH	equ ( CLIENT_TYPE_DHCP OR CLIENT_TYPE_BOOTP )
CLIENT_TYPE_RESERVATION_FLAG equ 0x4
CLIENT_TYPE_NONE	equ 0x64



DHCP_CLIENT_INFO_V4	STRUC
ClientIpAddress		DHCP_IP_ADDRESS ?
SubnetMask		DHCP_IP_MASK ?
ClientHardwareAddress	DHCP_CLIENT_UID <>
ClientName		LPWSTR ?
ClientComment		LPWSTR ?
ClientLeaseExpires	DATE_TIME <>
OwnerHost		DHCP_HOST_INFO <>
bClientType		db ?
DHCP_CLIENT_INFO_V4	ENDS
LPDHCP_CLIENT_INFO_V4	typedef ptr DHCP_CLIENT_INFO_V4

DHCP_CLIENT_INFO_ARRAY_V4 STRUC
NumElements		dd ?
Clients			LPDHCP_CLIENT_INFO_V4 ?
DHCP_CLIENT_INFO_ARRAY_V4 ENDS
LPDHCP_CLIENT_INFO_ARRAY_V4 typedef ptr DHCP_CLIENT_INFO_ARRAY_V4


DHCP_SERVER_CONFIG_INFO_V4 STRUC
APIProtocolSupport	dd ?
DatabaseName		LPWSTR ?
DatabasePath		LPWSTR ?
BackupPath		LPWSTR ?
BackupInterval		dd ?
DatabaseLoggingFlag	dd ?
RestoreFlag		dd ?
DatabaseCleanupInterval dd ?
DebugFlag		dd ?
dwPingRetries		dd ?
cbBootTableString	dd ?
wszBootTableString	ptr WCHAR ?
fAuditLog		BOOL ?
DHCP_SERVER_CONFIG_INFO_V4 ENDS
LPDHCP_SERVER_CONFIG_INFO_V4 typedef ptr DHCP_SERVER_CONFIG_INFO_V4


DHCP_SERVER_CONFIG_INFO_VQ STRUC
APIProtocolSupport	dd ?
DatabaseName		LPWSTR ?
DatabasePath		LPWSTR ?
BackupPath		LPWSTR ?
BackupInterval		dd ?
DatabaseLoggingFlag	dd ?
RestoreFlag		dd ?
DatabaseCleanupInterval dd ?
DebugFlag		dd ?
dwPingRetries		dd ?
cbBootTableString	dd ?
wszBootTableString	ptr WCHAR ?
fAuditLog		BOOL ?
QuarantineOn		BOOL ?
QuarDefFail		dd ?
QuarRuntimeStatus	BOOL ?
DHCP_SERVER_CONFIG_INFO_VQ ENDS
LPDHCP_SERVER_CONFIG_INFO_VQ typedef ptr DHCP_SERVER_CONFIG_INFO_VQ


DHCP_SERVER_CONFIG_INFO_V6 STRUC
UnicastFlag		BOOL ?
RapidCommitFlag		BOOL ?
PreferredLifetime	dd ?
ValidLifetime		dd ?
T1			dd ?
T2			dd ?
PreferredLifetimeIATA	dd ?
ValidLifetimeIATA	dd ?
ifndef DHCPSAPI_LEGACY
fAuditLog		BOOL ?
endif
DHCP_SERVER_CONFIG_INFO_V6 ENDS
LPDHCP_SERVER_CONFIG_INFO_V6 typedef ptr DHCP_SERVER_CONFIG_INFO_V6


Set_UnicastFlag		equ 0x00000001
Set_RapidCommitFlag	equ 0x00000002
Set_PreferredLifetime	equ 0x00000004
Set_ValidLifetime	equ 0x00000008
Set_T1			equ 0x00000010
Set_T2			equ 0x00000020
Set_PreferredLifetimeIATA equ 0x00000040
Set_ValidLifetimeIATA	equ 0x00000080


DHCP_SUPER_SCOPE_TABLE_ENTRY  STRUC
SubnetAddress		DHCP_IP_ADDRESS ?
SuperScopeNumber	dd ?
NextInSuperScope	dd ?
SuperScopeName		LPWSTR ?
DHCP_SUPER_SCOPE_TABLE_ENTRY ENDS
LPDHCP_SUPER_SCOPE_TABLE_ENTRY typedef ptr DHCP_SUPER_SCOPE_TABLE_ENTRY


DHCP_SUPER_SCOPE_TABLE	STRUC
cEntries		dd ?
pEntries		LPDHCP_SUPER_SCOPE_TABLE_ENTRY ?
DHCP_SUPER_SCOPE_TABLE	ENDS
LPDHCP_SUPER_SCOPE_TABLE typedef ptr DHCP_SUPER_SCOPE_TABLE


DHCP_CLIENT_INFO_V5	STRUC
ClientIpAddress		DHCP_IP_ADDRESS ?
SubnetMask		DHCP_IP_MASK ?
ClientHardwareAddress	DHCP_CLIENT_UID <>
ClientName		LPWSTR ?
ClientComment		LPWSTR ?
ClientLeaseExpires	DATE_TIME <>
OwnerHost		DHCP_HOST_INFO <>
bClientType		db ?
AddressState		db ?
DHCP_CLIENT_INFO_V5	ENDS
LPDHCP_CLIENT_INFO_V5	typedef ptr DHCP_CLIENT_INFO_V5


V5_ADDRESS_STATE_OFFERED equ 0x0
V5_ADDRESS_STATE_ACTIVE equ 0x1
V5_ADDRESS_STATE_DECLINED equ 0x2
V5_ADDRESS_STATE_DOOM	equ 0x3

V5_ADDRESS_BIT_DELETED	equ 0x80
V5_ADDRESS_BIT_UNREGISTERED equ 0x40
V5_ADDRESS_BIT_BOTH_REC equ 0x20

V5_ADDRESS_EX_BIT_DISABLE_PTR_RR equ 0x01

DNS_FLAG_ENABLED	equ 0x01
DNS_FLAG_UPDATE_DOWNLEVEL equ 0x02
DNS_FLAG_CLEANUP_EXPIRED equ 0x04
DNS_FLAG_UPDATE_BOTH_ALWAYS equ 0x10
DNS_FLAG_UPDATE_DHCID	equ 0x20
DNS_FLAG_DISABLE_PTR_UPDATE equ 0x40
DNS_FLAG_HAS_DNS_SUFFIX equ 0x80

DHCP_CLIENT_INFO_ARRAY_V5  STRUC
NumElements		dd ?
Clients			LPDHCP_CLIENT_INFO_V5 ?
DHCP_CLIENT_INFO_ARRAY_V5 ENDS
LPDHCP_CLIENT_INFO_ARRAY_V5 typedef ptr DHCP_CLIENT_INFO_ARRAY_V5


DHCP_OPT_ENUM_IGNORE_VENDOR equ 0x01
DHCP_OPT_ENUM_USE_CLASSNAME equ 0x02

DHCP_ALL_OPTIONS	STRUC
Flags			dd ?
NonVendorOptions	LPDHCP_OPTION_ARRAY ?
NumVendorOptions	dd ?
VendorOptions		PVOID ?
DHCP_ALL_OPTIONS	ENDS
LPDHCP_ALL_OPTIONS	typedef ptr DHCP_ALL_OPTIONS


DHCP_ALL_OPTION_VALUES	STRUC
Flags			dd ?
NumElements		dd ?
Options			PVOID ?
DHCP_ALL_OPTION_VALUES	ENDS
LPDHCP_ALL_OPTION_VALUES typedef ptr DHCP_ALL_OPTION_VALUES

ifndef	   _ST_SRVR_H_
_ST_SRVR_H_ equ 1

DHCP_ALL_OPTION_VALUES_PB  STRUC
Flags			dd ?
NumElements		dd ?
Options			PVOID ?
DHCP_ALL_OPTION_VALUES_PB ENDS
LPDHCP_ALL_OPTION_VALUES_PB typedef ptr DHCP_ALL_OPTION_VALUES_PB

DHCPDS_SERVER		STRUC
Version			dd ?
ServerName		LPWSTR ?
ServerAddress		dd ?
Flags			dd ?
State			dd ?
DsLocation		LPWSTR ?
DsLocType		dd ?
DHCPDS_SERVER		ENDS
LPDHCPDS_SERVER		typedef ptr DHCPDS_SERVER
PDHCPDS_SERVER		typedef ptr DHCPDS_SERVER

DHCPDS_SERVERS		STRUC
Flags			DWORD ?
NumElements		dd ?
Servers			LPDHCPDS_SERVER ?
DHCPDS_SERVERS		ENDS
LPDHCPDS_SERVERS	typedef ptr DHCPDS_SERVERS
PDHCPDS_SERVERS		typedef ptr DHCPDS_SERVERS

DHCP_SERVER_INFO	typedef	    DHCPDS_SERVER
PDHCP_SERVER_INFO	typedef	    PDHCPDS_SERVER
LPDHCP_SERVER_INFO	typedef	    LPDHCPDS_SERVER

DHCP_SERVER_INFO_ARRAY	typedef	    DHCPDS_SERVERS
PDHCP_SERVER_INFO_ARRAY typedef	    PDHCPDS_SERVERS
LPDHCP_SERVER_INFO_ARRAY typedef     LPDHCPDS_SERVERS

endif

DHCP_FLAGS_DONT_ACCESS_DS equ 0x01
DHCP_FLAGS_DONT_DO_RPC	equ 0x02
DHCP_FLAGS_OPTION_IS_VENDOR equ 0x03

DHCP_ATTRIB_BOOL_IS_ROGUE equ 0x01
DHCP_ATTRIB_BOOL_IS_DYNBOOTP equ 0x02
DHCP_ATTRIB_BOOL_IS_PART_OF_DSDC equ 0x03
DHCP_ATTRIB_BOOL_IS_BINDING_AWARE equ 0x04
DHCP_ATTRIB_BOOL_IS_ADMIN equ 0x05
DHCP_ATTRIB_ULONG_RESTORE_STATUS equ 0x06

DHCP_ATTRIB_TYPE_BOOL	equ 0x01
DHCP_ATTRIB_TYPE_ULONG	equ 0x02

DHCP_ATTRIB_ID		typedef ULONG
LPDHCP_ATTRIB_ID	typedef ptr ULONG

DHCP_ATTRIB		STRUC
DhcpAttribId		DHCP_ATTRIB_ID ?
DhcpAttribType		ULONG ?
UNION
DhcpAttribBool		BOOL ?
DhcpAttribUlong		ULONG ?
ENDS
DHCP_ATTRIB		ENDS
PDHCP_ATTRIB		typedef ptr DHCP_ATTRIB
LPDHCP_ATTRIB		typedef ptr DHCP_ATTRIB

DHCP_ATTRIB_ARRAY	STRUC
NumElements		ULONG ?
DhcpAttribs		LPDHCP_ATTRIB ?
DHCP_ATTRIB_ARRAY	ENDS
PDHCP_ATTRIB_ARRAY	typedef ptr DHCP_ATTRIB_ARRAY
LPDHCP_ATTRIB_ARRAY	typedef ptr DHCP_ATTRIB_ARRAY

DHCP_BOOTP_IP_RANGE	STRUC
StartAddress		DHCP_IP_ADDRESS ?
EndAddress		DHCP_IP_ADDRESS ?
BootpAllocated		ULONG ?
MaxBootpAllowed		ULONG ?
DHCP_BOOTP_IP_RANGE	ENDS
LPDHCP_BOOT_IP_RANGE	typedef ptr DHCP_BOOTP_IP_RANGE


DHCP_SUBNET_ELEMENT_DATA_V5  STRUC
ElementType		DHCP_SUBNET_ELEMENT_TYPE ?
UNION Element
IpRange			LPDHCP_BOOT_IP_RANGE ?
SecondaryHost		LPDHCP_HOST_INFO ?
ReservedIp		LPDHCP_IP_RESERVATION_V4 ?
ExcludeIpRange		LPDHCP_IP_RANGE ?
IpUsedCluster		LPDHCP_IP_CLUSTER ?
ENDS
DHCP_SUBNET_ELEMENT_DATA_V5 ENDS
LPDHCP_SUBNET_ELEMENT_DATA_V5 typedef ptr DHCP_SUBNET_ELEMENT_DATA_V5

DHCP_SUBNET_ELEMENT_INFO_ARRAY_V5  STRUC
NumElements		dd ?
Elements		LPDHCP_SUBNET_ELEMENT_DATA_V5 ?
DHCP_SUBNET_ELEMENT_INFO_ARRAY_V5 ENDS
LPDHCP_SUBNET_ELEMENT_INFO_ARRAY_V5 typedef ptr DHCP_SUBNET_ELEMENT_INFO_ARRAY_V5

.pragma pack(push, 4)
DHCP_PERF_STATS		STRUC
dwNumPacketsReceived	ULONG ?
dwNumPacketsDuplicate	ULONG ?
dwNumPacketsExpired	ULONG ?
dwNumMilliSecondsProcessed ULONG ?
dwNumPacketsInActiveQueue ULONG ?
dwNumPacketsInPingQueue ULONG ?
dwNumDiscoversReceived	ULONG ?
dwNumOffersSent		ULONG ?
dwNumRequestsReceived	ULONG ?
dwNumInformsReceived	ULONG ?
dwNumAcksSent		ULONG ?
dwNumNacksSent		ULONG ?
dwNumDeclinesReceived	ULONG ?
dwNumReleasesReceived	ULONG ?
dwNumDelayedOfferInQueue ULONG ?
dwNumPacketsProcessed	ULONG ?
dwNumPacketsInQuarWaitingQueue ULONG ?
dwNumPacketsInQuarReadyQueue ULONG ?
dwNumPacketsInQuarDecisionQueue ULONG ?
DHCP_PERF_STATS		ENDS
LPDHCP_PERF_STATS	typedef ptr DHCP_PERF_STATS

.pragma pack(pop)

DHCP_ENDPOINT_FLAG_CANT_MODIFY equ 0x01

DHCP_BIND_ELEMENT	STRUC
Flags			ULONG ?
fBoundToDHCPServer	BOOL ?
AdapterPrimaryAddress	DHCP_IP_ADDRESS ?
AdapterSubnetAddress	DHCP_IP_ADDRESS ?
IfDescription		LPWSTR ?
IfIdSize		ULONG ?
IfId			LPBYTE ?
DHCP_BIND_ELEMENT	ENDS
LPDHCP_BIND_ELEMENT	typedef ptr DHCP_BIND_ELEMENT

DHCP_BIND_ELEMENT_ARRAY	 STRUC
NumElements		dd ?
Elements		LPDHCP_BIND_ELEMENT ?
DHCP_BIND_ELEMENT_ARRAY ENDS
LPDHCP_BIND_ELEMENT_ARRAY typedef ptr DHCP_BIND_ELEMENT_ARRAY

DHCPV6_BIND_ELEMENT	STRUC
Flags			ULONG ?
fBoundToDHCPServer	BOOL ?
AdapterPrimaryAddress	DHCP_IPV6_ADDRESS <>
AdapterSubnetAddress	DHCP_IPV6_ADDRESS <>
IfDescription		LPWSTR ?
IpV6IfIndex		dd ?
IfIdSize		ULONG ?
IfId			LPBYTE ?
DHCPV6_BIND_ELEMENT	ENDS
LPDHCPV6_BIND_ELEMENT	typedef ptr DHCPV6_BIND_ELEMENT

DHCPV6_BIND_ELEMENT_ARRAY  STRUC
NumElements		dd ?
Elements		LPDHCPV6_BIND_ELEMENT ?
DHCPV6_BIND_ELEMENT_ARRAY ENDS
LPDHCPV6_BIND_ELEMENT_ARRAY typedef ptr DHCPV6_BIND_ELEMENT_ARRAY

QUARANTIN_OPTION_BASE	equ 43220
QUARANTINE_SCOPE_QUARPROFILE_OPTION equ (QUARANTIN_OPTION_BASE + 1)
QUARANTINE_CONFIG_OPTION equ (QUARANTIN_OPTION_BASE + 2)

DHCP_IP_RANGE_V6	STRUC
StartAddress		DHCP_IPV6_ADDRESS <>
EndAddress		DHCP_IPV6_ADDRESS <>
DHCP_IP_RANGE_V6	ENDS
LPDHCP_IP_RANGE_V6	typedef ptr DHCP_IP_RANGE_V6

DHCP_HOST_INFO_V6	STRUC
IpAddress		DHCP_IPV6_ADDRESS <>
NetBiosName		LPWSTR ?
HostName		LPWSTR ?
DHCP_HOST_INFO_V6	ENDS
LPDHCP_HOST_INFO_V6	typedef ptr DHCP_HOST_INFO_V6

DHCP_SUBNET_INFO_V6	STRUC
SubnetAddress		DHCP_IPV6_ADDRESS <>
Prefix			ULONG ?
Preference		USHORT ?
SubnetName		LPWSTR ?
SubnetComment		LPWSTR ?
State			dd ?
ScopeId			dd ?
DHCP_SUBNET_INFO_V6	ENDS
PDHCP_SUBNET_INFO_V6	typedef ptr DHCP_SUBNET_INFO_V6
LPDHCP_SUBNET_INFO_V6	typedef ptr DHCP_SUBNET_INFO_V6

SCOPE_MIB_INFO_V6	STRUC
Subnet			DHCP_IPV6_ADDRESS <>
NumAddressesInuse	ULONGLONG ?
NumAddressesFree	ULONGLONG ?
NumPendingAdvertises	ULONGLONG ?
SCOPE_MIB_INFO_V6	ENDS
LPSCOPE_MIB_INFO_V6	typedef ptr SCOPE_MIB_INFO_V6

DHCP_MIB_INFO_V6	STRUC
Solicits		dd ?
Advertises		dd ?
Requests		dd ?
Renews			dd ?
Rebinds			dd ?
Replies			dd ?
Confirms		dd ?
Declines		dd ?
Releases		dd ?
Informs			dd ?
ServerStartTime		DATE_TIME <>
Scopes			dd ?
ScopeInfo		LPSCOPE_MIB_INFO_V6 ?
DHCP_MIB_INFO_V6	ENDS
LPDHCP_MIB_INFO_V6	typedef ptr DHCP_MIB_INFO_V6

DHCP_IP_RESERVATION_V6	STRUC
ReservedIpAddress	DHCP_IPV6_ADDRESS <>
ReservedForClient	ptr DHCP_CLIENT_UID ?
InterfaceId		dd ?
DHCP_IP_RESERVATION_V6	ENDS
LPDHCP_IP_RESERVATION_V6 typedef ptr DHCP_IP_RESERVATION_V6

.enum DHCP_SUBNET_ELEMENT_TYPE_V6 {
    Dhcpv6IpRanges,
    Dhcpv6ReservedIps,
    Dhcpv6ExcludedIpRanges
    }

DHCP_SUBNET_ELEMENT_DATA_V6  STRUC
ElementType		DHCP_SUBNET_ELEMENT_TYPE_V6 ?
UNION Element
IpRange			LPDHCP_IP_RANGE_V6 ?
ReservedIp		LPDHCP_IP_RESERVATION_V6 ?
ExcludeIpRange		LPDHCP_IP_RANGE_V6 ?
ENDS
DHCP_SUBNET_ELEMENT_DATA_V6 ENDS
LPDHCP_SUBNET_ELEMENT_DATA_V6 typedef ptr DHCP_SUBNET_ELEMENT_DATA_V6

DHCP_SUBNET_ELEMENT_UNION_V6 UNION
IpRange			LPDHCP_IP_RANGE_V6 ?
ReservedIp		LPDHCP_IP_RESERVATION_V6 ?
ExcludeIpRange		LPDHCP_IP_RANGE_V6 ?
DHCP_SUBNET_ELEMENT_UNION_V6 ENDS
if NOT defined(MIDL_PASS)
LPDHCP_SUBNET_ELEMENT_UNION_V6 typedef ptr DHCP_SUBNET_ELEMENT_UNION_V6
endif

DHCP_SUBNET_ELEMENT_INFO_ARRAY_V6  STRUC
NumElements		dd ?
Elements		LPDHCP_SUBNET_ELEMENT_DATA_V6 ?
DHCP_SUBNET_ELEMENT_INFO_ARRAY_V6 ENDS
LPDHCP_SUBNET_ELEMENT_INFO_ARRAY_V6 typedef ptr DHCP_SUBNET_ELEMENT_INFO_ARRAY_V6

ADDRESS_TYPE_IANA	equ 0
ADDRESS_TYPE_IATA	equ 1

DHCP_CLIENT_INFO_V6	STRUC
ClientIpAddress		DHCP_IPV6_ADDRESS <>
ClientDUID		DHCP_CLIENT_UID <>
AddressType		dd ?
IAID			dd ?
ClientName		LPWSTR ?
ClientComment		LPWSTR ?
ClientValidLeaseExpires DATE_TIME <>
ClientPrefLeaseExpires	DATE_TIME <>
OwnerHost		DHCP_HOST_INFO_V6 <>
DHCP_CLIENT_INFO_V6	ENDS
LPDHCP_CLIENT_INFO_V6	typedef ptr DHCP_CLIENT_INFO_V6

DHCPV6_IP_ARRAY		STRUC
NumElements		dd ?
Elements		LPDHCP_IPV6_ADDRESS ?
DHCPV6_IP_ARRAY		ENDS
LPDHCPV6_IP_ARRAY	typedef ptr DHCPV6_IP_ARRAY

DHCP_CLIENT_INFO_ARRAY_V6 STRUC
NumElements		dd ?
Clients			LPDHCP_CLIENT_INFO_V6 ?
DHCP_CLIENT_INFO_ARRAY_V6 ENDS
LPDHCP_CLIENT_INFO_ARRAY_V6 typedef ptr DHCP_CLIENT_INFO_ARRAY_V6

.enum DHCP_CLIENT_SEARCH_TYPE_V6 {
    Dhcpv6ClientIpAddress,
    Dhcpv6ClientDUID,
    Dhcpv6ClientName
    }
DHCP_SEARCH_INFO_TYPE_V6  typedef DHCP_CLIENT_SEARCH_TYPE_V6
LPDHCP_SEARCH_INFO_TYPE_V6 typedef ptr DHCP_CLIENT_SEARCH_TYPE_V6

DHCP_SEARCH_INFO_V6	STRUC
SearchType		DHCP_SEARCH_INFO_TYPE_V6 ?
UNION SearchInfo
ClientIpAddress		DHCP_IPV6_ADDRESS <>
ClientDUID		DHCP_CLIENT_UID <>
ClientName		LPWSTR ?
ENDS
DHCP_SEARCH_INFO_V6	ENDS
LPDHCP_SEARCH_INFO_V6	typedef ptr DHCP_SEARCH_INFO_V6

.enum DHCP_POL_ATTR_TYPE {
    DhcpAttrHWAddr,
    DhcpAttrOption,
    DhcpAttrSubOption,
    DhcpAttrFqdn,
    DhcpAttrFqdnSingleLabel,
    }

.enum DHCP_POL_COMPARATOR {
    DhcpCompEqual,
    DhcpCompNotEqual,
    DhcpCompBeginsWith,
    DhcpCompNotBeginWith,
    DhcpCompEndsWith,
    DhcpCompNotEndWith,
    }

.enum DHCP_POL_LOGIC_OPER {
    DhcpLogicalOr,
    DhcpLogicalAnd,
    }

.enum DHCP_POLICY_FIELDS_TO_UPDATE {
    DhcpUpdatePolicyName     = 0x00000001,
    DhcpUpdatePolicyOrder    = 0x00000002,
    DhcpUpdatePolicyExpr     = 0x00000004,
    DhcpUpdatePolicyRanges   = 0x00000008,
    DhcpUpdatePolicyDescr    = 0x00000010,
    DhcpUpdatePolicyStatus   = 0x00000020,
    DhcpUpdatePolicyDnsSuffix= 0x00000040,
    }


DHCP_POL_COND		STRUC
ParentExpr		dd ?
Type			DHCP_POL_ATTR_TYPE ?
OptionID		dd ?
SubOptionID		dd ?
VendorName		LPWSTR ?
Operator		DHCP_POL_COMPARATOR ?
Value			LPBYTE ?
ValueLength		dd ?

DHCP_POL_COND		ENDS
PDHCP_POL_COND		typedef ptr DHCP_POL_COND
LPDHCP_POL_COND		typedef ptr DHCP_POL_COND

DHCP_POL_COND_ARRAY	STRUC
NumElements		dd ?
Elements		LPDHCP_POL_COND ?
DHCP_POL_COND_ARRAY	ENDS
PDHCP_POL_COND_ARRAY	typedef ptr DHCP_POL_COND_ARRAY
LPDHCP_POL_COND_ARRAY	typedef ptr DHCP_POL_COND_ARRAY

DHCP_POL_EXPR		STRUC
ParentExpr		dd ?
Operator		DHCP_POL_LOGIC_OPER ?
DHCP_POL_EXPR		ENDS
PDHCP_POL_EXPR		typedef ptr DHCP_POL_EXPR
LPDHCP_POL_EXPR		typedef ptr DHCP_POL_EXPR

DHCP_POL_EXPR_ARRAY	STRUC
NumElements		dd ?
Elements		LPDHCP_POL_EXPR ?
DHCP_POL_EXPR_ARRAY	ENDS
PDHCP_POL_EXPR_ARRAY	typedef ptr DHCP_POL_EXPR_ARRAY
LPDHCP_POL_EXPR_ARRAY	typedef ptr DHCP_POL_EXPR_ARRAY

DHCP_IP_RANGE_ARRAY	STRUC
NumElements		dd ?
Elements		LPDHCP_IP_RANGE ?
DHCP_IP_RANGE_ARRAY	ENDS
PDHCP_IP_RANGE_ARRAY	typedef ptr DHCP_IP_RANGE_ARRAY
LPDHCP_IP_RANGE_ARRAY	typedef ptr DHCP_IP_RANGE_ARRAY


DHCP_POLICY		STRUC
PolicyName		LPWSTR ?
IsGlobalPolicy		BOOL ?
Subnet			DHCP_IP_ADDRESS ?
ProcessingOrder		dd ?
Conditions		LPDHCP_POL_COND_ARRAY ?
Expressions		LPDHCP_POL_EXPR_ARRAY ?
Ranges			LPDHCP_IP_RANGE_ARRAY ?
Description		LPWSTR ?
Enabled			BOOL ?
DHCP_POLICY		ENDS
PDHCP_POLICY		typedef ptr DHCP_POLICY
LPDHCP_POLICY		typedef ptr DHCP_POLICY

DHCP_POLICY_ARRAY	STRUC
NumElements		dd ?
Elements		LPDHCP_POLICY ?
DHCP_POLICY_ARRAY	ENDS
PDHCP_POLICY_ARRAY	typedef ptr DHCP_POLICY_ARRAY
LPDHCP_POLICY_ARRAY	typedef ptr DHCP_POLICY_ARRAY


DHCP_POLICY_EX		STRUC
PolicyName		LPWSTR ?
IsGlobalPolicy		BOOL ?
Subnet			DHCP_IP_ADDRESS ?
ProcessingOrder		dd ?
Conditions		LPDHCP_POL_COND_ARRAY ?
Expressions		LPDHCP_POL_EXPR_ARRAY ?
Ranges			LPDHCP_IP_RANGE_ARRAY ?
Description		LPWSTR ?
Enabled			BOOL ?
Properties		LPDHCP_PROPERTY_ARRAY ?
DHCP_POLICY_EX		ENDS
PDHCP_POLICY_EX		typedef ptr DHCP_POLICY_EX
LPDHCP_POLICY_EX	typedef ptr DHCP_POLICY_EX

DHCP_POLICY_EX_ARRAY	STRUC
NumElements		dd ?
Elements		LPDHCP_POLICY_EX ?
DHCP_POLICY_EX_ARRAY	ENDS
PDHCP_POLICY_EX_ARRAY	typedef ptr DHCP_POLICY_EX_ARRAY
LPDHCP_POLICY_EX_ARRAY	typedef ptr DHCP_POLICY_EX_ARRAY

.enum {
    DhcpStatelessPurgeInterval		    = 0x01,
    DhcpStatelessStatus			    = 0x02
    }

DHCPV6_STATELESS_PARAMS STRUC
Status			BOOL ?
PurgeInterval		dd ?
DHCPV6_STATELESS_PARAMS ENDS
PDHCPV6_STATELESS_PARAMS typedef ptr DHCPV6_STATELESS_PARAMS
LPDHCPV6_STATELESS_PARAMS typedef ptr DHCPV6_STATELESS_PARAMS

DHCPV6_STATELESS_SCOPE_STATS STRUC
SubnetAddress		DHCP_IPV6_ADDRESS <>
NumStatelessClientsAdded ULONGLONG ?
NumStatelessClientsRemoved ULONGLONG ?
DHCPV6_STATELESS_SCOPE_STATS ENDS
PDHCPV6_STATELESS_SCOPE_STATS typedef ptr DHCPV6_STATELESS_SCOPE_STATS
LPDHCPV6_STATELESS_SCOPE_STATS typedef ptr DHCPV6_STATELESS_SCOPE_STATS

DHCPV6_STATELESS_STATS	STRUC
NumScopes		dd ?
ScopeStats		LPDHCPV6_STATELESS_SCOPE_STATS ?
DHCPV6_STATELESS_STATS	ENDS
PDHCPV6_STATELESS_STATS typedef ptr DHCPV6_STATELESS_STATS
LPDHCPV6_STATELESS_STATS typedef ptr DHCPV6_STATELESS_STATS

SCOPE_STATE_ENABLED	equ DhcpSubnetEnabled
SCOPE_STATE_DISABLED	equ DhcpSubnetDisabled

DHCP_MIN_DELAY		equ 0
DHCP_MAX_DELAY		equ 1000

ifndef	DHCPAPI_NO_PROTOTYPES

DhcpAddFilterV4 proto WINAPI :ptr, :ptr, :BOOL
DhcpDeleteFilterV4 proto WINAPI :ptr, :ptr
DhcpSetFilterV4 proto WINAPI :ptr, :ptr
DhcpGetFilterV4 proto WINAPI :ptr, :ptr
DhcpEnumFilterV4 proto WINAPI :ptr, :LPDHCP_ADDR_PATTERN, :DWORD, :DHCP_FILTER_LIST_TYPE, :ptr, :ptr, :ptr
DhcpCreateSubnet proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr
DhcpSetSubnetInfo proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr
DhcpGetSubnetInfo proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr
DhcpEnumSubnets proto WINAPI :ptr, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpAddSubnetElement proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr
DhcpEnumSubnetElements proto WINAPI :ptr, :DHCP_IP_ADDRESS, :DHCP_SUBNET_ELEMENT_TYPE, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpRemoveSubnetElement proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr, :DHCP_FORCE_FLAG
DhcpDeleteSubnet proto WINAPI :ptr, :DHCP_IP_ADDRESS, :DHCP_FORCE_FLAG
DhcpCreateOption proto WINAPI :ptr, :DHCP_OPTION_ID, :ptr
DhcpSetOptionInfo proto WINAPI :ptr, :DHCP_OPTION_ID, :ptr
DhcpGetOptionInfo proto WINAPI :ptr, :DHCP_OPTION_ID, :ptr
DhcpEnumOptions proto WINAPI :ptr, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpRemoveOption proto WINAPI :ptr, :DHCP_OPTION_ID
DhcpSetOptionValue proto WINAPI :ptr, :DHCP_OPTION_ID, :ptr, :ptr
DhcpSetOptionValues proto WINAPI :ptr, :ptr, :ptr
DhcpGetOptionValue proto WINAPI :ptr, :DHCP_OPTION_ID, :ptr, :ptr
DhcpEnumOptionValues proto WINAPI :ptr, :ptr, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpRemoveOptionValue proto WINAPI :ptr, :DHCP_OPTION_ID, :ptr
DhcpCreateClientInfoVQ proto WINAPI :ptr, :ptr
DhcpSetClientInfoVQ proto WINAPI :ptr, :ptr
DhcpGetClientInfoVQ proto WINAPI :ptr, :ptr, :ptr
DhcpEnumSubnetClientsVQ proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpEnumSubnetClientsFilterStatusInfo proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpCreateClientInfo proto WINAPI :ptr, :ptr
DhcpSetClientInfo proto WINAPI :ptr, :ptr
DhcpGetClientInfo proto WINAPI :ptr, :ptr, :ptr
DhcpDeleteClientInfo proto WINAPI :ptr, :ptr
DhcpEnumSubnetClients proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpGetClientOptions proto WINAPI :ptr, :DHCP_IP_ADDRESS, :DHCP_IP_MASK, :ptr
DhcpGetMibInfo proto WINAPI :ptr, :ptr
DhcpServerSetConfig proto WINAPI :ptr, :DWORD, :LPDHCP_SERVER_CONFIG_INFO
DhcpServerGetConfig proto WINAPI :ptr, :ptr
DhcpScanDatabase proto WINAPI :ptr, :DHCP_IP_ADDRESS, :DWORD, :ptr
DhcpRpcFreeMemory proto WINAPI :ptr
DhcpGetVersion proto WINAPI :LPWSTR, :LPDWORD, :LPDWORD
DhcpAddSubnetElementV4 proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr
DhcpEnumSubnetElementsV4 proto WINAPI :ptr, :DHCP_IP_ADDRESS, :DHCP_SUBNET_ELEMENT_TYPE, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpRemoveSubnetElementV4 proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr, :DHCP_FORCE_FLAG
DhcpCreateClientInfoV4 proto WINAPI :ptr, :ptr
DhcpSetClientInfoV4 proto WINAPI :ptr, :ptr
DhcpGetClientInfoV4 proto WINAPI :ptr, :ptr, :ptr
DhcpEnumSubnetClientsV4 proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpServerSetConfigV4 proto WINAPI :ptr, :DWORD, :LPDHCP_SERVER_CONFIG_INFO_V4
DhcpServerGetConfigV4 proto WINAPI :ptr, :ptr
DhcpSetSuperScopeV4 proto WINAPI :ptr, :DHCP_IP_ADDRESS, :LPWSTR, :BOOL
DhcpDeleteSuperScopeV4 proto WINAPI :ptr, :LPWSTR
DhcpGetSuperScopeInfoV4 proto WINAPI :ptr, :ptr
DhcpEnumSubnetClientsV5 proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpCreateOptionV5 proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR, :LPDHCP_OPTION
DhcpSetOptionInfoV5 proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR, :LPDHCP_OPTION
DhcpGetOptionInfoV5 proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR, :ptr
DhcpEnumOptionsV5 proto WINAPI :LPWSTR, :DWORD, :LPWSTR, :LPWSTR, :ptr, :ptr, :ptr, :ptr, :ptr
DhcpRemoveOptionV5 proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR
DhcpSetOptionValueV5 proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR, :LPDHCP_OPTION_SCOPE_INFO, :LPDHCP_OPTION_DATA
DhcpSetOptionValuesV5 proto WINAPI :LPWSTR, :DWORD, :LPWSTR, :LPWSTR, :LPDHCP_OPTION_SCOPE_INFO, :LPDHCP_OPTION_VALUE_ARRAY
DhcpGetOptionValueV5 proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR, :LPDHCP_OPTION_SCOPE_INFO, :ptr
DhcpGetOptionValueV6 proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR, :LPDHCP_OPTION_SCOPE_INFO6, :ptr
DhcpEnumOptionValuesV5 proto WINAPI :LPWSTR, :DWORD, :LPWSTR, :LPWSTR, :LPDHCP_OPTION_SCOPE_INFO, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpRemoveOptionValueV5 proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR, :LPDHCP_OPTION_SCOPE_INFO
DhcpCreateClass proto WINAPI :LPWSTR, :DWORD, :LPDHCP_CLASS_INFO
DhcpModifyClass proto WINAPI :LPWSTR, :DWORD, :LPDHCP_CLASS_INFO
DhcpDeleteClass proto WINAPI :LPWSTR, :DWORD, :LPWSTR
DhcpGetClassInfo proto WINAPI :LPWSTR, :DWORD, :LPDHCP_CLASS_INFO, :ptr
DhcpEnumClasses proto WINAPI :LPWSTR, :DWORD, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpGetAllOptions proto WINAPI :LPWSTR, :DWORD, :ptr
DhcpGetAllOptionsV6 proto WINAPI :LPWSTR, :DWORD, :ptr
DhcpGetAllOptionValues proto WINAPI :LPWSTR, :DWORD, :LPDHCP_OPTION_SCOPE_INFO, :ptr
DhcpGetAllOptionValuesV6 proto WINAPI :LPWSTR, :DWORD, :LPDHCP_OPTION_SCOPE_INFO6, :ptr
DhcpEnumServers proto WINAPI :DWORD, :ptr, :ptr, :ptr, :ptr
DhcpAddServer proto WINAPI :DWORD, :ptr, :LPDHCP_SERVER_INFO, :ptr, :ptr
DhcpDeleteServer proto WINAPI :DWORD, :ptr, :LPDHCP_SERVER_INFO, :ptr, :ptr
DhcpGetServerBindingInfo proto WINAPI :ptr, :ULONG, :ptr
DhcpSetServerBindingInfo proto WINAPI :ptr, :ULONG, :LPDHCP_BIND_ELEMENT_ARRAY
DhcpAddSubnetElementV5 proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr
DhcpEnumSubnetElementsV5 proto WINAPI :ptr, :DHCP_IP_ADDRESS, :DHCP_SUBNET_ELEMENT_TYPE, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpRemoveSubnetElementV5 proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr, :DHCP_FORCE_FLAG
DhcpV4EnumSubnetReservations proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpCreateOptionV6 proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR, :LPDHCP_OPTION
DhcpRemoveOptionV6 proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR
DhcpEnumOptionsV6 proto WINAPI :LPWSTR, :DWORD, :LPWSTR, :LPWSTR, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpRemoveOptionValueV6 proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR, :LPDHCP_OPTION_SCOPE_INFO6
DhcpGetOptionInfoV6 proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR, :ptr
DhcpSetOptionInfoV6 proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR, :LPDHCP_OPTION
DhcpSetOptionValueV6 proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR, :LPDHCP_OPTION_SCOPE_INFO6, :LPDHCP_OPTION_DATA
DhcpGetSubnetInfoVQ proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr
DhcpCreateSubnetVQ proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr
DhcpSetSubnetInfoVQ proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr
DhcpEnumOptionValuesV6 proto WINAPI :ptr, :DWORD, :LPWSTR, :LPWSTR, :LPDHCP_OPTION_SCOPE_INFO6, :ptr, :DWORD, :ptr, :ptr, :ptr

endif

DhcpDsInit proto WINAPI
DhcpDsCleanup proto WINAPI
DhcpSetThreadOptions proto WINAPI :DWORD, :ptr
DhcpGetThreadOptions proto WINAPI :LPDWORD, :ptr
DhcpServerQueryAttribute proto WINAPI :LPWSTR, :ptr, :DHCP_ATTRIB_ID, :ptr
DhcpServerQueryAttributes proto WINAPI :LPWSTR, :ULONG, :ULONG, :DHCP_ATTRIB_ID, :ptr
DhcpServerRedoAuthorization proto WINAPI :LPWSTR, :ULONG
DhcpAuditLogSetParams proto WINAPI :LPWSTR, :DWORD, :LPWSTR, :DWORD, :DWORD, :DWORD
DhcpAuditLogGetParams proto WINAPI :LPWSTR, :DWORD, :ptr, :ptr, :ptr, :ptr
DhcpServerQueryDnsRegCredentials proto WINAPI :LPWSTR, :ULONG, :LPWSTR, :ULONG, :LPWSTR
DhcpServerSetDnsRegCredentials proto WINAPI :LPWSTR, :LPWSTR, :LPWSTR, :LPWSTR
DhcpServerSetDnsRegCredentialsV5 proto WINAPI :LPWSTR, :LPWSTR, :LPWSTR, :LPWSTR
DhcpServerBackupDatabase proto WINAPI :LPWSTR, :LPWSTR
DhcpServerRestoreDatabase proto WINAPI :LPWSTR, :LPWSTR
DhcpServerSetConfigVQ proto WINAPI :ptr, :DWORD, :LPDHCP_SERVER_CONFIG_INFO_VQ
DhcpServerGetConfigVQ proto WINAPI :ptr, :ptr LPDHCP_SERVER_CONFIG_INFO_VQ
DhcpGetServerSpecificStrings proto WINAPI :ptr, :ptr LPDHCP_SERVER_SPECIFIC_STRINGS
DhcpServerAuditlogParamsFree proto WINAPI :ptr DHCP_SERVER_CONFIG_INFO_VQ
DhcpCreateSubnetV6 proto WINAPI :LPWSTR, :DHCP_IPV6_ADDRESS, :LPDHCP_SUBNET_INFO_V6
DhcpDeleteSubnetV6 proto WINAPI :LPWSTR, :DHCP_IPV6_ADDRESS, :DHCP_FORCE_FLAG
DhcpEnumSubnetsV6 proto WINAPI :ptr, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpAddSubnetElementV6 proto WINAPI :LPWSTR, :DHCP_IPV6_ADDRESS, :LPDHCP_SUBNET_ELEMENT_DATA_V6
DhcpRemoveSubnetElementV6 proto WINAPI :LPWSTR, :DHCP_IPV6_ADDRESS, :LPDHCP_SUBNET_ELEMENT_DATA_V6, :DHCP_FORCE_FLAG
DhcpEnumSubnetElementsV6 proto WINAPI :LPWSTR, :DHCP_IPV6_ADDRESS, :DHCP_SUBNET_ELEMENT_TYPE_V6, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpGetSubnetInfoV6 proto WINAPI :LPWSTR, :DHCP_IPV6_ADDRESS, :ptr
DhcpEnumSubnetClientsV6 proto WINAPI :ptr, :DHCP_IPV6_ADDRESS, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpServerGetConfigV6 proto WINAPI :ptr, :LPDHCP_OPTION_SCOPE_INFO6, :ptr
DhcpServerSetConfigV6 proto WINAPI :ptr, :ptr, :DWORD, :ptr
DhcpSetSubnetInfoV6 proto WINAPI :ptr, :DHCP_IPV6_ADDRESS, :LPDHCP_SUBNET_INFO_V6
DhcpGetMibInfoV6 proto WINAPI :ptr, :ptr
DhcpGetServerBindingInfoV6 proto WINAPI :ptr, :ULONG, :ptr
DhcpSetServerBindingInfoV6 proto WINAPI :ptr, :ULONG, :LPDHCPV6_BIND_ELEMENT_ARRAY
DhcpSetClientInfoV6 proto WINAPI :ptr, :ptr
DhcpGetClientInfoV6 proto WINAPI :ptr, :ptr, :ptr
DhcpDeleteClientInfoV6 proto WINAPI :ptr, :ptr
DhcpCreateClassV6 proto WINAPI :LPWSTR, :DWORD, :LPDHCP_CLASS_INFO_V6
DhcpModifyClassV6 proto WINAPI :LPWSTR, :DWORD, :LPDHCP_CLASS_INFO_V6
DhcpDeleteClassV6 proto WINAPI :LPWSTR, :DWORD, :LPWSTR
DhcpEnumClassesV6 proto WINAPI :LPWSTR, :DWORD, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpSetSubnetDelayOffer proto WINAPI :LPWSTR, :DHCP_IP_ADDRESS, :USHORT
DhcpGetSubnetDelayOffer proto WINAPI :LPWSTR, :DHCP_IP_ADDRESS, :ptr
DhcpGetMibInfoV5 proto WINAPI :ptr, :ptr
DhcpAddSecurityGroup proto WINAPI :LPWSTR
DhcpV4GetOptionValue proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR, :ptr, :ptr
DhcpV4SetOptionValue proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR, :ptr, :ptr
DhcpV4SetOptionValues proto WINAPI :LPWSTR, :DWORD, :LPWSTR, :LPWSTR, :ptr, :ptr
DhcpV4RemoveOptionValue proto WINAPI :LPWSTR, :DWORD, :DHCP_OPTION_ID, :LPWSTR, :LPWSTR, :LPDHCP_OPTION_SCOPE_INFO
DhcpV4GetAllOptionValues proto WINAPI :LPWSTR, :DWORD, :LPDHCP_OPTION_SCOPE_INFO, :ptr

DHCP_FAILOVER_DELETE_SCOPES equ 0x00000001
DHCP_FAILOVER_MAX_NUM_ADD_SCOPES equ 400
DHCP_FAILOVER_MAX_NUM_REL equ 31

.enum DHCP_FAILOVER_MODE {
    LoadBalance,
    HotStandby
    }


.enum DHCP_FAILOVER_SERVER {
    PrimaryServer,
    SecondaryServer
    }

.enum FSM_STATE {
    NO_STATE=0,
    INIT,
    STARTUP,
    NORMAL,
    COMMUNICATION_INT,
    PARTNER_DOWN,
    POTENTIAL_CONFLICT,
    CONFLICT_DONE,
    RESOLUTION_INT,
    RECOVER,
    RECOVER_WAIT,
    RECOVER_DONE,
    PAUSED,
    SHUTDOWN
    }

DHCP_FAILOVER_RELATIONSHIP STRUC
PrimaryServer		DHCP_IP_ADDRESS ?
SecondaryServer		DHCP_IP_ADDRESS ?
Mode			DHCP_FAILOVER_MODE ?
ServerType		DHCP_FAILOVER_SERVER ?
State			FSM_STATE ?
PrevState		FSM_STATE ?
Mclt			dd ?
SafePeriod		dd ?
RelationshipName	LPWSTR ?
PrimaryServerName	LPWSTR ?
SecondaryServerName	LPWSTR ?
pScopes			LPDHCP_IP_ARRAY ?
Percentage		db ?
SharedSecret		LPWSTR ?
DHCP_FAILOVER_RELATIONSHIP ENDS
LPDHCP_FAILOVER_RELATIONSHIP typedef ptr DHCP_FAILOVER_RELATIONSHIP


DHCP_FAILOVER_RELATIONSHIP_ARRAY STRUC
NumElements		dd ?
pRelationships		LPDHCP_FAILOVER_RELATIONSHIP ?
DHCP_FAILOVER_RELATIONSHIP_ARRAY  ENDS
LPDHCP_FAILOVER_RELATIONSHIP_ARRAY typedef ptr DHCP_FAILOVER_RELATIONSHIP_ARRAY


DHCPV4_FAILOVER_CLIENT_INFO  STRUC
ClientIpAddress		DHCP_IP_ADDRESS ?
SubnetMask		DHCP_IP_MASK ?
ClientHardwareAddress	DHCP_CLIENT_UID <>
ClientName		LPWSTR ?
ClientComment		LPWSTR ?
ClientLeaseExpires	DATE_TIME <>
OwnerHost		DHCP_HOST_INFO <>
bClientType		db ?
AddressState		db ?
Status			QuarantineStatus ?
ProbationEnds		DATE_TIME <>
QuarantineCapable	BOOL ?
SentPotExpTime		dd ?
AckPotExpTime		dd ?
RecvPotExpTime		dd ?
StartTime		dd ?
CltLastTransTime	dd ?
LastBndUpdTime		dd ?
BndMsgStatus		dd ?
PolicyName		LPWSTR ?
Flags			db ?
DHCPV4_FAILOVER_CLIENT_INFO ENDS
LPDHCPV4_FAILOVER_CLIENT_INFO typedef ptr DHCPV4_FAILOVER_CLIENT_INFO

DHCPV4_FAILOVER_CLIENT_INFO_ARRAY  STRUC
NumElements		dd ?
Clients			ptr LPDHCPV4_FAILOVER_CLIENT_INFO ?
DHCPV4_FAILOVER_CLIENT_INFO_ARRAY ENDS
LPDHCPV4_FAILOVER_CLIENT_INFO_ARRAY typedef ptr DHCPV4_FAILOVER_CLIENT_INFO_ARRAY

DHCPV4_FAILOVER_CLIENT_INFO_EX	STRUC
ClientIpAddress		DHCP_IP_ADDRESS ?
SubnetMask		DHCP_IP_MASK ?
ClientHardwareAddress	DHCP_CLIENT_UID <>
ClientName		LPWSTR ?
ClientComment		LPWSTR ?
ClientLeaseExpires	DATE_TIME <>
OwnerHost		DHCP_HOST_INFO <>
bClientType		db ?
AddressState		db ?
Status			QuarantineStatus ?
ProbationEnds		DATE_TIME <>
QuarantineCapable	BOOL ?
SentPotExpTime		dd ?
AckPotExpTime		dd ?
RecvPotExpTime		dd ?
StartTime		dd ?
CltLastTransTime	dd ?
LastBndUpdTime		dd ?
BndMsgStatus		dd ?
PolicyName		LPWSTR ?
Flags			db ?
AddressStateEx		dd ?
DHCPV4_FAILOVER_CLIENT_INFO_EX ENDS
LPDHCPV4_FAILOVER_CLIENT_INFO_EX typedef ptr DHCPV4_FAILOVER_CLIENT_INFO_EX

DHCP_FAILOVER_STATISTICS STRUC
NumAddr			dd ?
AddrFree		dd ?
AddrInUse		dd ?
PartnerAddrFree		dd ?
ThisAddrFree		dd ?
PartnerAddrInUse	dd ?
ThisAddrInUse		dd ?
DHCP_FAILOVER_STATISTICS ENDS
LPDHCP_FAILOVER_STATISTICS typedef ptr DHCP_FAILOVER_STATISTICS


MCLT			equ 0x00000001
SAFEPERIOD		equ 0x00000002
CHANGESTATE		equ 0x00000004
PERCENTAGE		equ 0x00000008
MODE			equ 0x00000010
PREVSTATE		equ 0x00000020
SHAREDSECRET		equ 0x00000040

DhcpV4FailoverCreateRelationship proto WINAPI :LPWSTR, :LPDHCP_FAILOVER_RELATIONSHIP
DhcpV4FailoverSetRelationship proto WINAPI :LPWSTR, :DWORD, :LPDHCP_FAILOVER_RELATIONSHIP
DhcpV4FailoverDeleteRelationship proto WINAPI :LPWSTR, :LPWSTR
DhcpV4FailoverGetRelationship proto WINAPI :LPWSTR, :LPWSTR, :ptr
DhcpV4FailoverEnumRelationship proto WINAPI :LPWSTR, :ptr, :DWORD, :ptr, :LPDWORD, :LPDWORD
DhcpV4FailoverAddScopeToRelationship proto WINAPI :LPWSTR, :LPDHCP_FAILOVER_RELATIONSHIP
DhcpV4FailoverDeleteScopeFromRelationship proto WINAPI :LPWSTR, :LPDHCP_FAILOVER_RELATIONSHIP
DhcpV4FailoverGetScopeRelationship proto WINAPI :LPWSTR, :DHCP_IP_ADDRESS, :ptr
DhcpV4FailoverGetScopeStatistics proto WINAPI :LPWSTR, :DHCP_IP_ADDRESS, :ptr
DhcpV4FailoverGetClientInfo proto WINAPI :LPWSTR, :ptr, :ptr
DhcpV4FailoverGetSystemTime proto WINAPI :LPWSTR, :LPDWORD, :LPDWORD
DhcpV4FailoverGetAddressStatus proto WINAPI :LPWSTR, :DHCP_IP_ADDRESS, :LPDWORD
DhcpV4FailoverTriggerAddrAllocation proto WINAPI :LPWSTR, :LPWSTR
DhcpHlprCreateV4Policy proto WINAPI :LPWSTR, :BOOL, :DHCP_IP_ADDRESS, :DWORD, :DHCP_POL_LOGIC_OPER, :LPWSTR, :BOOL,  :ptr
DhcpHlprCreateV4PolicyEx proto WINAPI :LPWSTR, :BOOL, :DHCP_IP_ADDRESS, :DWORD, :DHCP_POL_LOGIC_OPER, :LPWSTR, :BOOL, :ptr
DhcpHlprAddV4PolicyExpr proto WINAPI :LPDHCP_POLICY, :DWORD, :DHCP_POL_LOGIC_OPER, :ptr
DhcpHlprAddV4PolicyCondition proto WINAPI :LPDHCP_POLICY, :DWORD, :DHCP_POL_ATTR_TYPE, :DWORD, :DWORD, :LPWSTR, :DHCP_POL_COMPARATOR, :LPBYTE, :DHCP_POL_COMPARATOR, :DWORD, :ptr
DhcpHlprAddV4PolicyRange proto WINAPI :LPDHCP_POLICY, :LPDHCP_IP_RANGE
DhcpHlprResetV4PolicyExpr proto WINAPI :LPDHCP_POLICY
DhcpHlprModifyV4PolicyExpr proto WINAPI :LPDHCP_POLICY, :DHCP_POL_LOGIC_OPER
DhcpHlprFreeV4Policy proto WINAPI :LPDHCP_POLICY
DhcpHlprFreeV4PolicyArray proto WINAPI :LPDHCP_POLICY_ARRAY
DhcpHlprFreeV4PolicyEx proto WINAPI :LPDHCP_POLICY_EX
DhcpHlprFreeV4PolicyExArray proto WINAPI :LPDHCP_POLICY_EX_ARRAY
DhcpHlprFreeV4DhcpProperty proto WINAPI :LPDHCP_PROPERTY
DhcpHlprFreeV4DhcpPropertyArray proto WINAPI :LPDHCP_PROPERTY_ARRAY
DhcpHlprFindV4DhcpProperty proto WINAPI :ptr, :DHCP_PROPERTY_ID, :DHCP_PROPERTY_TYPE
DhcpHlprIsV4PolicySingleUC proto WINAPI :LPDHCP_POLICY
DhcpV4QueryPolicyEnforcement proto WINAPI :LPWSTR, :BOOL, :DHCP_IP_ADDRESS, :ptr
DhcpV4SetPolicyEnforcement proto WINAPI :LPWSTR, :BOOL, :DHCP_IP_ADDRESS, :BOOL
DhcpHlprIsV4PolicyWellFormed proto WINAPI :LPDHCP_POLICY
DhcpHlprIsV4PolicyValid proto WINAPI :LPDHCP_POLICY
DhcpV4CreatePolicy proto WINAPI :LPWSTR, :LPDHCP_POLICY
DhcpV4GetPolicy proto WINAPI :LPWSTR, :BOOL, :DHCP_IP_ADDRESS, :LPWSTR, :ptr
DhcpV4SetPolicy proto WINAPI :LPWSTR, :DWORD, :BOOL, :DHCP_IP_ADDRESS, :LPWSTR, :LPDHCP_POLICY
DhcpV4DeletePolicy proto WINAPI :LPWSTR, :BOOL, :DHCP_IP_ADDRESS, :LPWSTR
DhcpV4EnumPolicies proto WINAPI :LPWSTR, :LPDWORD, :DWORD, :BOOL, :DHCP_IP_ADDRESS, :ptr, :ptr, :ptr
DhcpV4AddPolicyRange proto WINAPI :LPWSTR, :DHCP_IP_ADDRESS, :LPWSTR, :LPDHCP_IP_RANGE
DhcpV4RemovePolicyRange proto WINAPI :LPWSTR, :DHCP_IP_ADDRESS, :LPWSTR, :LPDHCP_IP_RANGE
DhcpV6SetStatelessStoreParams proto WINAPI :LPWSTR, :BOOL, :DHCP_IPV6_ADDRESS, :DWORD, :LPDHCPV6_STATELESS_PARAMS
DhcpV6GetStatelessStoreParams proto WINAPI :LPWSTR, :BOOL, :DHCP_IPV6_ADDRESS, :ptr
DhcpV6GetStatelessStatistics proto WINAPI :LPWSTR, :ptr
DhcpV4CreateClientInfo proto WINAPI :ptr, :LPDHCP_CLIENT_INFO_PB
DhcpV4EnumSubnetClients proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpV4GetClientInfo proto WINAPI :ptr, :ptr, :ptr
DhcpV6CreateClientInfo proto WINAPI :ptr, :LPDHCP_CLIENT_INFO_V6
DhcpV4GetFreeIPAddress proto WINAPI :LPWSTR, :DHCP_IP_ADDRESS, :DHCP_IP_ADDRESS, :DHCP_IP_ADDRESS, :DWORD, :ptr
DhcpV6GetFreeIPAddress proto WINAPI :LPWSTR, :DHCP_IPV6_ADDRESS, :DHCP_IPV6_ADDRESS, :DHCP_IPV6_ADDRESS, :DWORD, :ptr
DhcpV4CreateClientInfoEx proto WINAPI :ptr, :LPDHCP_CLIENT_INFO_EX
DhcpV4EnumSubnetClientsEx proto WINAPI :ptr, :DHCP_IP_ADDRESS, :ptr, :DWORD, :ptr, :ptr, :ptr
DhcpV4GetClientInfoEx proto WINAPI :ptr, :ptr, :ptr
DhcpV4CreatePolicyEx proto WINAPI :LPWSTR, :LPDHCP_POLICY_EX
DhcpV4GetPolicyEx proto WINAPI :LPWSTR, :BOOL, :DHCP_IP_ADDRESS, :LPWSTR, :ptr
DhcpV4SetPolicyEx proto WINAPI :LPWSTR, :DWORD, :BOOL, :DHCP_IP_ADDRESS, :LPWSTR, :ptr
DhcpV4EnumPoliciesEx proto WINAPI :LPWSTR, :LPDWORD, :DWORD, :BOOL, :DHCP_IP_ADDRESS, :ptr, :ptr, :ptr

endif

endif
.pragma list(pop)