mirror of https://github.com/UMSKT/xpmgr.git
2561 lines
84 KiB
C
2561 lines
84 KiB
C
/*++
|
|
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
Module Name: dhcpsapi.h
|
|
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef _DHCPSAPI_
|
|
#define _DHCPSAPI_
|
|
|
|
#pragma once
|
|
|
|
#if defined(MIDL_PASS)
|
|
#define LPWSTR [string] wchar_t *
|
|
#endif
|
|
|
|
|
|
#if (_MSC_VER >= 800)
|
|
#define DHCP_API_FUNCTION __stdcall
|
|
#else
|
|
#define DHCP_API_FUNCTION
|
|
#endif
|
|
|
|
|
|
#ifdef __cplusplus
|
|
#define DHCP_CONST const
|
|
extern "C" {
|
|
#else
|
|
#define DHCP_CONST
|
|
#endif // __cplusplus
|
|
|
|
|
|
#ifndef _DHCP_
|
|
|
|
typedef DWORD DHCP_IP_ADDRESS, *PDHCP_IP_ADDRESS, *LPDHCP_IP_ADDRESS;
|
|
typedef DWORD DHCP_OPTION_ID;
|
|
|
|
typedef struct _DATE_TIME {
|
|
DWORD dwLowDateTime;
|
|
DWORD dwHighDateTime;
|
|
} DATE_TIME,*PDATE_TIME, *LPDATE_TIME;
|
|
|
|
|
|
#endif // _DHCP_
|
|
|
|
typedef DWORD DHCP_IP_MASK;
|
|
typedef DWORD DHCP_RESUME_HANDLE;
|
|
|
|
|
|
typedef struct _DHCP_IP_RANGE {
|
|
DHCP_IP_ADDRESS StartAddress;
|
|
DHCP_IP_ADDRESS EndAddress;
|
|
} DHCP_IP_RANGE, *LPDHCP_IP_RANGE;
|
|
|
|
typedef struct _DHCP_BINARY_DATA {
|
|
DWORD DataLength;
|
|
|
|
#if defined(MIDL_PASS)
|
|
[size_is(DataLength)]
|
|
#endif // MIDL_PASS
|
|
__field_bcount(DataLength) BYTE *Data;
|
|
|
|
} DHCP_BINARY_DATA, *LPDHCP_BINARY_DATA;
|
|
|
|
typedef DHCP_BINARY_DATA DHCP_CLIENT_UID;
|
|
|
|
typedef struct _DHCP_HOST_INFO {
|
|
DHCP_IP_ADDRESS IpAddress; // minimum information always available
|
|
LPWSTR NetBiosName; // optional information
|
|
LPWSTR HostName; // optional information
|
|
} DHCP_HOST_INFO, *LPDHCP_HOST_INFO;
|
|
|
|
|
|
typedef enum _DHCP_FORCE_FLAG {
|
|
DhcpFullForce,
|
|
DhcpNoForce
|
|
} DHCP_FORCE_FLAG, *LPDHCP_FORCE_FLAG;
|
|
|
|
|
|
typedef struct _DWORD_DWORD {
|
|
DWORD DWord1;
|
|
DWORD DWord2;
|
|
} DWORD_DWORD, *LPDWORD_DWORD;
|
|
|
|
|
|
typedef enum _DHCP_SUBNET_STATE {
|
|
DhcpSubnetEnabled = 0,
|
|
DhcpSubnetDisabled,
|
|
DhcpSubnetEnabledSwitched,
|
|
DhcpSubnetDisabledSwitched,
|
|
DhcpSubnetInvalidState
|
|
} DHCP_SUBNET_STATE, *LPDHCP_SUBNET_STATE;
|
|
|
|
//
|
|
// Subnet related data structures.
|
|
//
|
|
|
|
typedef struct _DHCP_SUBNET_INFO {
|
|
DHCP_IP_ADDRESS SubnetAddress;
|
|
DHCP_IP_MASK SubnetMask;
|
|
LPWSTR SubnetName;
|
|
LPWSTR SubnetComment;
|
|
DHCP_HOST_INFO PrimaryHost;
|
|
DHCP_SUBNET_STATE SubnetState;
|
|
} DHCP_SUBNET_INFO, *LPDHCP_SUBNET_INFO;
|
|
|
|
#define DHCP_SUBNET_INFO_VQ_FLAG_QUARANTINE (1 << 0) // Bit 0
|
|
|
|
typedef struct _DHCP_SUBNET_INFO_VQ {
|
|
DHCP_IP_ADDRESS SubnetAddress;
|
|
DHCP_IP_MASK SubnetMask;
|
|
LPWSTR SubnetName;
|
|
LPWSTR SubnetComment;
|
|
DHCP_HOST_INFO PrimaryHost;
|
|
DHCP_SUBNET_STATE SubnetState;
|
|
DWORD QuarantineOn;
|
|
DWORD Reserved1;
|
|
DWORD Reserved2;
|
|
INT64 Reserved3;
|
|
INT64 Reserved4;
|
|
} DHCP_SUBNET_INFO_VQ, *LPDHCP_SUBNET_INFO_VQ;
|
|
|
|
|
|
typedef struct _DHCP_IP_ARRAY {
|
|
DWORD NumElements;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif // MIDL_PASS
|
|
__field_ecount(NumElements) LPDHCP_IP_ADDRESS Elements; //array
|
|
} DHCP_IP_ARRAY, *LPDHCP_IP_ARRAY;
|
|
|
|
typedef struct _DHCP_IP_CLUSTER {
|
|
DHCP_IP_ADDRESS ClusterAddress; // First IP address of the cluster.
|
|
DWORD ClusterMask; // Cluster usage mask, 0xFFFFFFFF
|
|
// indicates the cluster is fully used.
|
|
} DHCP_IP_CLUSTER, *LPDHCP_IP_CLUSTER;
|
|
|
|
typedef struct _DHCP_IP_RESERVATION {
|
|
DHCP_IP_ADDRESS ReservedIpAddress;
|
|
DHCP_CLIENT_UID *ReservedForClient;
|
|
} DHCP_IP_RESERVATION, *LPDHCP_IP_RESERVATION;
|
|
|
|
typedef enum _DHCP_SUBNET_ELEMENT_TYPE_V5 {
|
|
DhcpIpRanges,
|
|
DhcpSecondaryHosts,
|
|
DhcpReservedIps,
|
|
DhcpExcludedIpRanges,
|
|
DhcpIpUsedClusters,
|
|
DhcpIpRangesDhcpOnly,
|
|
DhcpIpRangesDhcpBootp,
|
|
DhcpIpRangesBootpOnly,
|
|
} DHCP_SUBNET_ELEMENT_TYPE, *LPDHCP_SUBNET_ELEMENT_TYPE;
|
|
|
|
#define ELEMENT_MASK(E) ((((E) <= DhcpIpRangesBootpOnly) && (DhcpIpRangesDhcpOnly <= (E)))?(0):(E))
|
|
|
|
typedef struct _DHCP_SUBNET_ELEMENT_DATA {
|
|
DHCP_SUBNET_ELEMENT_TYPE ElementType;
|
|
#if defined(MIDL_PASS)
|
|
[switch_is(ELEMENT_MASK(ElementType)), switch_type(DHCP_SUBNET_ELEMENT_TYPE)]
|
|
union _DHCP_SUBNET_ELEMENT_UNION {
|
|
[case(DhcpIpRanges)] DHCP_IP_RANGE *IpRange;
|
|
[case(DhcpSecondaryHosts)] DHCP_HOST_INFO *SecondaryHost;
|
|
[case(DhcpReservedIps)] DHCP_IP_RESERVATION *ReservedIp;
|
|
[case(DhcpExcludedIpRanges)] DHCP_IP_RANGE *ExcludeIpRange;
|
|
[case(DhcpIpUsedClusters)] DHCP_IP_CLUSTER *IpUsedCluster;
|
|
} Element;
|
|
#else
|
|
union _DHCP_SUBNET_ELEMENT_UNION {
|
|
DHCP_IP_RANGE *IpRange;
|
|
DHCP_HOST_INFO *SecondaryHost;
|
|
DHCP_IP_RESERVATION *ReservedIp;
|
|
DHCP_IP_RANGE *ExcludeIpRange;
|
|
DHCP_IP_CLUSTER *IpUsedCluster;
|
|
} Element;
|
|
#endif // MIDL_PASS
|
|
} DHCP_SUBNET_ELEMENT_DATA, *LPDHCP_SUBNET_ELEMENT_DATA;
|
|
|
|
#if !defined(MIDL_PASS)
|
|
typedef union _DHCP_SUBNET_ELEMENT_UNION
|
|
DHCP_SUBNET_ELEMENT_UNION, *LPDHCP_SUBNET_ELEMENT_UNION;
|
|
#endif
|
|
|
|
typedef struct _DHCP_SUBNET_ELEMENT_INFO_ARRAY {
|
|
DWORD NumElements;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif // MIDL_PASS
|
|
LPDHCP_SUBNET_ELEMENT_DATA Elements; //array
|
|
} DHCP_SUBNET_ELEMENT_INFO_ARRAY, *LPDHCP_SUBNET_ELEMENT_INFO_ARRAY;
|
|
|
|
typedef struct _DHCP_IPV6_ADDRESS {
|
|
ULONGLONG HighOrderBits;
|
|
ULONGLONG LowOrderBits;
|
|
} DHCP_IPV6_ADDRESS, *LPDHCP_IPV6_ADDRESS, *PDHCP_IPV6_ADDRESS;
|
|
|
|
typedef DHCP_IPV6_ADDRESS DHCP_RESUME_IPV6_HANDLE;
|
|
|
|
//
|
|
// DHCP Filter related data structures.
|
|
//
|
|
|
|
#define MAX_PATTERN_LENGTH 255
|
|
#define MAC_ADDRESS_LENGTH 6
|
|
#define HWTYPE_ETHERNET_10MB 1
|
|
|
|
typedef enum _DHCP_FILTER_LIST_TYPE {
|
|
Deny,
|
|
Allow
|
|
} DHCP_FILTER_LIST_TYPE, *LPDHCP_FILTER_LIST_TYPE;
|
|
|
|
typedef struct _DHCP_ADDR_PATTERN {
|
|
BOOL MatchHWType;
|
|
BYTE HWType;
|
|
BOOL IsWildcard;
|
|
BYTE Length;
|
|
BYTE Pattern[MAX_PATTERN_LENGTH]; // Variable Length address/pattern
|
|
} DHCP_ADDR_PATTERN, *LPDHCP_ADDR_PATTERN;
|
|
|
|
typedef struct _DHCP_FILTER_ADD_INFOV4 {
|
|
DHCP_ADDR_PATTERN AddrPatt; // Contains address/pattern
|
|
LPWSTR Comment; // Comment associated with address/pattern
|
|
DHCP_FILTER_LIST_TYPE ListType; // Enum that specifies either allow or deny
|
|
} DHCP_FILTER_ADD_INFO, *LPDHCP_FILTER_ADD_INFO;
|
|
|
|
typedef struct _DHCP_FILTER_GLOBAL_INFO {
|
|
BOOL EnforceAllowList;
|
|
BOOL EnforceDenyList;
|
|
} DHCP_FILTER_GLOBAL_INFO, *LPDHCP_FILTER_GLOBAL_INFO;
|
|
|
|
typedef struct _DHCP_FILTER_RECORD {
|
|
DHCP_ADDR_PATTERN AddrPatt; // Contains MAC address/pattern and Mask
|
|
LPWSTR Comment; // Comment associated with MAC address/pattern
|
|
} DHCP_FILTER_RECORD, *LPDHCP_FILTER_RECORD;
|
|
|
|
typedef struct _DHCP_FILTER_ENUM_INFO {
|
|
DWORD NumElements;
|
|
#if defined( MIDL_PASS )
|
|
[ size_is( NumElements ) ]
|
|
#endif;
|
|
__field_ecount(NumElements) LPDHCP_FILTER_RECORD pEnumRecords;
|
|
} DHCP_FILTER_ENUM_INFO, *LPDHCP_FILTER_ENUM_INFO;
|
|
|
|
//
|
|
// DHCP Options related data structures.
|
|
//
|
|
|
|
typedef enum _DHCP_OPTION_DATA_TYPE {
|
|
DhcpByteOption,
|
|
DhcpWordOption,
|
|
DhcpDWordOption,
|
|
DhcpDWordDWordOption,
|
|
DhcpIpAddressOption,
|
|
DhcpStringDataOption,
|
|
DhcpBinaryDataOption,
|
|
DhcpEncapsulatedDataOption,
|
|
DhcpIpv6AddressOption
|
|
} DHCP_OPTION_DATA_TYPE, *LPDHCP_OPTION_DATA_TYPE;
|
|
|
|
|
|
typedef struct _DHCP_OPTION_DATA_ELEMENT {
|
|
DHCP_OPTION_DATA_TYPE OptionType;
|
|
#if defined(MIDL_PASS)
|
|
[switch_is(OptionType), switch_type(DHCP_OPTION_DATA_TYPE)]
|
|
union _DHCP_OPTION_ELEMENT_UNION {
|
|
[case(DhcpByteOption)] BYTE ByteOption;
|
|
[case(DhcpWordOption)] WORD WordOption;
|
|
[case(DhcpDWordOption)] DWORD DWordOption;
|
|
[case(DhcpDWordDWordOption)] DWORD_DWORD DWordDWordOption;
|
|
[case(DhcpIpAddressOption)] DHCP_IP_ADDRESS IpAddressOption;
|
|
[case(DhcpStringDataOption)] LPWSTR StringDataOption;
|
|
[case(DhcpBinaryDataOption)] DHCP_BINARY_DATA BinaryDataOption;
|
|
[case(DhcpEncapsulatedDataOption)] DHCP_BINARY_DATA EncapsulatedDataOption;
|
|
[case(DhcpIpv6AddressOption)] LPWSTR Ipv6AddressDataOption;
|
|
} Element;
|
|
#else
|
|
union _DHCP_OPTION_ELEMENT_UNION {
|
|
BYTE ByteOption;
|
|
WORD WordOption;
|
|
DWORD DWordOption;
|
|
DWORD_DWORD DWordDWordOption;
|
|
DHCP_IP_ADDRESS IpAddressOption;
|
|
LPWSTR StringDataOption;
|
|
DHCP_BINARY_DATA BinaryDataOption;
|
|
DHCP_BINARY_DATA EncapsulatedDataOption;
|
|
LPWSTR Ipv6AddressDataOption;
|
|
|
|
} Element;
|
|
#endif // MIDL_PASS
|
|
} DHCP_OPTION_DATA_ELEMENT, *LPDHCP_OPTION_DATA_ELEMENT;
|
|
|
|
#if !defined(MIDL_PASS)
|
|
typedef union _DHCP_OPTION_ELEMENT_UNION
|
|
DHCP_OPTION_ELEMENT_UNION, *LPDHCP_OPTION_ELEMENT_UNION;
|
|
#endif
|
|
|
|
typedef struct _DHCP_OPTION_DATA {
|
|
DWORD NumElements; // number of option elements in the pointed array
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif // MIDL_PASS
|
|
__field_ecount(NumElements) LPDHCP_OPTION_DATA_ELEMENT Elements; //array
|
|
} DHCP_OPTION_DATA, *LPDHCP_OPTION_DATA;
|
|
|
|
typedef enum _DHCP_OPTION_TYPE {
|
|
DhcpUnaryElementTypeOption,
|
|
DhcpArrayTypeOption
|
|
} DHCP_OPTION_TYPE, *LPDHCP_OPTION_TYPE;
|
|
|
|
typedef struct _DHCP_OPTION {
|
|
DHCP_OPTION_ID OptionID;
|
|
LPWSTR OptionName;
|
|
LPWSTR OptionComment;
|
|
DHCP_OPTION_DATA DefaultValue;
|
|
DHCP_OPTION_TYPE OptionType;
|
|
} DHCP_OPTION, *LPDHCP_OPTION;
|
|
|
|
typedef struct _DHCP_OPTION_ARRAY {
|
|
DWORD NumElements; // number of options in the pointed array
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif // MIDL_PASS
|
|
LPDHCP_OPTION Options; // array
|
|
} DHCP_OPTION_ARRAY, *LPDHCP_OPTION_ARRAY;
|
|
|
|
typedef struct _DHCP_OPTION_VALUE {
|
|
DHCP_OPTION_ID OptionID;
|
|
DHCP_OPTION_DATA Value;
|
|
} DHCP_OPTION_VALUE, *LPDHCP_OPTION_VALUE;
|
|
|
|
typedef struct _DHCP_OPTION_VALUE_ARRAY {
|
|
DWORD NumElements; // number of options in the pointed array
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif // MIDL_PASS
|
|
LPDHCP_OPTION_VALUE Values; // array
|
|
} DHCP_OPTION_VALUE_ARRAY, *LPDHCP_OPTION_VALUE_ARRAY;
|
|
|
|
typedef enum _DHCP_OPTION_SCOPE_TYPE {
|
|
DhcpDefaultOptions,
|
|
DhcpGlobalOptions,
|
|
DhcpSubnetOptions,
|
|
DhcpReservedOptions,
|
|
DhcpMScopeOptions
|
|
} DHCP_OPTION_SCOPE_TYPE, *LPDHCP_OPTION_SCOPE_TYPE;
|
|
|
|
typedef struct _DHCP_RESERVED_SCOPE {
|
|
DHCP_IP_ADDRESS ReservedIpAddress;
|
|
DHCP_IP_ADDRESS ReservedIpSubnetAddress;
|
|
} DHCP_RESERVED_SCOPE, *LPDHCP_RESERVED_SCOPE;
|
|
|
|
typedef struct _DHCP_OPTION_SCOPE_INFO {
|
|
DHCP_OPTION_SCOPE_TYPE ScopeType;
|
|
#if defined(MIDL_PASS)
|
|
[switch_is(ScopeType), switch_type(DHCP_OPTION_SCOPE_TYPE)]
|
|
union _DHCP_OPTION_SCOPE_UNION {
|
|
[case(DhcpDefaultOptions)] ;
|
|
[case(DhcpGlobalOptions)] ;
|
|
[case(DhcpSubnetOptions)] DHCP_IP_ADDRESS SubnetScopeInfo;
|
|
[case(DhcpReservedOptions)] DHCP_RESERVED_SCOPE ReservedScopeInfo;
|
|
[case(DhcpMScopeOptions)] LPWSTR MScopeInfo;
|
|
} ScopeInfo;
|
|
#else
|
|
union _DHCP_OPTION_SCOPE_UNION {
|
|
PVOID DefaultScopeInfo; // must be NULL
|
|
PVOID GlobalScopeInfo; // must be NULL
|
|
DHCP_IP_ADDRESS SubnetScopeInfo;
|
|
DHCP_RESERVED_SCOPE ReservedScopeInfo;
|
|
LPWSTR MScopeInfo;
|
|
} ScopeInfo;
|
|
#endif // MIDL_PASS
|
|
} DHCP_OPTION_SCOPE_INFO, *LPDHCP_OPTION_SCOPE_INFO;
|
|
|
|
typedef enum _DHCP_OPTION_SCOPE_TYPE6 {
|
|
DhcpDefaultOptions6,
|
|
DhcpScopeOptions6,
|
|
DhcpReservedOptions6,
|
|
DhcpGlobalOptions6
|
|
} DHCP_OPTION_SCOPE_TYPE6, *LPDHCP_OPTION_SCOPE_TYPE6;
|
|
|
|
typedef struct _DHCP_RESERVED_SCOPE6 {
|
|
DHCP_IPV6_ADDRESS ReservedIpAddress;
|
|
DHCP_IPV6_ADDRESS ReservedIpSubnetAddress;
|
|
} DHCP_RESERVED_SCOPE6, *LPDHCP_RESERVED_SCOPE6;
|
|
|
|
typedef struct _DHCP_OPTION_SCOPE_INFO6 {
|
|
DHCP_OPTION_SCOPE_TYPE6 ScopeType;
|
|
#if defined(MIDL_PASS)
|
|
[switch_is(ScopeType), switch_type(DHCP_OPTION_SCOPE_TYPE6)]
|
|
union _DHCP_OPTION_SCOPE_UNION6 {
|
|
[case(DhcpDefaultOptions6)] ;
|
|
[case(DhcpScopeOptions6)] DHCP_IPV6_ADDRESS SubnetScopeInfo;
|
|
[case(DhcpReservedOptions6)] DHCP_RESERVED_SCOPE6 ReservedScopeInfo;
|
|
[case(DhcpGlobalOptions6)];
|
|
} ScopeInfo;
|
|
#else
|
|
union _DHCP_OPTION_SCOPE_UNION6 {
|
|
PVOID DefaultScopeInfo; // must be NULL
|
|
DHCP_IPV6_ADDRESS SubnetScopeInfo;
|
|
DHCP_RESERVED_SCOPE6 ReservedScopeInfo;
|
|
} ScopeInfo;
|
|
#endif // MIDL_PASS
|
|
} DHCP_OPTION_SCOPE_INFO6, *LPDHCP_OPTION_SCOPE_INFO6;
|
|
|
|
#if !defined(MIDL_PASS)
|
|
typedef union _DHCP_OPTION_SCOPE_UNION6
|
|
DHCP_OPTION_SCOPE_UNION6, *LPDHCP_OPTION_SCOPE_UNION6;
|
|
#endif
|
|
|
|
typedef struct _DHCP_OPTION_LIST {
|
|
DWORD NumOptions;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumOptions)]
|
|
#endif // MIDL_PASS
|
|
DHCP_OPTION_VALUE *Options; // array
|
|
} DHCP_OPTION_LIST, *LPDHCP_OPTION_LIST;
|
|
|
|
//
|
|
// DHCP Client information data structures
|
|
//
|
|
|
|
typedef struct _DHCP_CLIENT_INFO {
|
|
DHCP_IP_ADDRESS ClientIpAddress; // currently assigned IP address.
|
|
DHCP_IP_MASK SubnetMask;
|
|
DHCP_CLIENT_UID ClientHardwareAddress;
|
|
LPWSTR ClientName;
|
|
LPWSTR ClientComment;
|
|
DATE_TIME ClientLeaseExpires; // UTC time in FILE_TIME format.
|
|
DHCP_HOST_INFO OwnerHost; // host that distributed this IP address.
|
|
} DHCP_CLIENT_INFO, *LPDHCP_CLIENT_INFO;
|
|
|
|
typedef struct _DHCP_CLIENT_INFO_ARRAY {
|
|
DWORD NumElements;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif // MIDL_PASS
|
|
LPDHCP_CLIENT_INFO *Clients; // array of pointers
|
|
} DHCP_CLIENT_INFO_ARRAY, *LPDHCP_CLIENT_INFO_ARRAY;
|
|
|
|
typedef enum _QuarantineStatus
|
|
{
|
|
NOQUARANTINE = 0,
|
|
RESTRICTEDACCESS,
|
|
DROPPACKET,
|
|
PROBATION,
|
|
EXEMPT,
|
|
DEFAULTQUARSETTING,
|
|
NOQUARINFO
|
|
}QuarantineStatus;
|
|
|
|
typedef struct _DHCP_CLIENT_INFO_VQ {
|
|
DHCP_IP_ADDRESS ClientIpAddress; // currently assigned IP address.
|
|
DHCP_IP_MASK SubnetMask;
|
|
DHCP_CLIENT_UID ClientHardwareAddress;
|
|
LPWSTR ClientName;
|
|
LPWSTR ClientComment;
|
|
DATE_TIME ClientLeaseExpires; // UTC time in FILE_TIME format.
|
|
DHCP_HOST_INFO OwnerHost; // host that distributed this IP address.
|
|
BYTE bClientType;
|
|
BYTE AddressState;
|
|
QuarantineStatus Status;
|
|
DATE_TIME ProbationEnds;
|
|
BOOL QuarantineCapable;
|
|
} DHCP_CLIENT_INFO_VQ, *LPDHCP_CLIENT_INFO_VQ;
|
|
|
|
typedef struct _DHCP_CLIENT_INFO_ARRAY_VQ {
|
|
DWORD NumElements;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif // MIDL_PASS
|
|
LPDHCP_CLIENT_INFO_VQ *Clients; // array of pointers
|
|
} DHCP_CLIENT_INFO_ARRAY_VQ, *LPDHCP_CLIENT_INFO_ARRAY_VQ;
|
|
|
|
|
|
|
|
//When the client's MAC Address doesn't match any configured filters
|
|
#define FILTER_STATUS_NONE 0x00000001
|
|
|
|
//When the client's MAC Address matches an allow filter fully
|
|
#define FILTER_STATUS_FULL_MATCH_IN_ALLOW_LIST 0x00000002
|
|
|
|
//When the client's MAC Address matches a deny filter fully
|
|
#define FILTER_STATUS_FULL_MATCH_IN_DENY_LIST 0x00000004
|
|
|
|
//When the client's MAC Address has a wildcard match in the allow list
|
|
#define FILTER_STATUS_WILDCARD_MATCH_IN_ALLOW_LIST 0x00000008
|
|
|
|
//When the client's MAC Address has a wildcard match in the deny list
|
|
#define FILTER_STATUS_WILDCARD_MATCH_IN_DENY_LIST 0x00000010
|
|
|
|
|
|
typedef struct _DHCP_CLIENT_FILTER_STATUS_INFO {
|
|
DHCP_IP_ADDRESS ClientIpAddress;
|
|
DHCP_IP_MASK SubnetMask;
|
|
DHCP_CLIENT_UID ClientHardwareAddress;
|
|
LPWSTR ClientName;
|
|
LPWSTR ClientComment;
|
|
DATE_TIME ClientLeaseExpires;
|
|
DHCP_HOST_INFO OwnerHost;
|
|
BYTE bClientType;
|
|
BYTE AddressState;
|
|
QuarantineStatus Status;
|
|
DATE_TIME ProbationEnds;
|
|
BOOL QuarantineCapable;
|
|
DWORD FilterStatus;
|
|
} DHCP_CLIENT_FILTER_STATUS_INFO, *LPDHCP_CLIENT_FILTER_STATUS_INFO;
|
|
|
|
typedef struct _DHCP_CLIENT_FILTER_STATUS_INFO_ARRAY {
|
|
DWORD NumElements;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif // MIDL_PASS
|
|
LPDHCP_CLIENT_FILTER_STATUS_INFO *Clients; // array of pointers
|
|
} DHCP_CLIENT_FILTER_STATUS_INFO_ARRAY, *LPDHCP_CLIENT_FILTER_STATUS_INFO_ARRAY;
|
|
|
|
typedef enum _DHCP_CLIENT_SEARCH_TYPE {
|
|
DhcpClientIpAddress,
|
|
DhcpClientHardwareAddress,
|
|
DhcpClientName
|
|
} DHCP_SEARCH_INFO_TYPE, *LPDHCP_SEARCH_INFO_TYPE;
|
|
|
|
typedef struct _DHCP_CLIENT_SEARCH_INFO {
|
|
DHCP_SEARCH_INFO_TYPE SearchType;
|
|
#if defined(MIDL_PASS)
|
|
[switch_is(SearchType), switch_type(DHCP_SEARCH_INFO_TYPE)]
|
|
union _DHCP_CLIENT_SEARCH_UNION {
|
|
[case(DhcpClientIpAddress)] DHCP_IP_ADDRESS ClientIpAddress;
|
|
[case(DhcpClientHardwareAddress)] DHCP_CLIENT_UID ClientHardwareAddress;
|
|
[case(DhcpClientName)] LPWSTR ClientName;
|
|
} SearchInfo;
|
|
#else
|
|
union _DHCP_CLIENT_SEARCH_UNION {
|
|
DHCP_IP_ADDRESS ClientIpAddress;
|
|
DHCP_CLIENT_UID ClientHardwareAddress;
|
|
LPWSTR ClientName;
|
|
} SearchInfo;
|
|
#endif // MIDL_PASS
|
|
} DHCP_SEARCH_INFO, *LPDHCP_SEARCH_INFO;
|
|
|
|
|
|
#if !defined(MIDL_PASS)
|
|
typedef union _DHCP_CLIENT_SEARCH_UNION
|
|
DHCP_CLIENT_SEARCH_UNION, *LPDHCP_CLIENT_SEARCH_UNION;
|
|
#endif // MIDL_PASS
|
|
|
|
//
|
|
// Mib Info structures.
|
|
//
|
|
|
|
typedef struct _SCOPE_MIB_INFO {
|
|
DHCP_IP_ADDRESS Subnet;
|
|
DWORD NumAddressesInuse;
|
|
DWORD NumAddressesFree;
|
|
DWORD NumPendingOffers;
|
|
} SCOPE_MIB_INFO, *LPSCOPE_MIB_INFO;
|
|
|
|
typedef struct _DHCP_MIB_INFO {
|
|
DWORD Discovers;
|
|
DWORD Offers;
|
|
DWORD Requests;
|
|
DWORD Acks;
|
|
DWORD Naks;
|
|
DWORD Declines;
|
|
DWORD Releases;
|
|
DATE_TIME ServerStartTime;
|
|
DWORD Scopes;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(Scopes)]
|
|
#endif // MIDL_PASS
|
|
__field_ecount(Scopes) LPSCOPE_MIB_INFO ScopeInfo; // array.
|
|
} DHCP_MIB_INFO, *LPDHCP_MIB_INFO;
|
|
|
|
//
|
|
// Quarantine version of mib structures
|
|
//
|
|
|
|
|
|
typedef struct _SCOPE_MIB_INFO_VQ {
|
|
DHCP_IP_ADDRESS Subnet;
|
|
DWORD NumAddressesInuse;
|
|
DWORD NumAddressesFree;
|
|
DWORD NumPendingOffers;
|
|
//
|
|
// Quarantine MIB info
|
|
//
|
|
DWORD QtnNumLeases;
|
|
DWORD QtnPctQtnLeases;
|
|
DWORD QtnProbationLeases;
|
|
DWORD QtnNonQtnLeases;
|
|
DWORD QtnExemptLeases;
|
|
DWORD QtnCapableClients;
|
|
|
|
} SCOPE_MIB_INFO_VQ, *LPSCOPE_MIB_INFO_VQ;
|
|
|
|
typedef struct _DHCP_MIB_INFO_VQ {
|
|
DWORD Discovers;
|
|
DWORD Offers;
|
|
DWORD Requests;
|
|
DWORD Acks;
|
|
DWORD Naks;
|
|
DWORD Declines;
|
|
DWORD Releases;
|
|
DATE_TIME ServerStartTime;
|
|
//
|
|
// Quarantine MIB info
|
|
//
|
|
DWORD QtnNumLeases;
|
|
DWORD QtnPctQtnLeases;
|
|
DWORD QtnProbationLeases;
|
|
DWORD QtnNonQtnLeases;
|
|
DWORD QtnExemptLeases;
|
|
DWORD QtnCapableClients;
|
|
DWORD QtnIASErrors;
|
|
DWORD Scopes;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(Scopes)]
|
|
#endif // MIDL_PASS
|
|
LPSCOPE_MIB_INFO_VQ ScopeInfo; // array.
|
|
|
|
} DHCP_MIB_INFO_VQ, *LPDHCP_MIB_INFO_VQ;
|
|
|
|
typedef struct _SCOPE_MIB_INFO_V5 {
|
|
DHCP_IP_ADDRESS Subnet;
|
|
DWORD NumAddressesInuse;
|
|
DWORD NumAddressesFree;
|
|
DWORD NumPendingOffers;
|
|
} SCOPE_MIB_INFO_V5, *LPSCOPE_MIB_INFO_V5;
|
|
|
|
typedef struct _DHCP_MIB_INFO_V5 {
|
|
DWORD Discovers;
|
|
DWORD Offers;
|
|
DWORD Requests;
|
|
DWORD Acks;
|
|
DWORD Naks;
|
|
DWORD Declines;
|
|
DWORD Releases;
|
|
DATE_TIME ServerStartTime;
|
|
//
|
|
// Quarantine MIB info
|
|
//
|
|
DWORD QtnNumLeases;
|
|
DWORD QtnPctQtnLeases;
|
|
DWORD QtnProbationLeases;
|
|
DWORD QtnNonQtnLeases;
|
|
DWORD QtnExemptLeases;
|
|
DWORD QtnCapableClients;
|
|
DWORD QtnIASErrors;
|
|
|
|
DWORD DelayedOffers;
|
|
DWORD ScopesWithDelayedOffers;
|
|
DWORD Scopes;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(Scopes)]
|
|
#endif // MIDL_PASS
|
|
__field_ecount(Scopes) LPSCOPE_MIB_INFO_V5 ScopeInfo; // array.
|
|
} DHCP_MIB_INFO_V5, *LPDHCP_MIB_INFO_V5;
|
|
|
|
#define Set_APIProtocolSupport 0x00000001
|
|
#define Set_DatabaseName 0x00000002
|
|
#define Set_DatabasePath 0x00000004
|
|
#define Set_BackupPath 0x00000008
|
|
#define Set_BackupInterval 0x00000010
|
|
#define Set_DatabaseLoggingFlag 0x00000020
|
|
#define Set_RestoreFlag 0x00000040
|
|
#define Set_DatabaseCleanupInterval 0x00000080
|
|
#define Set_DebugFlag 0x00000100
|
|
#define Set_PingRetries 0x00000200
|
|
#define Set_BootFileTable 0x00000400
|
|
#define Set_AuditLogState 0x00000800
|
|
#define Set_QuarantineON 0x00001000
|
|
#define Set_QuarantineDefFail 0x00002000
|
|
|
|
|
|
typedef struct _DHCP_SERVER_CONFIG_INFO {
|
|
DWORD APIProtocolSupport; // bit map of the protocols supported.
|
|
LPWSTR DatabaseName; // JET database name.
|
|
LPWSTR DatabasePath; // JET database path.
|
|
LPWSTR BackupPath; // Backup path.
|
|
DWORD BackupInterval; // Backup interval in mins.
|
|
DWORD DatabaseLoggingFlag; // Boolean database logging flag.
|
|
DWORD RestoreFlag; // Boolean database restore flag.
|
|
DWORD DatabaseCleanupInterval; // Database Cleanup Interval in mins.
|
|
DWORD DebugFlag; // Bit map of server debug flags.
|
|
} DHCP_SERVER_CONFIG_INFO, *LPDHCP_SERVER_CONFIG_INFO;
|
|
|
|
typedef enum _DHCP_SCAN_FLAG {
|
|
DhcpRegistryFix,
|
|
DhcpDatabaseFix
|
|
} DHCP_SCAN_FLAG, *LPDHCP_SCAN_FLAG;
|
|
|
|
typedef struct _DHCP_SCAN_ITEM {
|
|
DHCP_IP_ADDRESS IpAddress;
|
|
DHCP_SCAN_FLAG ScanFlag;
|
|
} DHCP_SCAN_ITEM, *LPDHCP_SCAN_ITEM;
|
|
|
|
typedef struct _DHCP_SCAN_LIST {
|
|
DWORD NumScanItems;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumScanItems)]
|
|
#endif // MIDL_PASS
|
|
__field_ecount(NumScanItems) DHCP_SCAN_ITEM *ScanItems; // array
|
|
} DHCP_SCAN_LIST, *LPDHCP_SCAN_LIST;
|
|
|
|
typedef struct _DHCP_CLASS_INFO {
|
|
LPWSTR ClassName;
|
|
LPWSTR ClassComment;
|
|
DWORD ClassDataLength;
|
|
BOOL IsVendor;
|
|
DWORD Flags;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(ClassDataLength)]
|
|
#endif // MIDL_PASS
|
|
__field_bcount(ClassDataLength) LPBYTE ClassData;
|
|
} DHCP_CLASS_INFO, *LPDHCP_CLASS_INFO;
|
|
|
|
typedef struct _DHCP_CLASS_INFO_ARRAY {
|
|
DWORD NumElements;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif //MIDL_PASS
|
|
LPDHCP_CLASS_INFO Classes;
|
|
} DHCP_CLASS_INFO_ARRAY, *LPDHCP_CLASS_INFO_ARRAY;
|
|
|
|
|
|
typedef struct _DHCP_CLASS_INFO_V6 {
|
|
LPWSTR ClassName;
|
|
LPWSTR ClassComment;
|
|
DWORD ClassDataLength;
|
|
BOOL IsVendor;
|
|
DWORD EnterpriseNumber;
|
|
DWORD Flags;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(ClassDataLength)]
|
|
#endif // MIDL_PASS
|
|
__field_bcount(ClassDataLength) LPBYTE ClassData;
|
|
} DHCP_CLASS_INFO_V6, *LPDHCP_CLASS_INFO_V6;
|
|
|
|
typedef struct _DHCP_CLASS_INFO_ARRAY_V6 {
|
|
DWORD NumElements;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif //MIDL_PASS
|
|
LPDHCP_CLASS_INFO_V6 Classes;
|
|
} DHCP_CLASS_INFO_ARRAY_V6, *LPDHCP_CLASS_INFO_ARRAY_V6;
|
|
|
|
|
|
typedef struct _DHCP_SERVER_SPECIFIC_STRINGS {
|
|
LPWSTR DefaultVendorClassName;
|
|
LPWSTR DefaultUserClassName;
|
|
} DHCP_SERVER_SPECIFIC_STRINGS, *LPDHCP_SERVER_SPECIFIC_STRINGS;
|
|
|
|
|
|
|
|
typedef struct _DHCP_IP_RESERVATION_V4 {
|
|
DHCP_IP_ADDRESS ReservedIpAddress;
|
|
DHCP_CLIENT_UID *ReservedForClient;
|
|
BYTE bAllowedClientTypes;
|
|
} DHCP_IP_RESERVATION_V4, *LPDHCP_IP_RESERVATION_V4;
|
|
|
|
typedef struct _DHCP_SUBNET_ELEMENT_DATA_V4 {
|
|
DHCP_SUBNET_ELEMENT_TYPE ElementType;
|
|
#if defined(MIDL_PASS)
|
|
[switch_is(ELEMENT_MASK(ElementType)), switch_type(DHCP_SUBNET_ELEMENT_TYPE)]
|
|
union _DHCP_SUBNET_ELEMENT_UNION_V4 {
|
|
[case(DhcpIpRanges)] DHCP_IP_RANGE *IpRange;
|
|
[case(DhcpSecondaryHosts)] DHCP_HOST_INFO *SecondaryHost;
|
|
[case(DhcpReservedIps)] DHCP_IP_RESERVATION_V4 *ReservedIp;
|
|
[case(DhcpExcludedIpRanges)] DHCP_IP_RANGE *ExcludeIpRange;
|
|
[case(DhcpIpUsedClusters)] DHCP_IP_CLUSTER *IpUsedCluster;
|
|
} Element;
|
|
#else
|
|
union _DHCP_SUBNET_ELEMENT_UNION_V4 {
|
|
DHCP_IP_RANGE *IpRange;
|
|
DHCP_HOST_INFO *SecondaryHost;
|
|
DHCP_IP_RESERVATION_V4 *ReservedIp;
|
|
DHCP_IP_RANGE *ExcludeIpRange;
|
|
DHCP_IP_CLUSTER *IpUsedCluster;
|
|
} Element;
|
|
#endif // MIDL_PASS
|
|
} DHCP_SUBNET_ELEMENT_DATA_V4, *LPDHCP_SUBNET_ELEMENT_DATA_V4;
|
|
|
|
#if !defined(MIDL_PASS)
|
|
typedef union _DHCP_SUBNET_ELEMENT_UNION_V4
|
|
DHCP_SUBNET_ELEMENT_UNION_V4, *LPDHCP_SUBNET_ELEMENT_UNION_V4;
|
|
#endif
|
|
|
|
typedef struct _DHCP_SUBNET_ELEMENT_INFO_ARRAY_V4 {
|
|
DWORD NumElements;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif // MIDL_PASS
|
|
LPDHCP_SUBNET_ELEMENT_DATA_V4 Elements;
|
|
} DHCP_SUBNET_ELEMENT_INFO_ARRAY_V4, *LPDHCP_SUBNET_ELEMENT_INFO_ARRAY_V4;
|
|
|
|
|
|
|
|
#define CLIENT_TYPE_UNSPECIFIED 0x0
|
|
#define CLIENT_TYPE_DHCP 0x1
|
|
#define CLIENT_TYPE_BOOTP 0x2
|
|
#define CLIENT_TYPE_BOTH ( CLIENT_TYPE_DHCP | CLIENT_TYPE_BOOTP )
|
|
#define CLIENT_TYPE_RESERVATION_FLAG 0x4
|
|
#define CLIENT_TYPE_NONE 0x64
|
|
|
|
|
|
|
|
typedef struct _DHCP_CLIENT_INFO_V4 {
|
|
DHCP_IP_ADDRESS ClientIpAddress;
|
|
DHCP_IP_MASK SubnetMask;
|
|
DHCP_CLIENT_UID ClientHardwareAddress;
|
|
LPWSTR ClientName;
|
|
LPWSTR ClientComment;
|
|
DATE_TIME ClientLeaseExpires;
|
|
DHCP_HOST_INFO OwnerHost;
|
|
BYTE bClientType;
|
|
} DHCP_CLIENT_INFO_V4, *LPDHCP_CLIENT_INFO_V4;
|
|
|
|
typedef struct _DHCP_CLIENT_INFO_ARRAY_V4 {
|
|
DWORD NumElements;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif
|
|
LPDHCP_CLIENT_INFO_V4 *Clients;
|
|
} DHCP_CLIENT_INFO_ARRAY_V4, *LPDHCP_CLIENT_INFO_ARRAY_V4;
|
|
|
|
|
|
typedef struct _DHCP_SERVER_CONFIG_INFO_V4 {
|
|
DWORD APIProtocolSupport;
|
|
LPWSTR DatabaseName;
|
|
LPWSTR DatabasePath;
|
|
LPWSTR BackupPath;
|
|
DWORD BackupInterval;
|
|
DWORD DatabaseLoggingFlag;
|
|
DWORD RestoreFlag;
|
|
DWORD DatabaseCleanupInterval;
|
|
DWORD DebugFlag;
|
|
DWORD dwPingRetries; // valid range: 0-5 inclusive
|
|
DWORD cbBootTableString;
|
|
#if defined( MIDL_PASS )
|
|
[ size_is( cbBootTableString/2 ) ] // WCHAR SIZE = 2 Bytes
|
|
#endif
|
|
__field_bcount(cbBootTableString) WCHAR *wszBootTableString;
|
|
BOOL fAuditLog; // TRUE to enable audit log
|
|
|
|
} DHCP_SERVER_CONFIG_INFO_V4, *LPDHCP_SERVER_CONFIG_INFO_V4;
|
|
|
|
|
|
//
|
|
// Server Configuration Info with quarantine config.
|
|
//
|
|
|
|
typedef struct _DHCP_SERVER_CONFIG_INFO_VQ {
|
|
DWORD APIProtocolSupport; // bit map of the protocols supported.
|
|
LPWSTR DatabaseName; // JET database name.
|
|
LPWSTR DatabasePath; // JET database path.
|
|
LPWSTR BackupPath; // Backup path.
|
|
DWORD BackupInterval; // Backup interval in mins.
|
|
DWORD DatabaseLoggingFlag; // Boolean database logging flag.
|
|
DWORD RestoreFlag; // Boolean database restore flag.
|
|
DWORD DatabaseCleanupInterval; // Database Cleanup Interval in mins.
|
|
DWORD DebugFlag; // Bit map of server debug flags.
|
|
DWORD dwPingRetries; // valid range: 0-5 inclusive
|
|
DWORD cbBootTableString;
|
|
#if defined( MIDL_PASS )
|
|
[ size_is( cbBootTableString/2 ) ] // WCHAR SIZE = 2 Bytes
|
|
#endif
|
|
__field_bcount(cbBootTableString) WCHAR *wszBootTableString;
|
|
BOOL fAuditLog; // TRUE to enable audit log
|
|
BOOL QuarantineOn; // Server global Quarantine on/off
|
|
DWORD QuarDefFail; // Default behavior when IAS fails
|
|
// to be set to QUARANTINE_DEFFAIL_ACCEPT
|
|
// or QUARANTINE_DEFFAIL_DROP
|
|
BOOL QuarRuntimeStatus; // This tells us whether NAP is actually running
|
|
// on the DHCP server as opposed to the the value
|
|
// which is configured by the admin.
|
|
} DHCP_SERVER_CONFIG_INFO_VQ, *LPDHCP_SERVER_CONFIG_INFO_VQ;
|
|
|
|
|
|
typedef struct _DHCP_SERVER_CONFIG_INFO_V6 {
|
|
BOOL UnicastFlag;
|
|
BOOL RapidCommitFlag;
|
|
DWORD PreferredLifetime;
|
|
DWORD ValidLifetime;
|
|
DWORD T1;
|
|
DWORD T2;
|
|
DWORD PreferredLifetimeIATA;
|
|
DWORD ValidLifetimeIATA;
|
|
BOOL fAuditLog;
|
|
} DHCP_SERVER_CONFIG_INFO_V6, *LPDHCP_SERVER_CONFIG_INFO_V6;
|
|
|
|
#define Set_UnicastFlag 0x00000001
|
|
#define Set_RapidCommitFlag 0x00000002
|
|
#define Set_PreferredLifetime 0x00000004
|
|
#define Set_ValidLifetime 0x00000008
|
|
#define Set_T1 0x00000010
|
|
#define Set_T2 0x00000020
|
|
#define Set_PreferredLifetimeIATA 0x00000040
|
|
#define Set_ValidLifetimeIATA 0x00000080
|
|
|
|
|
|
|
|
typedef struct _DHCP_SUPER_SCOPE_TABLE_ENTRY {
|
|
DHCP_IP_ADDRESS SubnetAddress; // subnet address
|
|
DWORD SuperScopeNumber; // super scope group number
|
|
DWORD NextInSuperScope; // index of the next subnet in the superscope
|
|
LPWSTR SuperScopeName; // super scope name
|
|
// NULL indicates no superscope membership.
|
|
} DHCP_SUPER_SCOPE_TABLE_ENTRY, *LPDHCP_SUPER_SCOPE_TABLE_ENTRY;
|
|
|
|
|
|
typedef struct _DHCP_SUPER_SCOPE_TABLE
|
|
{
|
|
DWORD cEntries;
|
|
#if defined( MIDL_PASS )
|
|
[ size_is( cEntries ) ]
|
|
#endif;
|
|
DHCP_SUPER_SCOPE_TABLE_ENTRY *pEntries;
|
|
} DHCP_SUPER_SCOPE_TABLE, *LPDHCP_SUPER_SCOPE_TABLE;
|
|
|
|
|
|
typedef struct _DHCP_CLIENT_INFO_V5 {
|
|
DHCP_IP_ADDRESS ClientIpAddress; // currently assigned IP address.
|
|
DHCP_IP_MASK SubnetMask;
|
|
DHCP_CLIENT_UID ClientHardwareAddress;
|
|
LPWSTR ClientName; // optional.
|
|
LPWSTR ClientComment;
|
|
DATE_TIME ClientLeaseExpires; // UTC time in FILE_TIME format.
|
|
DHCP_HOST_INFO OwnerHost; // host that distributed this IP address.
|
|
BYTE bClientType;
|
|
BYTE AddressState;
|
|
} DHCP_CLIENT_INFO_V5, *LPDHCP_CLIENT_INFO_V5;
|
|
|
|
|
|
#define V5_ADDRESS_STATE_OFFERED 0x0
|
|
#define V5_ADDRESS_STATE_ACTIVE 0x1
|
|
#define V5_ADDRESS_STATE_DECLINED 0x2
|
|
#define V5_ADDRESS_STATE_DOOM 0x3
|
|
|
|
#define V5_ADDRESS_BIT_DELETED 0x80
|
|
#define V5_ADDRESS_BIT_UNREGISTERED 0x40
|
|
#define V5_ADDRESS_BIT_BOTH_REC 0x20
|
|
|
|
|
|
#define DNS_FLAG_ENABLED 0x01
|
|
#define DNS_FLAG_UPDATE_DOWNLEVEL 0x02
|
|
#define DNS_FLAG_CLEANUP_EXPIRED 0x04
|
|
#define DNS_FLAG_UPDATE_BOTH_ALWAYS 0x10
|
|
#define DNS_FLAG_UPDATE_DHCID 0x20
|
|
|
|
typedef struct _DHCP_CLIENT_INFO_ARRAY_V5 {
|
|
DWORD NumElements;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif // MIDL_PASS
|
|
LPDHCP_CLIENT_INFO_V5 *Clients; // array of pointers
|
|
} DHCP_CLIENT_INFO_ARRAY_V5, *LPDHCP_CLIENT_INFO_ARRAY_V5;
|
|
|
|
|
|
#define DHCP_OPT_ENUM_IGNORE_VENDOR 0x01
|
|
#define DHCP_OPT_ENUM_USE_CLASSNAME 0x02
|
|
|
|
typedef struct _DHCP_ALL_OPTIONS {
|
|
DWORD Flags; // must be zero -- not used..
|
|
LPDHCP_OPTION_ARRAY NonVendorOptions;
|
|
DWORD NumVendorOptions;
|
|
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumVendorOptions)]
|
|
#endif
|
|
struct {
|
|
DHCP_OPTION Option;
|
|
LPWSTR VendorName;
|
|
LPWSTR ClassName;
|
|
} *VendorOptions;
|
|
} DHCP_ALL_OPTIONS, *LPDHCP_ALL_OPTIONS;
|
|
|
|
|
|
typedef struct _DHCP_ALL_OPTION_VALUES {
|
|
DWORD Flags; // must be zero -- not used
|
|
DWORD NumElements; // the # of elements in array of Options below..
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif MIDL_PASS
|
|
struct /* anonymous */ {
|
|
LPWSTR ClassName; // for each user class (NULL if none exists)
|
|
LPWSTR VendorName; // for each vendor class (NULL if none exists)
|
|
BOOL IsVendor; // is this set of options vendor specific?
|
|
LPDHCP_OPTION_VALUE_ARRAY OptionsArray; // list of options for the above pair: (vendor,user)
|
|
} *Options; // for each vendor/user class pair, one element in this array..
|
|
} DHCP_ALL_OPTION_VALUES, *LPDHCP_ALL_OPTION_VALUES;
|
|
|
|
#ifndef _ST_SRVR_H_
|
|
#define _ST_SRVR_H_
|
|
|
|
typedef struct _DHCPDS_SERVER {
|
|
DWORD Version;
|
|
LPWSTR ServerName;
|
|
DWORD ServerAddress;
|
|
DWORD Flags;
|
|
DWORD State;
|
|
LPWSTR DsLocation;
|
|
DWORD DsLocType;
|
|
} DHCPDS_SERVER, *LPDHCPDS_SERVER, *PDHCPDS_SERVER;
|
|
|
|
typedef struct _DHCPDS_SERVERS {
|
|
DWORD Flags;
|
|
DWORD NumElements;
|
|
LPDHCPDS_SERVER Servers;
|
|
} DHCPDS_SERVERS, *LPDHCPDS_SERVERS, *PDHCPDS_SERVERS;
|
|
|
|
typedef DHCPDS_SERVER DHCP_SERVER_INFO;
|
|
typedef PDHCPDS_SERVER PDHCP_SERVER_INFO;
|
|
typedef LPDHCPDS_SERVER LPDHCP_SERVER_INFO;
|
|
|
|
typedef DHCPDS_SERVERS DHCP_SERVER_INFO_ARRAY;
|
|
typedef PDHCPDS_SERVERS PDHCP_SERVER_INFO_ARRAY;
|
|
typedef LPDHCPDS_SERVERS LPDHCP_SERVER_INFO_ARRAY;
|
|
|
|
#endif _ST_SRVR_H_
|
|
|
|
#define DHCP_FLAGS_DONT_ACCESS_DS 0x01
|
|
#define DHCP_FLAGS_DONT_DO_RPC 0x02
|
|
#define DHCP_FLAGS_OPTION_IS_VENDOR 0x03
|
|
|
|
#define DHCP_ATTRIB_BOOL_IS_ROGUE 0x01
|
|
#define DHCP_ATTRIB_BOOL_IS_DYNBOOTP 0x02
|
|
#define DHCP_ATTRIB_BOOL_IS_PART_OF_DSDC 0x03
|
|
#define DHCP_ATTRIB_BOOL_IS_BINDING_AWARE 0x04
|
|
#define DHCP_ATTRIB_BOOL_IS_ADMIN 0x05
|
|
#define DHCP_ATTRIB_ULONG_RESTORE_STATUS 0x06
|
|
|
|
#define DHCP_ATTRIB_TYPE_BOOL 0x01
|
|
#define DHCP_ATTRIB_TYPE_ULONG 0x02
|
|
|
|
typedef ULONG DHCP_ATTRIB_ID, *PDHCP_ATTRIB_ID, *LPDHCP_ATTRIB_ID;
|
|
|
|
typedef struct _DHCP_ATTRIB {
|
|
DHCP_ATTRIB_ID DhcpAttribId; // one of the DHCP_ATTRIB_*
|
|
ULONG DhcpAttribType;// type of attrib
|
|
#if defined(MIDL_PASS)
|
|
[switch_is(DhcpAttribType), switch_type(ULONG)]
|
|
union {
|
|
[case(DHCP_ATTRIB_TYPE_BOOL)] BOOL DhcpAttribBool;
|
|
[case(DHCP_ATTRIB_TYPE_ULONG)] ULONG DhcpAttribUlong;
|
|
};
|
|
#else MIDL_PASS
|
|
union {
|
|
BOOL DhcpAttribBool;
|
|
ULONG DhcpAttribUlong;
|
|
};
|
|
#endif MIDL_PASS
|
|
} DHCP_ATTRIB, *PDHCP_ATTRIB, *LPDHCP_ATTRIB;
|
|
|
|
typedef struct _DHCP_ATTRIB_ARRAY {
|
|
ULONG NumElements;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif MIDL_PASS
|
|
__field_ecount(NumElements) LPDHCP_ATTRIB DhcpAttribs;
|
|
} DHCP_ATTRIB_ARRAY, *PDHCP_ATTRIB_ARRAY, *LPDHCP_ATTRIB_ARRAY;
|
|
|
|
|
|
|
|
typedef struct _DHCP_BOOTP_IP_RANGE {
|
|
DHCP_IP_ADDRESS StartAddress;
|
|
DHCP_IP_ADDRESS EndAddress;
|
|
ULONG BootpAllocated;
|
|
ULONG MaxBootpAllowed;
|
|
} DHCP_BOOTP_IP_RANGE, *LPDHCP_BOOT_IP_RANGE;
|
|
|
|
typedef struct _DHCP_SUBNET_ELEMENT_DATA_V5 {
|
|
DHCP_SUBNET_ELEMENT_TYPE ElementType;
|
|
#if defined(MIDL_PASS)
|
|
[switch_is(ELEMENT_MASK(ElementType)), switch_type(DHCP_SUBNET_ELEMENT_TYPE)]
|
|
union _DHCP_SUBNET_ELEMENT_UNION_V5 {
|
|
[case(DhcpIpRanges)] DHCP_BOOTP_IP_RANGE *IpRange;
|
|
[case(DhcpSecondaryHosts)] DHCP_HOST_INFO *SecondaryHost;
|
|
[case(DhcpReservedIps)] DHCP_IP_RESERVATION_V4 *ReservedIp;
|
|
[case(DhcpExcludedIpRanges)] DHCP_IP_RANGE *ExcludeIpRange;
|
|
[case(DhcpIpUsedClusters)] DHCP_IP_CLUSTER *IpUsedCluster;
|
|
} Element;
|
|
#else
|
|
union _DHCP_SUBNET_ELEMENT_UNION_V5 {
|
|
DHCP_BOOTP_IP_RANGE *IpRange;
|
|
DHCP_HOST_INFO *SecondaryHost;
|
|
DHCP_IP_RESERVATION_V4 *ReservedIp;
|
|
DHCP_IP_RANGE *ExcludeIpRange;
|
|
DHCP_IP_CLUSTER *IpUsedCluster;
|
|
} Element;
|
|
#endif // MIDL_PASS
|
|
} DHCP_SUBNET_ELEMENT_DATA_V5, *LPDHCP_SUBNET_ELEMENT_DATA_V5;
|
|
|
|
typedef struct _DHCP_SUBNET_ELEMENT_INFO_ARRAY_V5 {
|
|
DWORD NumElements;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif // MIDL_PASS
|
|
LPDHCP_SUBNET_ELEMENT_DATA_V5 Elements; //array
|
|
} DHCP_SUBNET_ELEMENT_INFO_ARRAY_V5, *LPDHCP_SUBNET_ELEMENT_INFO_ARRAY_V5;
|
|
|
|
|
|
|
|
|
|
#pragma pack(4)
|
|
typedef struct _DHCP_PERF_STATS { // performance statistics
|
|
//
|
|
// DO NOT CHANGE THIS ORDER -- THIS AFFECTS THE PERF COUNTER DEFINITION
|
|
// ORDER IN DHCPDATA.C (under PERF directory)
|
|
//
|
|
ULONG 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;
|
|
|
|
// Count of Delayed Offer sent
|
|
ULONG dwNumDelayedOfferInQueue;
|
|
ULONG dwNumPacketsProcessed;
|
|
|
|
// For Quarantine
|
|
ULONG dwNumPacketsInQuarWaitingQueue;
|
|
ULONG dwNumPacketsInQuarReadyQueue;
|
|
ULONG dwNumPacketsInQuarDecisionQueue;
|
|
|
|
|
|
} DHCP_PERF_STATS, *LPDHCP_PERF_STATS;
|
|
#pragma pack()
|
|
|
|
|
|
#define DHCP_ENDPOINT_FLAG_CANT_MODIFY 0x01
|
|
|
|
typedef struct _DHCP_BIND_ELEMENT {
|
|
ULONG Flags;
|
|
BOOL fBoundToDHCPServer;
|
|
DHCP_IP_ADDRESS AdapterPrimaryAddress;
|
|
DHCP_IP_ADDRESS AdapterSubnetAddress;
|
|
LPWSTR IfDescription;
|
|
ULONG IfIdSize;
|
|
#if defined (MIDL_PASS)
|
|
[size_is(IfIdSize)]
|
|
#endif // MIDL_PASS
|
|
__field_bcount(IfIdSize) LPBYTE IfId;
|
|
} DHCP_BIND_ELEMENT, *LPDHCP_BIND_ELEMENT;
|
|
|
|
typedef struct _DHCP_BIND_ELEMENT_ARRAY {
|
|
DWORD NumElements;
|
|
#if defined (MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif // MIDL_PASS
|
|
LPDHCP_BIND_ELEMENT Elements; //array
|
|
} DHCP_BIND_ELEMENT_ARRAY, *LPDHCP_BIND_ELEMENT_ARRAY;
|
|
|
|
|
|
typedef struct _DHCPV6_BIND_ELEMENT {
|
|
ULONG Flags;
|
|
BOOL fBoundToDHCPServer;
|
|
DHCP_IPV6_ADDRESS AdapterPrimaryAddress;
|
|
DHCP_IPV6_ADDRESS AdapterSubnetAddress;
|
|
LPWSTR IfDescription;
|
|
DWORD IpV6IfIndex;
|
|
ULONG IfIdSize;
|
|
#if defined (MIDL_PASS)
|
|
[size_is(IfIdSize)]
|
|
#endif // MIDL_PASS
|
|
LPBYTE IfId;
|
|
} DHCPV6_BIND_ELEMENT, *LPDHCPV6_BIND_ELEMENT;
|
|
|
|
typedef struct _DHCPV6_BIND_ELEMENT_ARRAY {
|
|
DWORD NumElements;
|
|
#if defined (MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif // MIDL_PASS
|
|
LPDHCPV6_BIND_ELEMENT Elements; //array
|
|
} DHCPV6_BIND_ELEMENT_ARRAY, *LPDHCPV6_BIND_ELEMENT_ARRAY;
|
|
|
|
|
|
//
|
|
// For Quarantine
|
|
//
|
|
|
|
#define QUARANTIN_OPTION_BASE 43220
|
|
|
|
#define QUARANTINE_SCOPE_QUARPROFILE_OPTION (QUARANTIN_OPTION_BASE + 1)
|
|
|
|
#define QUARANTINE_CONFIG_OPTION (QUARANTIN_OPTION_BASE + 2)
|
|
|
|
|
|
|
|
|
|
// DHCP IPV6 specific Structures
|
|
|
|
typedef struct _DHCP_IP_RANGE_V6 {
|
|
DHCP_IPV6_ADDRESS StartAddress;
|
|
DHCP_IPV6_ADDRESS EndAddress;
|
|
} DHCP_IP_RANGE_V6, *LPDHCP_IP_RANGE_V6;
|
|
|
|
typedef struct _DHCP_HOST_INFO_V6 {
|
|
DHCP_IPV6_ADDRESS IpAddress; // minimum information always available
|
|
LPWSTR NetBiosName; // optional information
|
|
LPWSTR HostName; // optional information
|
|
} DHCP_HOST_INFO_V6, *LPDHCP_HOST_INFO_V6;
|
|
|
|
|
|
typedef struct _DHCP_SUBNET_INFO_V6
|
|
{
|
|
DHCP_IPV6_ADDRESS SubnetAddress;
|
|
ULONG Prefix;
|
|
USHORT Preference;
|
|
LPWSTR SubnetName;
|
|
LPWSTR SubnetComment;
|
|
DWORD State;
|
|
DWORD ScopeId;
|
|
} DHCP_SUBNET_INFO_V6, *PDHCP_SUBNET_INFO_V6,*LPDHCP_SUBNET_INFO_V6;
|
|
|
|
|
|
//
|
|
// Mib Info structures.
|
|
//
|
|
|
|
typedef struct _SCOPE_MIB_INFO_V6 {
|
|
DHCP_IPV6_ADDRESS Subnet;
|
|
ULONGLONG NumAddressesInuse;
|
|
ULONGLONG NumAddressesFree;
|
|
ULONGLONG NumPendingAdvertises;
|
|
} SCOPE_MIB_INFO_V6, *LPSCOPE_MIB_INFO_V6;
|
|
|
|
typedef struct _DHCP_MIB_INFO_V6 {
|
|
DWORD Solicits;
|
|
DWORD Advertises;
|
|
DWORD Requests;
|
|
DWORD Renews;
|
|
DWORD Rebinds;
|
|
DWORD Replies;
|
|
DWORD Confirms;
|
|
DWORD Declines;
|
|
DWORD Releases;
|
|
DWORD Informs;
|
|
DATE_TIME ServerStartTime;
|
|
DWORD Scopes;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(Scopes)]
|
|
#endif // MIDL_PASS
|
|
LPSCOPE_MIB_INFO_V6 ScopeInfo; // array.
|
|
} DHCP_MIB_INFO_V6, *LPDHCP_MIB_INFO_V6;
|
|
|
|
typedef struct _DHCP_IP_RESERVATION_V6 {
|
|
DHCP_IPV6_ADDRESS ReservedIpAddress;
|
|
DHCP_CLIENT_UID *ReservedForClient;
|
|
DWORD InterfaceId;
|
|
} DHCP_IP_RESERVATION_V6, *LPDHCP_IP_RESERVATION_V6;
|
|
|
|
typedef enum _DHCP_SUBNET_ELEMENT_TYPE_V6 {
|
|
Dhcpv6IpRanges,
|
|
Dhcpv6ReservedIps,
|
|
Dhcpv6ExcludedIpRanges
|
|
} DHCP_SUBNET_ELEMENT_TYPE_V6, *LPDHCP_SUBNET_ELEMENT_TYPE_V6;
|
|
|
|
typedef struct _DHCP_SUBNET_ELEMENT_DATA_V6 {
|
|
DHCP_SUBNET_ELEMENT_TYPE_V6 ElementType;
|
|
#if defined(MIDL_PASS)
|
|
[switch_is(ELEMENT_MASK(ElementType)), switch_type(DHCP_SUBNET_ELEMENT_TYPE_V6)]
|
|
union _DHCP_SUBNET_ELEMENT_UNION_V6 {
|
|
[case(Dhcpv6IpRanges)] DHCP_IP_RANGE_V6 *IpRange;
|
|
[case(Dhcpv6ReservedIps)] DHCP_IP_RESERVATION_V6 *ReservedIp;
|
|
[case(Dhcpv6ExcludedIpRanges)] DHCP_IP_RANGE_V6 *ExcludeIpRange;
|
|
} Element;
|
|
#else
|
|
union _DHCP_SUBNET_ELEMENT_UNION_V6 {
|
|
DHCP_IP_RANGE_V6 *IpRange;
|
|
DHCP_IP_RESERVATION_V6 *ReservedIp;
|
|
DHCP_IP_RANGE_V6 *ExcludeIpRange;
|
|
} Element;
|
|
#endif // MIDL_PASS
|
|
} DHCP_SUBNET_ELEMENT_DATA_V6, *LPDHCP_SUBNET_ELEMENT_DATA_V6;
|
|
|
|
#if !defined(MIDL_PASS)
|
|
typedef union _DHCP_SUBNET_ELEMENT_UNION_V6
|
|
DHCP_SUBNET_ELEMENT_UNION_V6, *LPDHCP_SUBNET_ELEMENT_UNION_V6;
|
|
#endif
|
|
|
|
typedef struct _DHCP_SUBNET_ELEMENT_INFO_ARRAY_V6 {
|
|
DWORD NumElements;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif // MIDL_PASS
|
|
LPDHCP_SUBNET_ELEMENT_DATA_V6 Elements; //array
|
|
} DHCP_SUBNET_ELEMENT_INFO_ARRAY_V6, *LPDHCP_SUBNET_ELEMENT_INFO_ARRAY_V6;
|
|
|
|
|
|
|
|
//
|
|
// DHCPv6 Client information data structures
|
|
//
|
|
|
|
#define ADDRESS_TYPE_IANA 0
|
|
#define ADDRESS_TYPE_IATA 1
|
|
|
|
typedef struct _DHCP_CLIENT_INFO_V6 {
|
|
DHCP_IPV6_ADDRESS ClientIpAddress; // currently assigned IP address.
|
|
DHCP_CLIENT_UID ClientDUID;
|
|
DWORD AddressType; // IANA or IATA
|
|
DWORD IAID; // IAID Associated with the address.
|
|
LPWSTR ClientName; // optional.
|
|
LPWSTR ClientComment;
|
|
DATE_TIME ClientValidLeaseExpires; // UTC time in FILE_TIME format.
|
|
DATE_TIME ClientPrefLeaseExpires; // UTC time in FILE_TIME format.
|
|
DHCP_HOST_INFO_V6 OwnerHost; // host that distributed this IP address.
|
|
} DHCP_CLIENT_INFO_V6, *LPDHCP_CLIENT_INFO_V6;
|
|
|
|
typedef struct _DHCPV6_IP_ARRAY {
|
|
DWORD NumElements;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif // MIDL_PASS
|
|
LPDHCP_IPV6_ADDRESS Elements; //array
|
|
} DHCPV6_IP_ARRAY, *LPDHCPV6_IP_ARRAY;
|
|
|
|
typedef struct _DHCP_CLIENT_INFO_ARRAY_V6 {
|
|
DWORD NumElements;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumElements)]
|
|
#endif // MIDL_PASS
|
|
LPDHCP_CLIENT_INFO_V6 *Clients; // array of pointers
|
|
} DHCP_CLIENT_INFO_ARRAY_V6, *LPDHCP_CLIENT_INFO_ARRAY_V6;
|
|
|
|
|
|
typedef enum _DHCP_CLIENT_SEARCH_TYPE_V6 {
|
|
Dhcpv6ClientIpAddress,
|
|
Dhcpv6ClientDUID,
|
|
Dhcpv6ClientName
|
|
} DHCP_SEARCH_INFO_TYPE_V6, *LPDHCP_SEARCH_INFO_TYPE_V6;
|
|
|
|
typedef struct _DHCP_CLIENT_SEARCH_INFO_V6 {
|
|
DHCP_SEARCH_INFO_TYPE_V6 SearchType;
|
|
#if defined(MIDL_PASS)
|
|
[switch_is(SearchType), switch_type(DHCP_SEARCH_INFO_TYPE_V6)]
|
|
union _DHCP_CLIENT_SEARCH_UNION_V6 {
|
|
[case(Dhcpv6ClientIpAddress)] DHCP_IPV6_ADDRESS ClientIpAddress;
|
|
[case(Dhcpv6ClientDUID)] DHCP_CLIENT_UID ClientDUID;
|
|
[case(Dhcpv6ClientName)] LPWSTR ClientName;
|
|
} SearchInfo;
|
|
#else
|
|
union _DHCP_CLIENT_SEARCH_UNION_V6 {
|
|
DHCP_IPV6_ADDRESS ClientIpAddress;
|
|
DHCP_CLIENT_UID ClientDUID;
|
|
LPWSTR ClientName;
|
|
} SearchInfo;
|
|
#endif // MIDL_PASS
|
|
} DHCP_SEARCH_INFO_V6, *LPDHCP_SEARCH_INFO_V6;
|
|
|
|
|
|
#define SCOPE_STATE_ENABLED DhcpSubnetEnabled
|
|
#define SCOPE_STATE_DISABLED DhcpSubnetDisabled
|
|
|
|
|
|
#define DHCP_MIN_DELAY 0
|
|
#define DHCP_MAX_DELAY 1000
|
|
|
|
|
|
#ifndef DHCPAPI_NO_PROTOTYPES
|
|
|
|
//
|
|
// DHCP Filter related APIs
|
|
//
|
|
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpAddFilterV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
__in DHCP_FILTER_ADD_INFO *AddFilterInfo,
|
|
__in BOOL ForceFlag
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpDeleteFilterV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
__in DHCP_ADDR_PATTERN *DeleteFilterInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpSetFilterV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
__in DHCP_FILTER_GLOBAL_INFO *GlobalFilterInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetFilterV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
__out DHCP_FILTER_GLOBAL_INFO *GlobalFilterInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumFilterV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
__inout LPDHCP_ADDR_PATTERN ResumeHandle,
|
|
__in DWORD PreferredMaximum,
|
|
__in DHCP_FILTER_LIST_TYPE ListType,
|
|
__out LPDHCP_FILTER_ENUM_INFO *EnumFilterInfo,
|
|
__out DWORD *ElementsRead,
|
|
__out DWORD *ElementsTotal
|
|
);
|
|
|
|
|
|
//
|
|
// Subnet APIs
|
|
//
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpCreateSubnet(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_CONST DHCP_SUBNET_INFO * SubnetInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpSetSubnetInfo(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_CONST DHCP_SUBNET_INFO * SubnetInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetSubnetInfo(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
LPDHCP_SUBNET_INFO * SubnetInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumSubnets(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
__inout DHCP_RESUME_HANDLE *ResumeHandle,
|
|
__in DWORD PreferredMaximum,
|
|
__inout LPDHCP_IP_ARRAY *EnumInfo,
|
|
__out DWORD *ElementsRead,
|
|
__out DWORD *ElementsTotal
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpAddSubnetElement(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_CONST DHCP_SUBNET_ELEMENT_DATA * AddElementInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumSubnetElements(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_SUBNET_ELEMENT_TYPE EnumElementType,
|
|
DHCP_RESUME_HANDLE *ResumeHandle,
|
|
DWORD PreferredMaximum,
|
|
LPDHCP_SUBNET_ELEMENT_INFO_ARRAY *EnumElementInfo,
|
|
DWORD *ElementsRead,
|
|
DWORD *ElementsTotal
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpRemoveSubnetElement(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_CONST DHCP_SUBNET_ELEMENT_DATA * RemoveElementInfo,
|
|
DHCP_FORCE_FLAG ForceFlag
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpDeleteSubnet(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_FORCE_FLAG ForceFlag
|
|
);
|
|
|
|
//
|
|
// Option APIs
|
|
//
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpCreateOption(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_OPTION_ID OptionID,
|
|
DHCP_CONST DHCP_OPTION * OptionInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpSetOptionInfo(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_OPTION_ID OptionID,
|
|
DHCP_CONST DHCP_OPTION *OptionInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetOptionInfo(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_OPTION_ID OptionID,
|
|
LPDHCP_OPTION *OptionInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumOptions(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_RESUME_HANDLE *ResumeHandle,
|
|
DWORD PreferredMaximum,
|
|
LPDHCP_OPTION_ARRAY *Options,
|
|
DWORD *OptionsRead,
|
|
DWORD *OptionsTotal
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpRemoveOption(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_OPTION_ID OptionID
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpSetOptionValue(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_OPTION_ID OptionID,
|
|
DHCP_CONST DHCP_OPTION_SCOPE_INFO *ScopeInfo,
|
|
DHCP_CONST DHCP_OPTION_DATA *OptionValue
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpSetOptionValues(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_CONST DHCP_OPTION_SCOPE_INFO *ScopeInfo,
|
|
DHCP_CONST DHCP_OPTION_VALUE_ARRAY *OptionValues
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetOptionValue(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_OPTION_ID OptionID,
|
|
DHCP_CONST DHCP_OPTION_SCOPE_INFO *ScopeInfo,
|
|
LPDHCP_OPTION_VALUE *OptionValue
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumOptionValues(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_CONST DHCP_OPTION_SCOPE_INFO *ScopeInfo,
|
|
DHCP_RESUME_HANDLE *ResumeHandle,
|
|
DWORD PreferredMaximum,
|
|
LPDHCP_OPTION_VALUE_ARRAY *OptionValues,
|
|
DWORD *OptionsRead,
|
|
DWORD *OptionsTotal
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpRemoveOptionValue(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_OPTION_ID OptionID,
|
|
DHCP_CONST DHCP_OPTION_SCOPE_INFO *ScopeInfo
|
|
);
|
|
|
|
//
|
|
// Client APIs
|
|
//
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpCreateClientInfoVQ(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_CONST DHCP_CLIENT_INFO_VQ *ClientInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpSetClientInfoVQ(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_CONST DHCP_CLIENT_INFO_VQ *ClientInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetClientInfoVQ(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_CONST DHCP_SEARCH_INFO *SearchInfo,
|
|
LPDHCP_CLIENT_INFO_VQ *ClientInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumSubnetClientsVQ(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_RESUME_HANDLE *ResumeHandle,
|
|
DWORD PreferredMaximum,
|
|
LPDHCP_CLIENT_INFO_ARRAY_VQ *ClientInfo,
|
|
DWORD *ClientsRead,
|
|
DWORD *ClientsTotal
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumSubnetClientsFilterStatusInfo(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_RESUME_HANDLE *ResumeHandle,
|
|
DWORD PreferredMaximum,
|
|
LPDHCP_CLIENT_FILTER_STATUS_INFO_ARRAY *ClientInfo,
|
|
DWORD *ClientsRead,
|
|
DWORD *ClientsTotal
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpCreateClientInfo(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_CONST DHCP_CLIENT_INFO *ClientInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpSetClientInfo(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_CONST DHCP_CLIENT_INFO *ClientInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetClientInfo(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_CONST DHCP_SEARCH_INFO *SearchInfo,
|
|
LPDHCP_CLIENT_INFO *ClientInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpDeleteClientInfo(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_CONST DHCP_SEARCH_INFO *ClientInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumSubnetClients(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_RESUME_HANDLE *ResumeHandle,
|
|
DWORD PreferredMaximum,
|
|
LPDHCP_CLIENT_INFO_ARRAY *ClientInfo,
|
|
DWORD *ClientsRead,
|
|
DWORD *ClientsTotal
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetClientOptions(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS ClientIpAddress,
|
|
DHCP_IP_MASK ClientSubnetMask,
|
|
LPDHCP_OPTION_LIST *ClientOptions
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetMibInfo(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
LPDHCP_MIB_INFO *MibInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpServerSetConfig(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DWORD FieldsToSet,
|
|
LPDHCP_SERVER_CONFIG_INFO ConfigInfo
|
|
);
|
|
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpServerGetConfig(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
LPDHCP_SERVER_CONFIG_INFO *ConfigInfo
|
|
);
|
|
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpScanDatabase(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DWORD FixFlag,
|
|
LPDHCP_SCAN_LIST *ScanList
|
|
);
|
|
|
|
VOID DHCP_API_FUNCTION
|
|
DhcpRpcFreeMemory(
|
|
PVOID BufferPointer
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetVersion(
|
|
__in_opt LPWSTR ServerIpAddress,
|
|
LPDWORD MajorVersion,
|
|
LPDWORD MinorVersion
|
|
);
|
|
|
|
|
|
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpAddSubnetElementV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_CONST DHCP_SUBNET_ELEMENT_DATA_V4 *AddElementInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumSubnetElementsV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_SUBNET_ELEMENT_TYPE EnumElementType,
|
|
DHCP_RESUME_HANDLE *ResumeHandle,
|
|
DWORD PreferredMaximum,
|
|
LPDHCP_SUBNET_ELEMENT_INFO_ARRAY_V4 *EnumElementInfo,
|
|
DWORD *ElementsRead,
|
|
DWORD *ElementsTotal
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpRemoveSubnetElementV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_CONST DHCP_SUBNET_ELEMENT_DATA_V4 *RemoveElementInfo,
|
|
DHCP_FORCE_FLAG ForceFlag
|
|
);
|
|
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpCreateClientInfoV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_CONST DHCP_CLIENT_INFO_V4 *ClientInfo
|
|
);
|
|
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpSetClientInfoV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_CONST DHCP_CLIENT_INFO_V4 *ClientInfo
|
|
);
|
|
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetClientInfoV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_CONST DHCP_SEARCH_INFO *SearchInfo,
|
|
LPDHCP_CLIENT_INFO_V4 *ClientInfo
|
|
);
|
|
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumSubnetClientsV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_RESUME_HANDLE *ResumeHandle,
|
|
DWORD PreferredMaximum,
|
|
LPDHCP_CLIENT_INFO_ARRAY_V4 *ClientInfo,
|
|
DWORD *ClientsRead,
|
|
DWORD *ClientsTotal
|
|
);
|
|
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpServerSetConfigV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DWORD FieldsToSet,
|
|
LPDHCP_SERVER_CONFIG_INFO_V4 ConfigInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpServerGetConfigV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
LPDHCP_SERVER_CONFIG_INFO_V4 *ConfigInfo
|
|
);
|
|
|
|
|
|
DWORD
|
|
DhcpSetSuperScopeV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_CONST DHCP_IP_ADDRESS SubnetAddress,
|
|
__in_opt DHCP_CONST LPWSTR SuperScopeName,
|
|
DHCP_CONST BOOL ChangeExisting
|
|
);
|
|
|
|
DWORD
|
|
DhcpDeleteSuperScopeV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
__in DHCP_CONST LPWSTR SuperScopeName
|
|
);
|
|
|
|
DWORD
|
|
DhcpGetSuperScopeInfoV4(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
LPDHCP_SUPER_SCOPE_TABLE *SuperScopeTable
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumSubnetClientsV5(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_RESUME_HANDLE *ResumeHandle,
|
|
DWORD PreferredMaximum,
|
|
LPDHCP_CLIENT_INFO_ARRAY_V5 *ClientInfo,
|
|
DWORD *ClientsRead,
|
|
DWORD *ClientsTotal
|
|
);
|
|
|
|
|
|
|
|
|
|
DWORD
|
|
DhcpCreateOptionV5(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
IN DHCP_OPTION_ID OptionId,
|
|
__in_opt IN LPWSTR ClassName,
|
|
__in_opt IN LPWSTR VendorName,
|
|
IN LPDHCP_OPTION OptionInfo
|
|
) ;
|
|
|
|
|
|
DWORD // ERROR_DHCP_OPTION_NOT_PRESENT if option does not exist
|
|
DhcpSetOptionInfoV5( // Modify existing option's fields
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
IN DHCP_OPTION_ID OptionID,
|
|
__in_opt IN LPWSTR ClassName,
|
|
__in_opt IN LPWSTR VendorName,
|
|
IN LPDHCP_OPTION OptionInfo
|
|
) ;
|
|
|
|
|
|
DWORD // ERROR_DHCP_OPTION_NOT_PRESENT
|
|
DhcpGetOptionInfoV5( // retrieve the information from off the mem structures
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
IN DHCP_OPTION_ID OptionID,
|
|
__in_opt IN LPWSTR ClassName,
|
|
__in_opt IN LPWSTR VendorName,
|
|
OUT LPDHCP_OPTION *OptionInfo // allocate memory using MIDL functions
|
|
) ;
|
|
|
|
|
|
DWORD // ERROR_DHCP_OPTION_NOT_PRESENT if option does not exist
|
|
DhcpEnumOptionsV5( // enumerate the options defined
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
__in_opt IN LPWSTR ClassName,
|
|
__in_opt IN LPWSTR VendorName,
|
|
IN OUT DHCP_RESUME_HANDLE *ResumeHandle,
|
|
IN DWORD PreferredMaximum,
|
|
OUT LPDHCP_OPTION_ARRAY *Options,
|
|
OUT DWORD *OptionsRead,
|
|
OUT DWORD *OptionsTotal
|
|
) ;
|
|
|
|
|
|
DWORD // ERROR_DHCP_OPTION_NOT_PRESENT if option not existent
|
|
DhcpRemoveOptionV5( // remove the option definition from the registry
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
IN DHCP_OPTION_ID OptionID,
|
|
__in_opt IN LPWSTR ClassName,
|
|
__in_opt IN LPWSTR VendorName
|
|
) ;
|
|
|
|
|
|
DWORD // OPTION_NOT_PRESENT if option is not defined
|
|
DhcpSetOptionValueV5( // replace or add a new option value
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
IN DHCP_OPTION_ID OptionId,
|
|
__in_opt IN LPWSTR ClassName,
|
|
__in_opt IN LPWSTR VendorName,
|
|
IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo,
|
|
IN LPDHCP_OPTION_DATA OptionValue
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
DhcpSetOptionValuesV5(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
__in_opt IN LPWSTR ClassName,
|
|
__in_opt IN LPWSTR VendorName,
|
|
IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo,
|
|
IN LPDHCP_OPTION_VALUE_ARRAY OptionValues
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
DhcpGetOptionValueV5( // fetch the required option at required level
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
IN DHCP_OPTION_ID OptionID,
|
|
__in_opt IN LPWSTR ClassName,
|
|
__in_opt IN LPWSTR VendorName,
|
|
IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo,
|
|
OUT LPDHCP_OPTION_VALUE *OptionValue
|
|
) ;
|
|
|
|
DWORD
|
|
DhcpGetOptionValueV6( // fetch the required option at required level
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
IN DHCP_OPTION_ID OptionID,
|
|
__in_opt IN LPWSTR ClassName,
|
|
__in_opt IN LPWSTR VendorName,
|
|
IN LPDHCP_OPTION_SCOPE_INFO6 ScopeInfo,
|
|
OUT LPDHCP_OPTION_VALUE *OptionValue
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
DhcpEnumOptionValuesV5(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
__in_opt IN LPWSTR ClassName,
|
|
__in_opt IN LPWSTR VendorName,
|
|
IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo,
|
|
IN DHCP_RESUME_HANDLE *ResumeHandle,
|
|
IN DWORD PreferredMaximum,
|
|
OUT LPDHCP_OPTION_VALUE_ARRAY *OptionValues,
|
|
OUT DWORD *OptionsRead,
|
|
OUT DWORD *OptionsTotal
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
DhcpRemoveOptionValueV5(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
IN DHCP_OPTION_ID OptionID,
|
|
__in_opt IN LPWSTR ClassName,
|
|
__in_opt IN LPWSTR VendorName,
|
|
IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
DhcpCreateClass(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD ReservedMustBeZero,
|
|
IN LPDHCP_CLASS_INFO ClassInfo
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
DhcpModifyClass(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD ReservedMustBeZero,
|
|
IN LPDHCP_CLASS_INFO ClassInfo
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
DhcpDeleteClass(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD ReservedMustBeZero,
|
|
__in IN LPWSTR ClassName
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
DhcpGetClassInfo(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD ReservedMustBeZero,
|
|
IN LPDHCP_CLASS_INFO PartialClassInfo,
|
|
OUT LPDHCP_CLASS_INFO *FilledClassInfo
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
DhcpEnumClasses(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD ReservedMustBeZero,
|
|
IN OUT DHCP_RESUME_HANDLE *ResumeHandle,
|
|
IN DWORD PreferredMaximum,
|
|
OUT LPDHCP_CLASS_INFO_ARRAY *ClassInfoArray,
|
|
OUT DWORD *nRead,
|
|
OUT DWORD *nTotal
|
|
) ;
|
|
|
|
|
|
|
|
DWORD
|
|
DhcpGetAllOptions(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
OUT LPDHCP_ALL_OPTIONS *OptionStruct // fills the fields of this structure
|
|
) ;
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetAllOptionsV6(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
OUT LPDHCP_ALL_OPTIONS *OptionStruct // fills the fields of this structure
|
|
);
|
|
|
|
DWORD
|
|
DhcpGetAllOptionValues(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo,
|
|
OUT LPDHCP_ALL_OPTION_VALUES *Values
|
|
) ;
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetAllOptionValuesV6(
|
|
__in_opt LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
IN LPDHCP_OPTION_SCOPE_INFO6 ScopeInfo,
|
|
OUT LPDHCP_ALL_OPTION_VALUES *Values
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//DOC DhcpEnumServers enumerates the list of servers found in the DS. If the DS
|
|
//DOC is not accessible, it returns an error. The only currently used parameter
|
|
//DOC is the out parameter Servers. This is a SLOW call.
|
|
DWORD
|
|
DhcpEnumServers(
|
|
IN DWORD Flags, // must be zero
|
|
IN LPVOID IdInfo, // must be NULL
|
|
OUT LPDHCP_SERVER_INFO_ARRAY *Servers, // output servers list
|
|
IN LPVOID CallbackFn, // must be NULL
|
|
IN LPVOID CallbackData // must be NULL
|
|
);
|
|
|
|
//DOC DhcpAddServer tries to add a new server to the existing list of servers in
|
|
//DOC the DS. The function returns error if the Server already exists in the DS.
|
|
//DOC The function tries to upload the server configuration to the DS..
|
|
//DOC This is a SLOW call. Currently, the DsLocation and DsLocType are not valid
|
|
//DOC fields in the NewServer and they'd be ignored. Version must be zero.
|
|
DWORD
|
|
DhcpAddServer(
|
|
IN DWORD Flags, // must be zero
|
|
IN LPVOID IdInfo, // must be NULL
|
|
IN LPDHCP_SERVER_INFO NewServer, // input server information
|
|
IN LPVOID CallbackFn, // must be NULL
|
|
IN LPVOID CallbackData // must be NULL
|
|
);
|
|
|
|
//DOC DhcpDeleteServer tries to delete the server from DS. It is an error if the
|
|
//DOC server does not already exist. This also deletes any objects related to
|
|
//DOC this server in the DS (like subnet, reservations etc.).
|
|
DWORD
|
|
DhcpDeleteServer(
|
|
IN DWORD Flags, // must be zero
|
|
IN LPVOID IdInfo, // must be NULL
|
|
IN LPDHCP_SERVER_INFO NewServer, // input server information
|
|
IN LPVOID CallbackFn, // must be NULL
|
|
IN LPVOID CallbackData // must be NULL
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetServerBindingInfo(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
ULONG Flags,
|
|
LPDHCP_BIND_ELEMENT_ARRAY *BindElementsInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpSetServerBindingInfo(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
ULONG Flags,
|
|
LPDHCP_BIND_ELEMENT_ARRAY BindElementInfo
|
|
);
|
|
|
|
|
|
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpAddSubnetElementV5(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_CONST DHCP_SUBNET_ELEMENT_DATA_V5 *AddElementInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumSubnetElementsV5(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_SUBNET_ELEMENT_TYPE EnumElementType,
|
|
DHCP_RESUME_HANDLE *ResumeHandle,
|
|
DWORD PreferredMaximum,
|
|
LPDHCP_SUBNET_ELEMENT_INFO_ARRAY_V5 *EnumElementInfo,
|
|
DWORD *ElementsRead,
|
|
DWORD *ElementsTotal
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpRemoveSubnetElementV5(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
DHCP_CONST DHCP_SUBNET_ELEMENT_DATA_V5 *RemoveElementInfo,
|
|
DHCP_FORCE_FLAG ForceFlag
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
//V6 Api's
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpCreateOptionV6(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
IN DHCP_OPTION_ID OptionId,
|
|
__in_opt IN LPWSTR ClassName,
|
|
__in_opt IN LPWSTR VendorName,
|
|
IN LPDHCP_OPTION OptionInfo
|
|
);
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpRemoveOptionV6(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
IN DHCP_OPTION_ID OptionID,
|
|
__in_opt IN LPWSTR ClassName,
|
|
__in_opt IN LPWSTR VendorName
|
|
);
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumOptionsV6(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
__in_opt IN LPWSTR ClassName,
|
|
__in_opt IN LPWSTR VendorName,
|
|
IN OUT DHCP_RESUME_HANDLE *ResumeHandle,
|
|
IN DWORD PreferredMaximum,
|
|
OUT LPDHCP_OPTION_ARRAY *Options,
|
|
OUT DWORD *OptionsRead,
|
|
OUT DWORD *OptionsTotal
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpRemoveOptionValueV6(
|
|
__in_opt LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
IN DHCP_OPTION_ID OptionID,
|
|
__in_opt LPWSTR ClassName,
|
|
__in_opt LPWSTR VendorName,
|
|
IN LPDHCP_OPTION_SCOPE_INFO6 ScopeInfo
|
|
);
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetOptionInfoV6(
|
|
__in_opt LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
IN DHCP_OPTION_ID OptionID,
|
|
__in_opt LPWSTR ClassName,
|
|
__in_opt LPWSTR VendorName,
|
|
OUT LPDHCP_OPTION *OptionInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpSetOptionInfoV6(
|
|
__in_opt LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
IN DHCP_OPTION_ID OptionID,
|
|
__in_opt LPWSTR ClassName,
|
|
__in_opt LPWSTR VendorName,
|
|
IN LPDHCP_OPTION OptionInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpSetOptionValueV6(
|
|
__in_opt LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
IN DHCP_OPTION_ID OptionId,
|
|
__in_opt LPWSTR ClassName,
|
|
__in_opt LPWSTR VendorName,
|
|
IN LPDHCP_OPTION_SCOPE_INFO6 ScopeInfo,
|
|
IN LPDHCP_OPTION_DATA OptionValue
|
|
);
|
|
|
|
|
|
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetSubnetInfoVQ(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
__out LPDHCP_SUBNET_INFO_VQ *SubnetInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpCreateSubnetVQ(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
__in DHCP_CONST DHCP_SUBNET_INFO_VQ *SubnetInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpSetSubnetInfoVQ(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IP_ADDRESS SubnetAddress,
|
|
__in DHCP_CONST DHCP_SUBNET_INFO_VQ *SubnetInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumOptionValuesV6(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DWORD Flags,
|
|
__in_opt LPWSTR ClassName,
|
|
__in_opt LPWSTR VendorName,
|
|
LPDHCP_OPTION_SCOPE_INFO6 ScopeInfo,
|
|
DHCP_RESUME_HANDLE *ResumeHandle,
|
|
DWORD PreferredMaximum,
|
|
LPDHCP_OPTION_VALUE_ARRAY *OptionValues,
|
|
DWORD *OptionsRead,
|
|
DWORD *OptionsTotal
|
|
);
|
|
|
|
#endif
|
|
|
|
//DOC DhcpDsInit must be called exactly once per process.. this initializes the
|
|
//DOC memory and other structures for this process. This initializes some DS
|
|
//DOC object handles (memory), and hence is slow as this has to read from DS.
|
|
DWORD
|
|
DhcpDsInit(
|
|
VOID
|
|
);
|
|
|
|
//DOC DhcpDsCleanup undoes the effect of any DhcpDsInit. This function should be
|
|
//DOC called exactly once for each process, and only at termination. Note that
|
|
//DOC it is safe to call this function even if DhcpDsInit does not succeed.
|
|
VOID
|
|
DhcpDsCleanup(
|
|
VOID
|
|
);
|
|
|
|
|
|
DWORD
|
|
DhcpSetThreadOptions( // set options for current thread
|
|
IN DWORD Flags, // options, currently 0 or DHCP_FLAGS_DONT_ACCESS_DS
|
|
IN LPVOID Reserved // must be NULL, reserved for future
|
|
);
|
|
|
|
//DOC DhcpGetThreadOptions retrieves the current thread options as set by DhcpSetThreadOptions.
|
|
//DOC If none were set, the return value is zero.
|
|
DWORD
|
|
DhcpGetThreadOptions( // get current thread options
|
|
OUT LPDWORD pFlags, // this DWORD is filled with current optiosn..
|
|
IN OUT LPVOID Reserved // must be NULL, reserved for future
|
|
);
|
|
|
|
|
|
DWORD // Status code
|
|
DhcpServerQueryAttribute( // get a server status
|
|
__in_opt IN LPWSTR ServerIpAddr, // String form of server IP
|
|
IN ULONG dwReserved, // reserved for future
|
|
IN DHCP_ATTRIB_ID DhcpAttribId, // the attrib being queried
|
|
OUT LPDHCP_ATTRIB *pDhcpAttrib // fill in this field
|
|
);
|
|
|
|
DWORD // Status code
|
|
DhcpServerQueryAttributes( // query multiple attributes
|
|
__in_opt IN LPWSTR ServerIpAddr, // String form of server IP
|
|
IN ULONG dwReserved, // reserved for future
|
|
IN ULONG dwAttribCount, // # of attribs being queried
|
|
IN DHCP_ATTRIB_ID pDhcpAttribs[],// array of attribs
|
|
OUT LPDHCP_ATTRIB_ARRAY *pDhcpAttribArr // Ptr is filled w/ array
|
|
);
|
|
|
|
DWORD // Status code
|
|
DhcpServerRedoAuthorization( // retry the rogue server stuff
|
|
__in_opt IN LPWSTR ServerIpAddr, // String form of server IP
|
|
IN ULONG dwReserved // reserved for future
|
|
);
|
|
|
|
DWORD
|
|
DhcpAuditLogSetParams( // set some auditlogging params
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags, // currently must be zero
|
|
__in_opt IN LPWSTR AuditLogDir, // directory to log files in..
|
|
IN DWORD DiskCheckInterval, // how often to check disk space?
|
|
IN DWORD MaxLogFilesSize, // how big can all logs files be..
|
|
IN DWORD MinSpaceOnDisk // mininum amt of free disk space
|
|
);
|
|
|
|
DWORD
|
|
DhcpAuditLogGetParams(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD Flags,
|
|
__deref_out_opt OUT LPWSTR *AuditLogDir,
|
|
OUT DWORD *DiskCheckInterval,
|
|
OUT DWORD *MaxLogFilesSize,
|
|
OUT DWORD *MinSpaceOnDisk
|
|
);
|
|
|
|
|
|
|
|
|
|
DWORD
|
|
DhcpServerQueryDnsRegCredentials(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN ULONG UnameSize, //in BYTES
|
|
__out_ecount(UnameSize) LPWSTR Uname,
|
|
IN ULONG DomainSize, // in BYTES
|
|
__out_ecount(DomainSize) LPWSTR Domain
|
|
);
|
|
|
|
DWORD
|
|
DhcpServerSetDnsRegCredentials(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
__in_opt IN LPWSTR Uname,
|
|
__in_opt IN LPWSTR Domain,
|
|
__in_opt IN LPWSTR Passwd
|
|
);
|
|
|
|
DWORD
|
|
DhcpServerSetDnsRegCredentialsV5(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
__in_opt IN LPWSTR Uname,
|
|
__in_opt IN LPWSTR Domain,
|
|
__in_opt IN LPWSTR Passwd
|
|
);
|
|
|
|
DWORD
|
|
DhcpServerBackupDatabase(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
__in IN LPWSTR Path
|
|
);
|
|
|
|
DWORD
|
|
DhcpServerRestoreDatabase(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
__in IN LPWSTR Path
|
|
);
|
|
|
|
//
|
|
// All Quarantine related APIs
|
|
//
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpServerSetConfigVQ(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DWORD FieldsToSet,
|
|
LPDHCP_SERVER_CONFIG_INFO_VQ ConfigInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpServerGetConfigVQ(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
LPDHCP_SERVER_CONFIG_INFO_VQ *ConfigInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetServerSpecificStrings(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
LPDHCP_SERVER_SPECIFIC_STRINGS *ServerSpecificStrings
|
|
);
|
|
|
|
void DHCP_API_FUNCTION
|
|
DhcpServerAuditlogParamsFree(
|
|
DHCP_SERVER_CONFIG_INFO_VQ *ConfigInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpCreateSubnetV6(
|
|
__in_opt LPWSTR ServerIpAddress,
|
|
DHCP_IPV6_ADDRESS SubnetAddress,
|
|
LPDHCP_SUBNET_INFO_V6 SubnetInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpDeleteSubnetV6(
|
|
__in_opt LPWSTR ServerIpAddress,
|
|
DHCP_IPV6_ADDRESS SubnetAddress,
|
|
DHCP_FORCE_FLAG ForceFlag
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumSubnetsV6(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_RESUME_HANDLE *ResumeHandle,
|
|
DWORD PreferredMaximum,
|
|
LPDHCPV6_IP_ARRAY *EnumInfo,
|
|
DWORD *ElementsRead,
|
|
DWORD *ElementsTotal
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpAddSubnetElementV6(
|
|
__in_opt LPWSTR ServerIpAddress,
|
|
DHCP_IPV6_ADDRESS SubnetAddress,
|
|
LPDHCP_SUBNET_ELEMENT_DATA_V6 AddElementInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpRemoveSubnetElementV6(
|
|
__in_opt LPWSTR ServerIpAddress,
|
|
DHCP_IPV6_ADDRESS SubnetAddress,
|
|
LPDHCP_SUBNET_ELEMENT_DATA_V6 RemoveElementInfo,
|
|
DHCP_FORCE_FLAG ForceFlag
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumSubnetElementsV6(
|
|
__in_opt LPWSTR ServerIpAddress,
|
|
DHCP_IPV6_ADDRESS SubnetAddress,
|
|
DHCP_SUBNET_ELEMENT_TYPE_V6 EnumElementType,
|
|
DHCP_RESUME_HANDLE *ResumeHandle,
|
|
DWORD PreferredMaximum,
|
|
LPDHCP_SUBNET_ELEMENT_INFO_ARRAY_V6 *EnumElementInfo,
|
|
DWORD *ElementsRead,
|
|
DWORD *ElementsTotal
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetSubnetInfoV6(
|
|
__in_opt LPWSTR ServerIpAddress,
|
|
DHCP_IPV6_ADDRESS SubnetAddress,
|
|
LPDHCP_SUBNET_INFO_V6 *SubnetInfo
|
|
);
|
|
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumSubnetClientsV6(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IPV6_ADDRESS SubnetAddress,
|
|
DHCP_RESUME_IPV6_HANDLE *ResumeHandle,
|
|
DWORD PreferredMaximum,
|
|
LPDHCP_CLIENT_INFO_ARRAY_V6 *ClientInfo,
|
|
DWORD *ClientsRead,
|
|
DWORD *ClientsTotal
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpServerGetConfigV6(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
LPDHCP_OPTION_SCOPE_INFO6 ScopeInfo,
|
|
LPDHCP_SERVER_CONFIG_INFO_V6 *ConfigInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpServerSetConfigV6(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
LPDHCP_OPTION_SCOPE_INFO6 ScopeInfo,
|
|
DWORD FieldsToSet,
|
|
LPDHCP_SERVER_CONFIG_INFO_V6 ConfigInfo
|
|
);
|
|
|
|
DWORD
|
|
DhcpSetSubnetInfoV6(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_IPV6_ADDRESS SubnetAddress,
|
|
|
|
LPDHCP_SUBNET_INFO_V6 SubnetInfo
|
|
);
|
|
DWORD
|
|
DhcpGetMibInfoV6(
|
|
__in_z_opt DHCP_CONST WCHAR * ServerIpAddress,
|
|
LPDHCP_MIB_INFO_V6 *MibInfo
|
|
);
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetServerBindingInfoV6(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
ULONG Flags,
|
|
LPDHCPV6_BIND_ELEMENT_ARRAY *BindElementsInfo
|
|
);
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpSetServerBindingInfoV6(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
ULONG Flags,
|
|
LPDHCPV6_BIND_ELEMENT_ARRAY BindElementInfo
|
|
);
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpSetClientInfoV6(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_CONST DHCP_CLIENT_INFO_V6 *ClientInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetClientInfoV6(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_CONST DHCP_SEARCH_INFO_V6 *SearchInfo,
|
|
LPDHCP_CLIENT_INFO_V6 *ClientInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpDeleteClientInfoV6(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
DHCP_CONST DHCP_SEARCH_INFO_V6 *ClientInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpCreateClassV6(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD ReservedMustBeZero,
|
|
IN LPDHCP_CLASS_INFO_V6 ClassInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpModifyClassV6(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD ReservedMustBeZero,
|
|
IN LPDHCP_CLASS_INFO_V6 ClassInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpDeleteClassV6(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD ReservedMustBeZero,
|
|
__in IN LPWSTR ClassName
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpEnumClassesV6(
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DWORD ReservedMustBeZero,
|
|
IN OUT DHCP_RESUME_HANDLE *ResumeHandle,
|
|
IN DWORD PreferredMaximum,
|
|
OUT LPDHCP_CLASS_INFO_ARRAY_V6 *ClassInfoArray,
|
|
OUT DWORD *nRead,
|
|
OUT DWORD *nTotal
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpSetSubnetDelayOffer (
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DHCP_IP_ADDRESS SubnetAddress,
|
|
IN USHORT TimeDelayInMilliseconds
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetSubnetDelayOffer (
|
|
__in_opt IN LPWSTR ServerIpAddress,
|
|
IN DHCP_IP_ADDRESS SubnetAddress,
|
|
IN USHORT * TimeDelayInMilliseconds
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpGetMibInfoV5(
|
|
__in_z_opt DHCP_CONST WCHAR *ServerIpAddress,
|
|
OUT LPDHCP_MIB_INFO_V5 *MibInfo
|
|
);
|
|
|
|
DWORD DHCP_API_FUNCTION
|
|
DhcpAddSecurityGroup(
|
|
__in_opt LPWSTR pServer
|
|
);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // _DHCSPAPI_
|
|
|