Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _DHCPSAPI_
      7 #define _DHCPSAPI_
      8 
      9 #ifndef WINAPI
     10 #define WINAPI __stdcall
     11 #endif
     12 
     13 #define DHCP_API_FUNCTION WINAPI
     14 
     15 #ifdef __cplusplus
     16 #define DHCP_CONST const
     17 extern "C" {
     18 #else
     19 #define DHCP_CONST
     20 #endif
     21 
     22 typedef DWORD DHCP_IP_ADDRESS,*PDHCP_IP_ADDRESS,*LPDHCP_IP_ADDRESS;
     23 typedef DWORD DHCP_IP_MASK;
     24 typedef DWORD DHCP_RESUME_HANDLE;
     25 typedef DWORD DHCP_OPTION_ID;
     26 
     27 typedef enum _DHCP_OPTION_TYPE {
     28   DhcpUnaryElementTypeOption = 0,
     29   DhcpArrayTypeOption
     30 } DHCP_OPTION_TYPE, *LPDHCP_OPTION_TYPE;
     31 
     32 typedef struct _DATE_TIME {
     33   DWORD dwLowDateTime;
     34   DWORD dwHighDateTime;
     35 } DATE_TIME,*LPDATE_TIME;
     36 
     37 typedef struct _DWORD_DWORD {
     38   DWORD DWord1;
     39   DWORD DWord2;
     40 } DWORD_DWORD,*LPDWORD_DWORD;
     41 
     42 typedef struct _DHCP_BINARY_DATA {
     43   DWORD DataLength;
     44   BYTE *Data;
     45 } DHCP_BINARY_DATA,*LPDHCP_BINARY_DATA;
     46 
     47 typedef DHCP_BINARY_DATA DHCP_CLIENT_UID;
     48 
     49 #define DHCP_ENDPOINT_FLAG_CANT_MODIFY 0x01
     50 
     51 typedef struct _DHCP_BIND_ELEMENT {
     52   ULONG Flags;
     53   WINBOOL fBoundToDHCPServer;
     54   DHCP_IP_ADDRESS AdapterPrimaryAddress;
     55   DHCP_IP_ADDRESS AdapterSubnetAddress;
     56   LPWSTR IfDescription;
     57   ULONG IfIdSize;
     58   LPBYTE IfId;
     59 } DHCP_BIND_ELEMENT,*LPDHCP_BIND_ELEMENT;
     60 
     61 typedef struct _DHCP_BIND_ELEMENT_ARRAY {
     62   DWORD NumElements;
     63   LPDHCP_BIND_ELEMENT Elements;
     64 } DHCP_BIND_ELEMENT_ARRAY,*LPDHCP_BIND_ELEMENT_ARRAY;
     65 
     66 typedef enum _DHCP_CLIENT_SEARCH_TYPE {
     67   DhcpClientIpAddress,DhcpClientHardwareAddress,DhcpClientName
     68 } DHCP_SEARCH_INFO_TYPE,*LPDHCP_SEARCH_INFO_TYPE;
     69 
     70 typedef struct _DHCP_CLIENT_SEARCH_INFO {
     71   DHCP_SEARCH_INFO_TYPE SearchType;
     72   union _DHCP_CLIENT_SEARCH_UNION {
     73     DHCP_IP_ADDRESS ClientIpAddress;
     74     DHCP_CLIENT_UID ClientHardwareAddress;
     75     LPWSTR ClientName;
     76   } SearchInfo;
     77 } DHCP_SEARCH_INFO,*LPDHCP_SEARCH_INFO;
     78 
     79 typedef enum _DHCP_OPTION_SCOPE_TYPE {
     80   DhcpDefaultOptions,DhcpGlobalOptions,DhcpSubnetOptions,DhcpReservedOptions,DhcpMScopeOptions
     81 } DHCP_OPTION_SCOPE_TYPE,*LPDHCP_OPTION_SCOPE_TYPE;
     82 
     83 typedef struct _DHCP_RESERVED_SCOPE {
     84   DHCP_IP_ADDRESS ReservedIpAddress;
     85   DHCP_IP_ADDRESS ReservedIpSubnetAddress;
     86 } DHCP_RESERVED_SCOPE,*LPDHCP_RESERVED_SCOPE;
     87 
     88 typedef struct _DHCP_OPTION_SCOPE_INFO {
     89   DHCP_OPTION_SCOPE_TYPE ScopeType;
     90   union _DHCP_OPTION_SCOPE_UNION {
     91     PVOID DefaultScopeInfo;
     92     PVOID GlobalScopeInfo;
     93     DHCP_IP_ADDRESS SubnetScopeInfo;
     94     DHCP_RESERVED_SCOPE ReservedScopeInfo;
     95     LPWSTR MScopeInfo;
     96   } ScopeInfo;
     97 } DHCP_OPTION_SCOPE_INFO,*LPDHCP_OPTION_SCOPE_INFO;
     98 
     99 typedef struct _DHCP_HOST_INFO {
    100   DHCP_IP_ADDRESS IpAddress;
    101   LPWSTR NetBiosName;
    102   LPWSTR HostName;
    103 } DHCP_HOST_INFO,*LPDHCP_HOST_INFO;
    104 
    105 typedef struct _DHCP_CLIENT_INFO {
    106   DHCP_IP_ADDRESS ClientIpAddress;
    107   DHCP_IP_MASK SubnetMask;
    108   DHCP_CLIENT_UID ClientHardwareAddress;
    109   LPWSTR ClientName;
    110   LPWSTR ClientComment;
    111   DATE_TIME ClientLeaseExpires;
    112   DHCP_HOST_INFO OwnerHost;
    113 } DHCP_CLIENT_INFO,*LPDHCP_CLIENT_INFO;
    114 
    115 typedef struct _DHCP_CLIENT_INFO_ARRAY {
    116   DWORD NumElements;
    117   LPDHCP_CLIENT_INFO *Clients;
    118 } DHCP_CLIENT_INFO_ARRAY,*LPDHCP_CLIENT_INFO_ARRAY;
    119 
    120 typedef struct _DHCP_IP_ARRAY {
    121   DWORD NumElements;
    122   LPDHCP_IP_ADDRESS Elements;
    123 } DHCP_IP_ARRAY,*LPDHCP_IP_ARRAY;
    124 
    125 typedef enum _DHCP_SUBNET_STATE {
    126   DhcpSubnetEnabled = 0,DhcpSubnetDisabled,DhcpSubnetEnabledSwitched,DhcpSubnetDisabledSwitched,DhcpSubnetInvalidState
    127 } DHCP_SUBNET_STATE,*LPDHCP_SUBNET_STATE;
    128 
    129 typedef struct _DHCP_SUBNET_INFO {
    130   DHCP_IP_ADDRESS SubnetAddress;
    131   DHCP_IP_MASK SubnetMask;
    132   LPWSTR SubnetName;
    133   LPWSTR SubnetComment;
    134   DHCP_HOST_INFO PrimaryHost;
    135   DHCP_SUBNET_STATE SubnetState;
    136 } DHCP_SUBNET_INFO,*LPDHCP_SUBNET_INFO;
    137 
    138 typedef enum _DHCP_OPTION_DATA_TYPE {
    139   DhcpByteOption,DhcpWordOption,DhcpDWordOption,DhcpDWordDWordOption,DhcpIpAddressOption,DhcpStringDataOption,DhcpBinaryDataOption,DhcpEncapsulatedDataOption
    140 } DHCP_OPTION_DATA_TYPE,*LPDHCP_OPTION_DATA_TYPE;
    141 
    142 typedef struct _DHCP_OPTION_DATA_ELEMENT {
    143   DHCP_OPTION_DATA_TYPE OptionType;
    144   union _DHCP_OPTION_ELEMENT_UNION {
    145     BYTE ByteOption;
    146     WORD WordOption;
    147     DWORD DWordOption;
    148     DWORD_DWORD DWordDWordOption;
    149     DHCP_IP_ADDRESS IpAddressOption;
    150     LPWSTR StringDataOption;
    151     DHCP_BINARY_DATA BinaryDataOption;
    152     DHCP_BINARY_DATA EncapsulatedDataOption;
    153 
    154   } Element;
    155 } DHCP_OPTION_DATA_ELEMENT,*LPDHCP_OPTION_DATA_ELEMENT;
    156 
    157 typedef struct _DHCP_OPTION_DATA {
    158   DWORD NumElements;
    159   LPDHCP_OPTION_DATA_ELEMENT Elements;
    160 } DHCP_OPTION_DATA,*LPDHCP_OPTION_DATA;
    161 
    162 typedef struct _DHCP_OPTION_VALUE {
    163   DHCP_OPTION_ID OptionID;
    164   DHCP_OPTION_DATA Value;
    165 } DHCP_OPTION_VALUE,*LPDHCP_OPTION_VALUE;
    166 
    167 typedef struct _DHCP_OPTION {
    168   DHCP_OPTION_ID   OptionID;
    169   LPWSTR           OptionName;
    170   LPWSTR           OptionComment;
    171   DHCP_OPTION_DATA DefaultValue;
    172   DHCP_OPTION_TYPE OptionType;
    173 } DHCP_OPTION, *LPDHCP_OPTION;
    174 
    175 DWORD WINAPI DhcpGetVersion(LPWSTR ServerIpAddress,LPDWORD MajorVersion,LPDWORD MinorVersion);
    176 DWORD WINAPI DhcpSetServerBindingInfo(DHCP_CONST WCHAR *ServerIpAddress,ULONG Flags,LPDHCP_BIND_ELEMENT_ARRAY BindElementInfo);
    177 DWORD WINAPI DhcpGetServerBindingInfo(DHCP_CONST WCHAR *ServerIpAddress,ULONG Flags,LPDHCP_BIND_ELEMENT_ARRAY *BindElementsInfo);
    178 DWORD WINAPI DhcpCreateClientInfo(DHCP_CONST WCHAR *ServerIpAddress,DHCP_CONST DHCP_CLIENT_INFO *ClientInfo);
    179 DWORD WINAPI DhcpSetClientInfo(DHCP_CONST WCHAR *ServerIpAddress,DHCP_CONST DHCP_CLIENT_INFO *ClientInfo);
    180 DWORD WINAPI DhcpGetClientInfo(DHCP_CONST WCHAR *ServerIpAddress,DHCP_CONST DHCP_SEARCH_INFO *SearchInfo,LPDHCP_CLIENT_INFO *ClientInfo);
    181 DWORD WINAPI DhcpDeleteClientInfo(DHCP_CONST WCHAR *ServerIpAddress,DHCP_CONST DHCP_SEARCH_INFO *ClientInfo);
    182 DWORD WINAPI DhcpEnumSubnetClients(DHCP_CONST WCHAR *ServerIpAddress,DHCP_IP_ADDRESS SubnetAddress,DHCP_RESUME_HANDLE *ResumeHandle,DWORD PreferredMaximum,LPDHCP_CLIENT_INFO_ARRAY *ClientInfo,DWORD *ClientsRead,DWORD *ClientsTotal);
    183 DWORD WINAPI DhcpEnumSubnets(DHCP_CONST WCHAR *ServerIpAddress,DHCP_RESUME_HANDLE *ResumeHandle,DWORD PreferredMaximum,LPDHCP_IP_ARRAY *EnumInfo,DWORD *ElementsRead,DWORD *ElementsTotal);
    184 DWORD WINAPI DhcpGetSubnetInfo(DHCP_CONST WCHAR *ServerIpAddress,DHCP_IP_ADDRESS SubnetAddress,LPDHCP_SUBNET_INFO *SubnetInfo);
    185 DWORD WINAPI DhcpGetOptionValue(DHCP_CONST WCHAR *ServerIpAddress,DHCP_OPTION_ID OptionID,DHCP_CONST DHCP_OPTION_SCOPE_INFO *ScopeInfo,LPDHCP_OPTION_VALUE *OptionValue);
    186 VOID WINAPI DhcpRpcFreeMemory(PVOID BufferPointer);
    187 
    188 #define ERROR_DHCP_REGISTRY_INIT_FAILED 20000
    189 #define ERROR_DHCP_DATABASE_INIT_FAILED 20001
    190 #define ERROR_DHCP_RPC_INIT_FAILED 20002
    191 #define ERROR_DHCP_NETWORK_INIT_FAILED 20003
    192 #define ERROR_DHCP_SUBNET_EXISTS 20004
    193 #define ERROR_DHCP_SUBNET_NOT_PRESENT 20005
    194 #define ERROR_DHCP_PRIMARY_NOT_FOUND 20006
    195 #define ERROR_DHCP_ELEMENT_CANT_REMOVE 20007
    196 #define ERROR_DHCP_OPTION_EXISTS 20009
    197 #define ERROR_DHCP_OPTION_NOT_PRESENT 20010
    198 #define ERROR_DHCP_ADDRESS_NOT_AVAILABLE 20011
    199 #define ERROR_DHCP_RANGE_FULL 20012
    200 #define ERROR_DHCP_JET_ERROR 20013
    201 #define ERROR_DHCP_CLIENT_EXISTS 20014
    202 #define ERROR_DHCP_INVALID_DHCP_MESSAGE 20015
    203 #define ERROR_DHCP_INVALID_DHCP_CLIENT 20016
    204 #define ERROR_DHCP_SERVICE_PAUSED 20017
    205 #define ERROR_DHCP_NOT_RESERVED_CLIENT 20018
    206 #define ERROR_DHCP_RESERVED_CLIENT 20019
    207 #define ERROR_DHCP_RANGE_TOO_SMALL 20020
    208 #define ERROR_DHCP_IPRANGE_EXISTS 20021
    209 #define ERROR_DHCP_RESERVEDIP_EXISTS 20022
    210 #define ERROR_DHCP_INVALID_RANGE 20023
    211 #define ERROR_DHCP_RANGE_EXTENDED 20024
    212 #define ERROR_DHCP_RANGE_EXTENSION_TOO_SMALL 20025
    213 #define ERROR_DHCP_WARNING_RANGE_EXTENDED_LESS 20026
    214 #define ERROR_DHCP_JET_CONV_REQUIRED 20027
    215 #define ERROR_DHCP_SERVER_INVALID_BOOT_FILE_TABLE 20028
    216 #define ERROR_DHCP_SERVER_UNKNOWN_BOOT_FILE_NAME 20029
    217 #define ERROR_DHCP_SUPER_SCOPE_NAME_TOO_LONG 20030
    218 #define ERROR_DHCP_IP_ADDRESS_IN_USE 20032
    219 #define ERROR_DHCP_LOG_FILE_PATH_TOO_LONG 20033
    220 #define ERROR_DHCP_UNSUPPORTED_CLIENT 20034
    221 #define ERROR_DHCP_SERVER_INTERFACE_NOTIFICATION_EVENT 20035
    222 #define ERROR_DHCP_JET97_CONV_REQUIRED 20036
    223 #define ERROR_DHCP_ROGUE_INIT_FAILED 20037
    224 #define ERROR_DHCP_ROGUE_SAMSHUTDOWN 20038
    225 #define ERROR_DHCP_ROGUE_NOT_AUTHORIZED 20039
    226 #define ERROR_DHCP_ROGUE_DS_UNREACHABLE 20040
    227 #define ERROR_DHCP_ROGUE_DS_CONFLICT 20041
    228 #define ERROR_DHCP_ROGUE_NOT_OUR_ENTERPRISE 20042
    229 #define ERROR_DHCP_STANDALONE_IN_DS 20043
    230 #define ERROR_DHCP_CLASS_NOT_FOUND 20044
    231 #define ERROR_DHCP_CLASS_ALREADY_EXISTS 20045
    232 #define ERROR_DHCP_SCOPE_NAME_TOO_LONG 20046
    233 #define ERROR_DHCP_DEFAULT_SCOPE_EXISTS 20047
    234 #define ERROR_DHCP_CANT_CHANGE_ATTRIBUTE 20048
    235 #define ERROR_DHCP_IPRANGE_CONV_ILLEGAL 20049
    236 #define ERROR_DHCP_NETWORK_CHANGED 20050
    237 #define ERROR_DHCP_CANNOT_MODIFY_BINDINGS 20051
    238 #define ERROR_DHCP_SUBNET_EXISTS 20052
    239 #define ERROR_DHCP_MSCOPE_EXISTS 20053
    240 #define ERROR_DHCP_MSCOPE_RANGE_TOO_SMALL 20054
    241 #define ERROR_DHCP_MSCOPE_RANGE_TOO_SMALL 20054
    242 #define ERROR_DDS_NO_DS_AVAILABLE 20070
    243 #define ERROR_DDS_NO_DHCP_ROOT 20071
    244 #define ERROR_DDS_DHCP_SERVER_NOT_FOUND 20074
    245 #define ERROR_DDS_OPTION_ALREADY_EXISTS 20075
    246 #define ERROR_DDS_OPTION_ALREADY_EXISTS 20076
    247 #define ERROR_DDS_CLASS_EXISTS 20077
    248 #define ERROR_DDS_CLASS_DOES_NOT_EXIST 20078
    249 #define ERROR_DDS_SERVER_ALREADY_EXISTS 20079
    250 #define ERROR_DDS_SERVER_DOES_NOT_EXIST 20080
    251 #define ERROR_DDS_SERVER_ADDRESS_MISMATCH 20081
    252 #define ERROR_DDS_SUBNET_EXISTS 20082
    253 #define ERROR_DDS_SUBNET_HAS_DIFF_SUPER_SCOPE 20083
    254 #define ERROR_DDS_SUBNET_NOT_PRESENT 20084
    255 #define ERROR_DDS_RESERVATION_NOT_PRESENT 20085
    256 #define ERROR_DDS_RESERVATION_CONFLICT 20086
    257 #define ERROR_DDS_POSSIBLE_RANGE_CONFLICT 20087
    258 #define ERROR_DDS_RANGE_DOES_NOT_EXIST 20088
    259 
    260 typedef struct _DHCP_OPTION_ARRAY {
    261   DWORD         NumElements;
    262   LPDHCP_OPTION Options;
    263 } DHCP_OPTION_ARRAY, *LPDHCP_OPTION_ARRAY;
    264 
    265 #if (_WIN32_WINNT >= 0x0600)
    266 typedef struct _DHCP_BINARY_DATA {
    267   DWORD DataLength;
    268   BYTE* Data;
    269 } DHCP_BINARY_DATA, *LPDHCP_BINARY_DATA;
    270 
    271 typedef DHCP_BINARY_DATA DHCP_CLIENT_UID;
    272 
    273 typedef enum _DHCP_OPTION_SCOPE_TYPE6 {
    274   DhcpDefaultOptions6,
    275   DhcpScopeOptions6,
    276   DhcpReservedOptions6
    277 } DHCP_OPTION_SCOPE_TYPE6;
    278 
    279 typedef struct _DHCP_ALL_OPTIONS {
    280   DWORD               Flags;
    281   LPDHCP_OPTION_ARRAY NonVendorOptions;
    282   DWORD               NumVendorOptions;
    283   struct {
    284     DHCP_OPTION Option;
    285     LPWSTR      VendorName;
    286     LPWSTR      ClassName;
    287   } *VendorOptions;
    288 } DHCP_ALL_OPTIONS, *LPDHCP_ALL_OPTIONS;
    289 
    290 typedef struct _DHCP_IPV6_ADDRESS {
    291   ULONGLONG HighOrderBits;
    292   ULONGLONG LowOrderBits;
    293 } DHCP_IPV6_ADDRESS, *PDHCP_IPV6_ADDRESS, *LPDHCP_IPV6_ADDRESS, DHCP_RESUME_IPV6_HANDLE;
    294 
    295 typedef struct _DHCP_ALL_OPTION_VALUES {
    296   DWORD Flags;
    297   DWORD NumElements;
    298   struct {
    299     LPWSTR                    ClassName;
    300     LPWSTR                    VendorName;
    301     WINBOOL                   IsVendor;
    302     LPDHCP_OPTION_VALUE_ARRAY OptionsArray;
    303   } *Options;
    304 } DHCP_ALL_OPTION_VALUES, *LPDHCP_ALL_OPTION_VALUES;
    305 
    306 typedef struct _DHCP_OPTION_SCOPE_INFO6 {
    307   DHCP_OPTION_SCOPE_TYPE6 ScopeType;
    308   union {
    309     PVOID                DefaultScopeInfo;
    310     DHCP_IPV6_ADDRESS    SubnetScopeInfo;
    311     DHCP_RESERVED_SCOPE6 ReservedScopeInfo;
    312   } ScopeInfo;
    313 } DHCP_OPTION_SCOPE_INFO6, *PDHCP_OPTION_SCOPE_INFO6, *LPDHCP_OPTION_SCOPE_INFO6;
    314 
    315 typedef struct _DHCP_OPTION_VALUE_ARRAY {
    316   DWORD               NumElements;
    317   LPDHCP_OPTION_VALUE Values;
    318 } DHCP_OPTION_VALUE_ARRAY, *LPDHCP_OPTION_VALUE_ARRAY;
    319 
    320 typedef enum _DHCP_SUBNET_ELEMENT_TYPE_V6 {
    321   Dhcpv6IpRanges,
    322   Dhcpv6ReservedIps,
    323   Dhcpv6ExcludedIpRanges
    324 } DHCP_SUBNET_ELEMENT_TYPE_V6, *LPDHCP_SUBNET_ELEMENT_TYPE_V6;
    325 
    326 typedef struct _DHCP_IP_RANGE_V6 {
    327   DHCP_IPV6_ADDRESS StartAddress;
    328   DHCP_IPV6_ADDRESS EndAddress;
    329 } DHCP_IP_RANGE_V6, *LPDHCP_IP_RANGE_V6;
    330 
    331 typedef struct _DHCP_IP_RESERVATION_V6 {
    332   DHCP_IPV6_ADDRESS ReservedIpAddress;
    333   DHCP_CLIENT_UID* ReservedForClient;
    334   DWORD InterfaceId;
    335 } DHCP_IP_RESERVATION_V6, *LPDHCP_IP_RESERVATION_V6;
    336 
    337 typedef struct DHCP_SUBNET_ELEMENT_DATA_V6 {
    338   DHCP_SUBNET_ELEMENT_TYPE_V6 ElementType;
    339     union _DHCP_SUBNET_ELEMENT_UNION_V6 {
    340       DHCP_IP_RANGE_V6* IpRange;
    341       DHCP_IP_RESERVATION_V6* ReservedIp;
    342       DHCP_IP_RANGE_V6* ExcludeIpRange;
    343   } Element;
    344 } DHCP_SUBNET_ELEMENT_DATA_V6, *LDHCP_SUBNET_ELEMENT_DATA_V6, *LPDHCP_SUBNET_ELEMENT_DATA_V6;
    345 
    346 typedef struct _DHCP_SUBNET_ELEMENT_INFO_ARRAY_V6 {
    347   DWORD NumElements;
    348   LPDHCP_SUBNET_ELEMENT_DATA_V6 Elements;
    349 } DHCP_SUBNET_ELEMENT_INFO_ARRAY_V6, *LPDHCP_SUBNET_ELEMENT_INFO_ARRAY_V6;
    350 
    351 typedef struct _DHCP_SUBNET_INFO_V6 {
    352   DHCP_IPV6_ADDRESS SubnetAddress;
    353   ULONG             Prefix;
    354   USHORT            Preference;
    355   LPWSTR            SubnetName;
    356   LPWSTR            SubnetComment;
    357   DWORD             State;
    358   DWORD             ScopeId;
    359 } DHCP_SUBNET_INFO_V6, *PDHCP_SUBNET_INFO_V6, *LPDHCP_SUBNET_INFO_V6;
    360 
    361 DWORD DHCP_API_FUNCTION DhcpAddSubnetElementV6(
    362   LPWSTR ServerIpAddress,
    363   DHCP_IPV6_ADDRESS SubnetAddress,
    364   LDHCP_SUBNET_ELEMENT_DATA_V6 *AddElementInfo
    365 );
    366 
    367 DWORD DHCP_API_FUNCTION DhcpCreateOptionV6(
    368   LPWSTR ServerIpAddress,
    369   DWORD Flags,
    370   DHCP_OPTION_ID OptionId,
    371   WCHAR *ClassName,
    372   WCHAR *VendorName,
    373   LPDHCP_OPTION OptionInfo
    374 );
    375 
    376 DWORD DHCP_API_FUNCTION DhcpDeleteSubnetV6(
    377   LPWSTR ServerIpAddress,
    378   DHCP_IPV6_ADDRESS SubnetAddress,
    379   DHCP_FORCE_FLAG ForceFlag
    380 );
    381 
    382 DWORD DHCP_API_FUNCTION DhcpCreateSubnetV6(
    383   LPWSTR ServerIpAddress,
    384   DHCP_IPV6_ADDRESS SubnetAddress,
    385   LDHCP_SUBNET_INFO_V6 *SubnetInfo
    386 );
    387 
    388 DWORD DHCP_API_FUNCTION DhcpEnumOptionsV6(
    389   LPWSTR ServerIpAddress,
    390   DWORD Flags,
    391   WCHAR *ClassName,
    392   WCHAR *VendorName,
    393   DHCP_RESUME_HANDLE *ResumeHandle,
    394   DWORD PreferredMaximum,
    395   LPDHCP_OPTION_ARRAY *Options,
    396   DWORD *OptionsRead,
    397   DWORD *OptionsTotal
    398 );
    399 
    400 DWORD DHCP_API_FUNCTION DhcpEnumOptionValuesV6(
    401   LPWSTR ServerIpAddress,
    402   DWORD Flags,
    403   WCHAR *ClassName,
    404   WCHAR *VendorName,
    405   DHCP_OPTION_SCOPE_INFO6 ScopeInfo,
    406   DHCP_RESUME_HANDLE *ResumeHandle,
    407   DWORD PreferredMaximum,
    408   LPDHCP_OPTION_VALUE_ARRAY *OptionValues,
    409   DWORD *OptionsRead,
    410   DWORD *OptionsTotal
    411 );
    412 
    413 DWORD DHCP_API_FUNCTION DhcpEnumSubnetClientsV6(
    414   LPWSTR ServerIpAddress,
    415   DHCP_IPV6_ADDRESS SubnetAddress,
    416   DHCP_RESUME_IPV6_HANDLE *ResumeHandle,
    417   DWORD PreferredMaximum,
    418   LPDHCP_CLIENT_INFO_ARRAY_V6 *ClientInfo,
    419   DWORD *ClientsRead,
    420   DWORD *ClientsTotal
    421 );
    422 
    423 DWORD DHCP_API_FUNCTION DhcpEnumSubnetElementsV6(
    424   LPWSTR ServerIpAddress,
    425   DHCP_IPV6_ADDRESS SubnetAddress,
    426   DHCP_SUBNET_ELEMENT_TYPE_V6 EnumElementType,
    427   DHCP_RESUME_HANDLE *ResumeHandle,
    428   DWORD PreferredMaximum,
    429   LPDHCP_SUBNET_ELEMENT_INFO_ARRAY_V6 *EnumElementInfo,
    430   DWORD *ElementsRead,
    431   DWORD *ElementsTotal
    432 );
    433 
    434 DWORD DHCP_API_FUNCTION DhcpEnumSubnetsV6(
    435   LPWSTR ServerIpAddress,
    436   DHCP_RESUME_HANDLE *ResumeHandle,
    437   DWORD PreferredMaximum,
    438   LPDHCPV6_IP_ARRAY *EnumInfo,
    439   DWORD *ElementsRead,
    440   DWORD *ElementsTotal
    441 );
    442 
    443 DWORD DHCP_API_FUNCTION DhcpGetAllOptionsV6(
    444   LPWSTR ServerIpAddress,
    445   DWORD Flags,
    446   LPDHCP_ALL_OPTIONS *OptionStruct
    447 );
    448 
    449 DWORD DHCP_API_FUNCTION DhcpGetAllOptionValuesV6(
    450   LPWSTR ServerIpAddress,
    451   DWORD Flags,
    452   LPDHCP_OPTION_SCOPE_INFO6 ScopeInfo,
    453   LPDHCP_ALL_OPTION_VALUES *Values
    454 );
    455 
    456 DWORD DHCP_API_FUNCTION DhcpGetOptionInfoV6(
    457   LPWSTR ServerIpAddress,
    458   DWORD Flags,
    459   DHCP_OPTION_ID OptionID,
    460   WCHAR *ClassName,
    461   WCHAR *VendorName,
    462   LPDHCP_OPTION *OptionInfo
    463 );
    464 
    465 DWORD DHCP_API_FUNCTION DhcpGetSubnetInfoV6(
    466   LPWSTR ServerIpAddress,
    467   DHCP_IPV6_ADDRESS SubnetAddress,
    468   LPDHCP_SUBNET_INFO_V6 *SubnetInfo
    469 );
    470 
    471 DWORD DHCP_API_FUNCTION DhcpRemoveOptionV6(
    472   LPWSTR ServerIpAddress,
    473   DWORD Flags,
    474   DHCP_OPTION_ID OptionID,
    475   WCHAR *ClassName,
    476   WCHAR *VendorName
    477 );
    478 
    479 DWORD DHCP_API_FUNCTION DhcpRemoveOptionValueV6(
    480   LPWSTR ServerIpAddress,
    481   DWORD Flags,
    482   DHCP_OPTION_ID OptionID,
    483   WCHAR *ClassName,
    484   WCHAR *VendorName,
    485   DHCP_OPTION_SCOPE_INFO6 ScopeInfo
    486 );
    487 
    488 DWORD DHCP_API_FUNCTION DhcpRemoveSubnetElementV6(
    489   LPWSTR ServerIpAddress,
    490   DHCP_IPV6_ADDRESS SubnetAddress,
    491   LDHCP_SUBNET_ELEMENT_DATA_V6 RemoveElementInfo,
    492   DHCP_FORCE_FLAG ForceFlag
    493 );
    494 
    495 DWORD DHCP_API_FUNCTION DhcpSetOptionInfoV6(
    496   LPWSTR ServerIpAddress,
    497   DWORD Flags,
    498   DHCP_OPTION_ID OptionID,
    499   WCHAR *ClassName,
    500   WCHAR *VendorName,
    501   LPDHCP_OPTION OptionInfo
    502 );
    503 
    504 DWORD DHCP_API_FUNCTION DhcpSetOptionValueV6(
    505   LPWSTR ServerIpAddress,
    506   DWORD Flags,
    507   DHCP_OPTION_ID OptionId,
    508   WCHAR *ClassName,
    509   WCHAR *VendorName,
    510   LDHCP_OPTION_SCOPE_INFO6 ScopeInfo,
    511   LDHCP_OPTION_DATA OptionValue
    512 );
    513 
    514 #endif /*(_WIN32_WINNT >= 0x0600)*/
    515 
    516 #ifdef __cplusplus
    517 }
    518 #endif
    519 #endif
    520