DhcpCSdk.h 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. //================================================================================
  2. // Copyright (C) 1997-1999 Microsoft Corporation
  3. // Description: these are the exported dhcp client api function definitions
  4. //================================================================================
  5. #ifndef _DHCPCSDK_
  6. #define _DHCPCSDK_
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10. #ifndef DHCP_OPTIONS_DEFINED
  11. #define DHCP_OPTIONS_DEFINED
  12. #if _MSC_VER > 1000
  13. #pragma once
  14. #endif
  15. //
  16. // DHCP Standard Options.
  17. //
  18. #define OPTION_PAD 0
  19. #define OPTION_SUBNET_MASK 1
  20. #define OPTION_TIME_OFFSET 2
  21. #define OPTION_ROUTER_ADDRESS 3
  22. #define OPTION_TIME_SERVERS 4
  23. #define OPTION_IEN116_NAME_SERVERS 5
  24. #define OPTION_DOMAIN_NAME_SERVERS 6
  25. #define OPTION_LOG_SERVERS 7
  26. #define OPTION_COOKIE_SERVERS 8
  27. #define OPTION_LPR_SERVERS 9
  28. #define OPTION_IMPRESS_SERVERS 10
  29. #define OPTION_RLP_SERVERS 11
  30. #define OPTION_HOST_NAME 12
  31. #define OPTION_BOOT_FILE_SIZE 13
  32. #define OPTION_MERIT_DUMP_FILE 14
  33. #define OPTION_DOMAIN_NAME 15
  34. #define OPTION_SWAP_SERVER 16
  35. #define OPTION_ROOT_DISK 17
  36. #define OPTION_EXTENSIONS_PATH 18
  37. //
  38. // IP layer parameters - per host
  39. //
  40. #define OPTION_BE_A_ROUTER 19
  41. #define OPTION_NON_LOCAL_SOURCE_ROUTING 20
  42. #define OPTION_POLICY_FILTER_FOR_NLSR 21
  43. #define OPTION_MAX_REASSEMBLY_SIZE 22
  44. #define OPTION_DEFAULT_TTL 23
  45. #define OPTION_PMTU_AGING_TIMEOUT 24
  46. #define OPTION_PMTU_PLATEAU_TABLE 25
  47. //
  48. // Link layer parameters - per interface.
  49. //
  50. #define OPTION_MTU 26
  51. #define OPTION_ALL_SUBNETS_MTU 27
  52. #define OPTION_BROADCAST_ADDRESS 28
  53. #define OPTION_PERFORM_MASK_DISCOVERY 29
  54. #define OPTION_BE_A_MASK_SUPPLIER 30
  55. #define OPTION_PERFORM_ROUTER_DISCOVERY 31
  56. #define OPTION_ROUTER_SOLICITATION_ADDR 32
  57. #define OPTION_STATIC_ROUTES 33
  58. #define OPTION_TRAILERS 34
  59. #define OPTION_ARP_CACHE_TIMEOUT 35
  60. #define OPTION_ETHERNET_ENCAPSULATION 36
  61. //
  62. // TCP Paramters - per host
  63. //
  64. #define OPTION_TTL 37
  65. #define OPTION_KEEP_ALIVE_INTERVAL 38
  66. #define OPTION_KEEP_ALIVE_DATA_SIZE 39
  67. //
  68. // Application Layer Parameters
  69. //
  70. #define OPTION_NETWORK_INFO_SERVICE_DOM 40
  71. #define OPTION_NETWORK_INFO_SERVERS 41
  72. #define OPTION_NETWORK_TIME_SERVERS 42
  73. //
  74. // Vender specific information option
  75. //
  76. #define OPTION_VENDOR_SPEC_INFO 43
  77. //
  78. // NetBIOS over TCP/IP Name server option
  79. //
  80. #define OPTION_NETBIOS_NAME_SERVER 44
  81. #define OPTION_NETBIOS_DATAGRAM_SERVER 45
  82. #define OPTION_NETBIOS_NODE_TYPE 46
  83. #define OPTION_NETBIOS_SCOPE_OPTION 47
  84. //
  85. // X Window System Options.
  86. //
  87. #define OPTION_XWINDOW_FONT_SERVER 48
  88. #define OPTION_XWINDOW_DISPLAY_MANAGER 49
  89. //
  90. // Other extensions
  91. //
  92. #define OPTION_REQUESTED_ADDRESS 50
  93. #define OPTION_LEASE_TIME 51
  94. #define OPTION_OK_TO_OVERLAY 52
  95. #define OPTION_MESSAGE_TYPE 53
  96. #define OPTION_SERVER_IDENTIFIER 54
  97. #define OPTION_PARAMETER_REQUEST_LIST 55
  98. #define OPTION_MESSAGE 56
  99. #define OPTION_MESSAGE_LENGTH 57
  100. #define OPTION_RENEWAL_TIME 58 // T1
  101. #define OPTION_REBIND_TIME 59 // T2
  102. #define OPTION_CLIENT_CLASS_INFO 60
  103. #define OPTION_CLIENT_ID 61
  104. #define OPTION_TFTP_SERVER_NAME 66
  105. #define OPTION_BOOTFILE_NAME 67
  106. #define OPTION_END 255
  107. #endif DHCP_OPTIONS_DEFINED
  108. #ifndef DHCPAPI_PARAMS_DEFINED
  109. #define DHCPAPI_PARAMS_DEFINED
  110. typedef struct _DHCPAPI_PARAMS { // use this structure to request params
  111. ULONG Flags; // for future use
  112. ULONG OptionId; // what option is this?
  113. BOOL IsVendor; // is this vendor specific?
  114. #ifdef __midl
  115. [size_is(nBytesData)] LPBYTE Data; // the actual data
  116. #else
  117. LPBYTE Data; // the actual data
  118. #endif
  119. DWORD nBytesData; // how many bytes of data are there in Data?
  120. } DHCPAPI_PARAMS, *PDHCPAPI_PARAMS, *LPDHCPAPI_PARAMS;
  121. #endif DHCPAPI_PARAMS_DEFINED
  122. typedef struct _DHCPAPI_PARAMS
  123. DHCPCAPI_PARAMS, *PDHCPCAPI_PARAMS, *LPDHCPCAPI_PARAMS;
  124. typedef struct _DHCPCAPI_PARAMS_ARARAY { // array of params..
  125. ULONG nParams; // size of array
  126. #ifdef __midl
  127. [size_is(nParams)] LPDHCPCAPI_PARAMS Params; // actual array
  128. #else
  129. LPDHCPCAPI_PARAMS Params; // actual array
  130. #endif
  131. } DHCPCAPI_PARAMS_ARRAY, *PDHCPCAPI_PARAMS_ARRAY, *LPDHCPCAPI_PARAMS_ARRAY;
  132. typedef struct _DHCPCAPI_CLASSID { // defines a client class id.
  133. ULONG Flags; // must be zero currently.
  134. #ifdef __midl
  135. [size_is(nBytesData)] LPBYTE Data;
  136. #else
  137. LPBYTE Data; // classid binary data.
  138. #endif
  139. ULONG nBytesData; // how many bytes of data are there?
  140. } DHCPCAPI_CLASSID, *PDHCPCAPI_CLASSID, *LPDHCPCAPI_CLASSID;
  141. #define DHCPCAPI_REQUEST_PERSISTENT 0x01 // request this options "permanently"
  142. #define DHCPCAPI_REQUEST_SYNCHRONOUS 0x02 // request and block on it
  143. #define DHCPCAPI_REQUEST_ASYNCHRONOUS 0x04 // request and return, set event on completion
  144. #define DHCPCAPI_REQUEST_CANCEL 0x08 // cancel request
  145. #define DHCPCAPI_REQUEST_MASK 0x0F // allowed flags..
  146. DWORD
  147. APIENTRY
  148. DhcpCApiInitialize(
  149. OUT LPDWORD Version
  150. );
  151. VOID
  152. APIENTRY
  153. DhcpCApiCleanup(
  154. VOID
  155. );
  156. DWORD // win32 status
  157. APIENTRY
  158. DhcpRequestParams( // request parameters of client
  159. IN DWORD Flags, // must be DHCPCAPI_REQUEST_SYNCHRONOUS
  160. IN LPVOID Reserved, // this parameter is reserved
  161. IN LPWSTR AdapterName, // adapter name to request for
  162. IN LPDHCPCAPI_CLASSID ClassId, // reserved must be NULL
  163. IN DHCPCAPI_PARAMS_ARRAY SendParams, // parameters to send.
  164. IN OUT DHCPCAPI_PARAMS_ARRAY RecdParams, // parameters that are to be requested..
  165. IN LPBYTE Buffer, // a buffer to hold data for RecdParams
  166. IN OUT LPDWORD pSize, // i/p: size of above in BYTES, o/p required bytes..
  167. IN LPWSTR RequestIdStr // needed for persistent requests
  168. ); // returns ERROR_MORE_DATA if o/p buffer is of insufficient size, and fills in reqd size in # of bytes
  169. DWORD // win32 status
  170. APIENTRY
  171. DhcpUndoRequestParams( // undo the effect of a persistent request -- currently undo from registry
  172. IN DWORD Flags, // must be zero, reserved
  173. IN LPVOID Reserved, // this parameter is reserved
  174. IN LPWSTR AdapterName, // the name of the adpater to delete for
  175. IN LPWSTR RequestIdStr // needed for persistent requests..
  176. );
  177. #define DHCPCAPI_REGISTER_HANDLE_EVENT 0x01 // handle returned is to an event
  178. DWORD // win32 status
  179. APIENTRY
  180. DhcpRegisterParamChange( // notify if a parameter has changed
  181. IN DWORD Flags, // must be zero, reserved
  182. IN LPVOID Reserved, // this parameter is reserved
  183. IN LPWSTR AdapterName, // adapter of interest
  184. IN LPDHCPCAPI_CLASSID ClassId, // reserved must be NULL
  185. IN DHCPCAPI_PARAMS_ARRAY Params, // parameters of interest
  186. IN OUT LPVOID Handle // handle to event that will be SetEvent'ed in case of param change
  187. );
  188. #define DHCPCAPI_DEREGISTER_HANDLE_EVENT 0x01 // de-register handle that is an event
  189. DWORD
  190. APIENTRY
  191. DhcpDeRegisterParamChange( // undo the registration
  192. IN DWORD Flags, // MUST BE ZERO --> No flags yet.
  193. IN LPVOID Reserved, // MUST BE NULL --> Reserved
  194. IN LPVOID Event // handle to event returned by DhcpRegisterParamChange.
  195. );
  196. DWORD
  197. APIENTRY
  198. DhcpRemoveDNSRegistrations(
  199. VOID
  200. );
  201. #ifdef __cplusplus
  202. }
  203. #endif
  204. //================================================================================
  205. // end of file
  206. //================================================================================
  207. #endif _DHCPCSDK_