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