Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

516 lines
17 KiB

  1. /*++
  2. Copyright (c) 1994 Microsoft Corporation
  3. Module Name:
  4. local.h
  5. Abstract:
  6. This module contains various declarations for implementation
  7. specific "stuff".
  8. Author:
  9. Manny Weiser (mannyw) 21-Oct-1992
  10. Environment:
  11. User Mode - Win32
  12. Revision History:
  13. Madan Appiah (madana) 21-Oct-1993
  14. --*/
  15. #ifndef _LOCAL_
  16. #define _LOCAL_
  17. //
  18. // dhcp.c will #include this file with GLOBAL_DATA_ALLOCATE defined.
  19. // That will cause each of these variables to be allocated.
  20. //
  21. #ifdef GLOBAL_DATA_ALLOCATE
  22. #define GLOBAL
  23. #else
  24. #define GLOBAL extern
  25. #endif
  26. #define DAY_LONG_SLEEP 24*60*60 // in secs.
  27. #define INVALID_INTERFACE_CONTEXT 0xFFFF
  28. #define DHCP_NEW_IPADDRESS_EVENT_NAME L"DHCPNEWIPADDRESS"
  29. //
  30. // Registry keys and values we're interested in.
  31. //
  32. #define DHCP_SERVICES_KEY L"System\\CurrentControlSet\\Services"
  33. #define DHCP_ADAPTERS_KEY L"System\\CurrentControlSet\\Services\\TCPIP\\Linkage"
  34. #define DHCP_ADAPTERS_VALUE L"Bind"
  35. #define DHCP_ADAPTERS_VALUE_TYPE REG_MULTI_SZ
  36. #define DHCP_ADAPTERS_DEVICE_STRING L"\\Device\\"
  37. #define DHCP_TCPIP_DEVICE_STRING L"\\Device\\TCPIP_"
  38. #if defined(_PNP_POWER_)
  39. #define DHCP_NETBT_DEVICE_STRING L"NetBT_TCPIP_"
  40. #else
  41. #define DHCP_NETBT_DEVICE_STRING L"NetBT_"
  42. #endif _PNP_POWER_
  43. #define DHCP_CLIENT_ENABLE_DYNDNS_VALUE L"EnableDynDNS"
  44. #define DHCP_CLIENT_ENABLE_DYNDNS_VALUE_TYPE REG_DWORD
  45. #define DHCP_CLIENT_PARAMETER_KEY L"System\\CurrentControlSet\\Services\\Dhcp\\Parameters"
  46. #define DHCP_CLIENT_CONFIGURATIONS_KEY L"System\\CurrentControlSet\\Services\\Dhcp\\Configurations"
  47. #if DBG
  48. #define DHCP_DEBUG_FLAG_VALUE L"DebugFlag"
  49. #define DHCP_DEBUG_FLAG_VALUE_TYPE REG_DWORD
  50. #define DHCP_DEBUG_FILE_VALUE L"DebugFile"
  51. #define DHCP_DEBUG_FILE_VALUE_TYPE REG_SZ
  52. #define DHCP_SERVER_PORT_VALUE L"ServerPort"
  53. #define DHCP_CLIENT_PORT_VALUE L"ClientPort"
  54. #endif
  55. #define DHCP_CLIENT_OPTION_KEY L"System\\CurrentControlSet\\Services\\Dhcp\\Parameters\\Options"
  56. #define DHCP_CLIENT_GLOBAL_CLASSES_KEY L"System\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Classes"
  57. #define DHCP_CLIENT_CLASS_VALUE L"DhcpMachineClass"
  58. #define DHCP_ADAPTER_PARAMETERS_KEY L"\\TCPIP\\Parameters\\Interfaces"
  59. #define DHCP_ADAPTER_PARAMETERS_KEY_OLD L"System\\CurrentControlSet\\Services\\?\\Parameters\\TCPIP"
  60. #define DHCP_DEFAULT_GATEWAY_PARAMETER L"DefaultGateway"
  61. #define DHCP_DEFAULT_GATEWAY_METRIC_PARAMETER L"DefaultGatewayMetric"
  62. #define DHCP_INTERFACE_METRIC_PARAMETER L"InterfaceMetric"
  63. #define DHCP_DONT_ADD_DEFAULT_GATEWAY_FLAG L"DontAddDefaultGateway"
  64. #define DHCP_DONT_PING_GATEWAY_FLAG L"DontPingGateway"
  65. #define DHCP_USE_MHASYNCDNS_FLAG L"UseMHAsyncDns"
  66. #define DHCP_USE_INFORM_FLAG L"UseInform"
  67. #ifdef BOOTPERF
  68. #define DHCP_QUICK_BOOT_FLAG L"EnableQuickBoot"
  69. #endif BOOTPERF
  70. #define DHCP_INFORM_SEPARATION_INTERVAL L"DhcpInformInterval"
  71. #define DHCP_TCPIP_PARAMETERS_KEY DHCP_SERVICES_KEY L"\\TCPIP\\Parameters"
  72. #define DHCP_TCPIP_ADAPTER_PARAMETERS_KEY NULL
  73. #define DHCP_NAME_SERVER_VALUE L"NameServer"
  74. #define DHCP_IPADDRESS_VALUE L"IPAddress"
  75. #define DHCP_HOSTNAME_VALUE L"Hostname"
  76. #define DHCP_DOMAINNAME_VALUE L"Domain"
  77. #define DHCP_STATIC_DOMAIN_VALUE_A "Domain"
  78. #define DHCP_STATIC_IP_ADDRESS_STRING L"IPAddress"
  79. #define DHCP_STATIC_IP_ADDRESS_STRING_TYPE REG_MULTI_SZ
  80. #define DHCP_STATIC_SUBNET_MASK_STRING L"SubnetMask"
  81. #define DHCP_STATIC_SUBNET_MASK_STRING_TYPE REG_MULTI_SZ
  82. #ifdef __DHCP_CLIENT_OPTIONS_API_ENABLED__
  83. #define DHCP_CLIENT_OPTION_SIZE L"OptionSize"
  84. #define DHCP_CLIENT_OPTION_SIZE_TYPE REG_DWORD
  85. #define DHCP_CLIENT_OPTION_VALUE L"OptionValue"
  86. #define DHCP_CLIENT_OPTION_VALUE_TYPE REG_BINARY
  87. #endif
  88. #define REGISTRY_CONNECT L'\\'
  89. #define REGISTRY_CONNECT_STRING L"\\"
  90. #define DHCP_CLIENT_OPTION_REG_LOCATION L"RegLocation"
  91. #define DHCP_CLIENT_OPTION_REG_LOCATION_TYPE REG_SZ
  92. #define DHCP_CLIENT_OPTION_REG_KEY_TYPE L"KeyType"
  93. #define DHCP_CLIENT_OPTION_REG_KEY_TYPE_TYPE REG_DWORD
  94. #define DHCP_CLASS_LOCATION_VALUE L"DhcpClientClassLocation"
  95. #define DHCP_CLASS_LOCATION_TYPE REG_MULTI_SZ
  96. #define DEFAULT_USER_CLASS_LOCATION L"Tcpip\\Parameters\\Interfaces\\?\\DhcpClassIdBin"
  97. #define DEFAULT_USER_CLASS_LOC_FULL DHCP_SERVICES_KEY REGISTRY_CONNECT_STRING DEFAULT_USER_CLASS_LOCATION
  98. #define DEFAULT_USER_CLASS_UI_LOCATION L"Tcpip\\Parameters\\Interfaces\\?\\DhcpClassId"
  99. #define DEFAULT_USER_CLASS_UI_LOC_FULL DHCP_SERVICES_KEY REGISTRY_CONNECT_STRING DEFAULT_USER_CLASS_UI_LOCATION
  100. // ******** Don;t chagne regloc for below.. it also affects DHCP_REGISTER_OPTION_LOC below
  101. #define DEFAULT_REGISTER_OPT_LOC L"Tcpip\\Parameters\\Interfaces\\?\\DhcpRequestOptions"
  102. #define DHCP_OPTION_LIST_VALUE L"DhcpOptionLocationList"
  103. #define DHCP_OPTION_LIST_TYPE REG_MULTI_SZ
  104. #define NETBIOSLESS_OPT L"DhcpNetbiosOptions\0"
  105. #define DEFAULT_DHCP_KEYS_LIST_VALUE (L"1\0" L"15\0" L"3\0" L"44\0" L"46\0" L"47\0" L"6\0" NETBIOSLESS_OPT)
  106. #define DHCP_OPTION_OPTIONID_VALUE L"OptionId"
  107. #define DHCP_OPTION_OPTIONID_TYPE REG_DWORD
  108. #define DHCP_OPTION_ISVENDOR_VALUE L"VendorType"
  109. #define DHCP_OPTION_ISVENDOR_TYPE REG_DWORD
  110. #define DHCP_OPTION_SAVE_TYPE_VALUE L"KeyType"
  111. #define DHCP_OPTION_SAVE_TYPE_TYPE REG_DWORD
  112. #define DHCP_OPTION_CLASSID_VALUE L"ClassId"
  113. #define DHCP_OPTION_CLASSID_TYPE REG_BINARY
  114. #define DHCP_OPTION_SAVE_LOCATION_VALUE L"RegLocation"
  115. #define DHCP_OPTION_SAVE_LOCATION_TYPE REG_MULTI_SZ
  116. #define DHCP_OPTION_SEND_LOCATION_VALUE L"RegSendLocation"
  117. #define DHCP_OPTION_SEND_LOCATION_TYPE REG_MULTI_SZ
  118. #define DHCP_ENABLE_STRING L"EnableDhcp"
  119. #define DHCP_ENABLE_STRING_TYPE REG_DWORD
  120. #define DHCP_IP_ADDRESS_STRING L"DhcpIPAddress"
  121. #define DHCP_IP_ADDRESS_STRING_TYPE REG_SZ
  122. #define DHCP_SUBNET_MASK_STRING L"DhcpSubnetMask"
  123. #define DHCP_SUBNET_MASK_STRING_TYPE REG_SZ
  124. #define DHCP_SERVER L"DhcpServer"
  125. #define DHCP_SERVER_TYPE REG_SZ
  126. #define DHCP_LEASE L"Lease"
  127. #define DHCP_LEASE_TYPE REG_DWORD
  128. #define DHCP_LEASE_OBTAINED_TIME L"LeaseObtainedTime"
  129. #define DHCP_LEASE_OBTAINED_TIME_TYPE REG_DWORD
  130. #define DHCP_LEASE_T1_TIME L"T1"
  131. #define DHCP_LEASE_T1_TIME_TYPE REG_DWORD
  132. #define DHCP_LEASE_T2_TIME L"T2"
  133. #define DHCP_LEASE_T2_TIME_TYPE REG_DWORD
  134. #define DHCP_LEASE_TERMINATED_TIME L"LeaseTerminatesTime"
  135. #define DHCP_LEASE_TERMINATED_TIME_TYPE REG_DWORD
  136. #define DHCP_IP_INTERFACE_CONTEXT L"IpInterfaceContext"
  137. #define DHCP_IP_INTERFACE_CONTEXT_TYPE REG_DWORD
  138. #define DHCP_IP_INTERFACE_CONTEXT_MAX L"IpInterfaceContextMax"
  139. #define DHCP_IP_INTERFACE_CONTEXT_MAX_TYPE REG_DWORD
  140. #if defined(_PNP_POWER_)
  141. #define DHCP_NTE_CONTEXT_LIST L"NTEContextList"
  142. #define DHCP_NTE_CONTEXT_LIST_TYPE REG_MULTI_SZ
  143. #endif _PNP_POWER_
  144. #define DHCP_CLIENT_IDENTIFIER_FORMAT L"DhcpClientIdentifierType"
  145. #define DHCP_CLIENT_IDENTIFIER_FORMAT_TYPE REG_DWORD
  146. #define DHCP_CLIENT_IDENTIFIER_VALUE L"DhcpClientIdentifier"
  147. #define DHCP_DYNDNS_UPDATE_REQUIRED L"DNSUpdateRequired"
  148. #define DHCP_DYNDNS_UPDATE_REQUIRED_TYPE REG_DWORD
  149. #define DHCP_IPAUTOCONFIGURATION_ENABLED L"IPAutoconfigurationEnabled"
  150. #define DHCP_IPAUTOCONFIGURATION_ENABLED_TYPE REG_DWORD
  151. #define DHCP_IPAUTOCONFIGURATION_ADDRESS L"IPAutoconfigurationAddress"
  152. #define DHCP_IPAUTOCONFIGURATION_ADDRESS_TYPE REG_SZ
  153. #define DHCP_IPAUTOCONFIGURATION_SUBNET L"IPAutoconfigurationSubnet"
  154. #define DHCP_IPAUTOCONFIGURATION_SUBNET_TYPE REG_SZ
  155. #define DHCP_IPAUTOCONFIGURATION_MASK L"IPAutoconfigurationMask"
  156. #define DHCP_IPAUTOCONFIGURATION_MASK_TYPE REG_SZ
  157. #define DHCP_IPAUTOCONFIGURATION_SEED L"IPAutoconfigurationSeed"
  158. #define DHCP_IPAUTOCONFIGURATION_SEED_TYPE REG_DWORD
  159. #define DHCP_IPAUTOCONFIGURATION_CFG L"ActiveConfigurations"
  160. #define DHCP_IPAUTOCONFIGURATION_CFG_TYPE REG_MULTI_SZ
  161. #define DHCP_IPAUTOCONFIGURATION_CFGOPT L"Options"
  162. #define DHCP_IPAUTOCONFIGURATION_CFGOPT_TYPE REG_BINARY
  163. #define DHCP_OPTION_EXPIRATION_DATE L"ExpirationTime"
  164. #define DHCP_OPTION_EXPIRATION_DATE_TYPE REG_BINARY
  165. #define DHCP_MACHINE_TYPE L"MachineType"
  166. #define DHCP_MACHINE_TYPE_TYPE REG_DWORD
  167. #define DHCP_AUTONET_RETRIES_VALUE L"AutonetRetries"
  168. #define DHCP_AUTONET_RETRIES_VALUE_TYPE REG_DWORD
  169. #define DHCP_ADDRESS_TYPE_VALUE L"AddressType"
  170. #define DHCP_ADDRESS_TYPE_TYPE REG_DWORD
  171. #if DBG
  172. #define DHCP_LEASE_OBTAINED_CTIME L"LeaseObtainedCTime"
  173. #define DHCP_LEASE_OBTAINED_CTIME_TYPE REG_SZ
  174. #define DHCP_LEASE_T1_CTIME L"T1CTime"
  175. #define DHCP_LEASE_T1_CTIME_TYPE REG_SZ
  176. #define DHCP_LEASE_T2_CTIME L"T2CTime"
  177. #define DHCP_LEASE_T2_CTIME_TYPE REG_SZ
  178. #define DHCP_LEASE_TERMINATED_CTIME L"LeaseTerminatesCTime"
  179. #define DHCP_LEASE_TERMINATED_CTIME_TYPE REG_SZ
  180. #define DHCP_OPTION_EXPIRATION_CDATE L"ExpirationCTime"
  181. #define DHCP_OPTION_EXPIRATION_CDATE_TYPE REG_SZ
  182. #endif
  183. // options api specials
  184. #define DHCPAPI_VALID_VALUE L"Valid"
  185. #define DHCPAPI_VALID_VALUE_TYPE REG_DWORD
  186. #define DHCPAPI_AVAIL_VALUE L"AvailableOptions"
  187. #define DHCPAPI_AVAIL_VALUE_TYPE REG_BINARY
  188. #define DHCPAPI_REQUESTED_VALUE L"RequestedOptions"
  189. #define DHCPAPI_REQUESTED_VALUE_TYPE REG_BINARY
  190. #define DHCPAPI_RAW_OPTIONS_VALUE L"RawOptionsValue"
  191. #define DHCPAPI_RAW_OPTIONS_VALUE_TYPE REG_BINARY
  192. #define DHCPAPI_RAW_LENGTH_VALUE L"RawOptionsLength"
  193. #define DHCPAPI_RAW_LENGTH_VALUE_TYPE REG_DWORD
  194. #define DHCPAPI_GATEWAY_VALUE L"LastGateWay"
  195. #define DHCPAPI_GATEWAY_VALUE_TYPE REG_DWORD
  196. // this tag is used to locate dns updates requests on the renewal list
  197. #define DHCP_DNS_UPDATE_CONTEXT_TAG L"DNSUpdateRetry"
  198. // This semaphore cannot have backward slashes in it.
  199. #define DHCP_REQUEST_OPTIONS_API_SEMAPHORE L"DhcpRequestOptionsAPI"
  200. // the client vendor name (DhcpGlobalClientClassInfo) value is this..
  201. #define DHCP_DEFAULT_CLIENT_CLASS_INFO "MSFT 5.0"
  202. // the location for storing options for DhcpRegisterOptions API.
  203. // ****** Don't change the foll value -- it also changes DEFAULT_REGISTER_OPT_LOC above
  204. //
  205. #define DHCP_REGISTER_OPTIONS_LOC DHCP_TCPIP_PARAMETERS_KEY L"\\Interfaces\\?\\DhcpRequestOptions"
  206. //
  207. // the value name of the flag that controls whether the popups are displayed or not on NT..
  208. // (By default they are NOT displayed -- this value is under System\CCS\Services\Dhcp)
  209. //
  210. #define DHCP_DISPLAY_POPUPS_FLAG L"PopupFlag"
  211. #ifdef BOOTPERF
  212. //
  213. // The values related to quick boot... All of these start with "Temp"
  214. //
  215. //
  216. #define DHCP_TEMP_IPADDRESS_VALUE L"TempIpAddress"
  217. #define DHCP_TEMP_MASK_VALUE L"TempMask"
  218. #define DHCP_TEMP_LEASE_EXP_TIME_VALUE L"TempLeaseExpirationTime"
  219. #endif BOOTPERF
  220. //
  221. // size of the largest adapter name in unicode.
  222. //
  223. #define ADAPTER_STRING_SIZE 512
  224. //
  225. // windows version info.
  226. //
  227. #define HOST_COMMENT_LENGTH 128
  228. #define WINDOWS_32S "Win32s on Windows 3.1"
  229. #define WINDOWS_NT "Windows NT"
  230. #define DHCP_NAMESERVER_BACKUP L"Backup"
  231. #define DHCP_NAMESERVER_BACKUP_LIST L"BackupList"
  232. //
  233. // Adapter Key - replacement character.
  234. //
  235. #define OPTION_REPLACE_CHAR L'\?'
  236. //
  237. // registry access key.
  238. //
  239. #define DHCP_CLIENT_KEY_ACCESS (KEY_QUERY_VALUE | \
  240. KEY_SET_VALUE | \
  241. KEY_CREATE_SUB_KEY | \
  242. KEY_ENUMERATE_SUB_KEYS)
  243. //
  244. // Dhcp registry class.
  245. //
  246. #define DHCP_CLASS L"DhcpClientClass"
  247. #define DHCP_CLASS_SIZE sizeof(DHCP_CLASS)
  248. //
  249. // Option ID key length.
  250. //
  251. #define DHCP_OPTION_KEY_LEN 32
  252. #define DHCP_RELEASE_ON_SHUTDOWN_VALUE L"ReleaseOnShutdown"
  253. #define DEFAULT_RELEASE_ON_SHUTDOWN RELEASE_ON_SHUTDOWN_OBEY_DHCP_SERVER
  254. //
  255. // command values for SetDefaultGateway function.
  256. #define DEFAULT_GATEWAY_ADD 0
  257. #define DEFAULT_GATEWAY_DELETE 1
  258. //
  259. // A block NT specific context information, appended the the DHCP work
  260. // context block.
  261. //
  262. typedef struct _LOCAL_CONTEXT_INFO {
  263. DWORD IpInterfaceContext;
  264. DWORD IpInterfaceInstance; // needed for BringUpInterface
  265. DWORD IfIndex;
  266. LPWSTR AdapterName;
  267. LPWSTR NetBTDeviceName;
  268. LPWSTR RegistryKey;
  269. SOCKET Socket;
  270. BOOL DefaultGatewaysSet;
  271. #ifdef BOOTPERF
  272. ULONG OldIpAddress;
  273. ULONG OldIpMask;
  274. BOOL fInterfaceDown;
  275. #endif BOOTPERF
  276. } LOCAL_CONTEXT_INFO, *PLOCAL_CONTEXT_INFO;
  277. //
  278. // Other service specific options info struct.
  279. //
  280. typedef struct _SERVICE_SPECIFIC_DHCP_OPTION {
  281. DHCP_OPTION_ID OptionId;
  282. LPWSTR RegKey; // alloted memory.
  283. LPWSTR ValueName; // embedded in the RegKey memory.
  284. DWORD ValueType;
  285. DWORD OptionLength;
  286. #ifdef __DHCP_CLIENT_OPTIONS_API_ENABLED__
  287. time_t ExpirationDate; // this value is used to decide when to stop
  288. // requested unneeded options.
  289. #endif
  290. LPBYTE RawOptionValue;
  291. } SERVICE_SPECIFIC_DHCP_OPTION, *LPSERVICE_SPECIFIC_DHCP_OPTION;
  292. //
  293. // Key query Info.
  294. //
  295. typedef struct _DHCP_KEY_QUERY_INFO {
  296. WCHAR Class[DHCP_CLASS_SIZE];
  297. DWORD ClassSize;
  298. DWORD NumSubKeys;
  299. DWORD MaxSubKeyLen;
  300. DWORD MaxClassLen;
  301. DWORD NumValues;
  302. DWORD MaxValueNameLen;
  303. DWORD MaxValueLen;
  304. DWORD SecurityDescriptorLen;
  305. FILETIME LastWriteTime;
  306. } DHCP_KEY_QUERY_INFO, *LPDHCP_KEY_QUERY_INFO;
  307. //
  308. // Global variables.
  309. //
  310. //
  311. // client specific option list.
  312. //
  313. GLOBAL HINSTANCE DhcpGlobalMessageFileHandle;
  314. GLOBAL DWORD DhcpGlobalOptionCount;
  315. GLOBAL LPSERVICE_SPECIFIC_DHCP_OPTION DhcpGlobalOptionInfo;
  316. GLOBAL LPBYTE DhcpGlobalOptionList;
  317. //
  318. // Service variables
  319. //
  320. GLOBAL SERVICE_STATUS DhcpGlobalServiceStatus;
  321. GLOBAL SERVICE_STATUS_HANDLE DhcpGlobalServiceStatusHandle;
  322. //
  323. // To signal to stop the service.
  324. //
  325. GLOBAL HANDLE DhcpGlobalTerminateEvent;
  326. //
  327. // Client APIs over name pipe variables.
  328. //
  329. GLOBAL HANDLE DhcpGlobalClientApiPipe;
  330. GLOBAL HANDLE DhcpGlobalClientApiPipeEvent;
  331. GLOBAL OVERLAPPED DhcpGlobalClientApiOverLapBuffer;
  332. //
  333. // Message Popup Thread handle.
  334. //
  335. GLOBAL HANDLE DhcpGlobalMsgPopupThreadHandle;
  336. GLOBAL BOOL DhcpGlobalDisplayPopup;
  337. GLOBAL CRITICAL_SECTION DhcpGlobalPopupCritSect;
  338. #define LOCK_POPUP() EnterCriticalSection(&DhcpGlobalPopupCritSect)
  339. #define UNLOCK_POPUP() LeaveCriticalSection(&DhcpGlobalPopupCritSect)
  340. //
  341. // winsock variables.
  342. //
  343. GLOBAL WSADATA DhcpGlobalWsaData;
  344. GLOBAL BOOL DhcpGlobalWinSockInitialized;
  345. GLOBAL BOOL DhcpGlobalGatewaysSet;
  346. //
  347. // a named event that notifies the ip address changes to
  348. // external apps.
  349. //
  350. GLOBAL HANDLE DhcpGlobalNewIpAddressNotifyEvent;
  351. GLOBAL UINT DhcpGlobalIPEventSeqNo;
  352. GLOBAL ULONG DhcpGlobalIsShuttingDown;
  353. DWORD
  354. DhcpQueryHWInfo(
  355. DWORD IpInterfaceContext,
  356. DWORD *pIpInterfaceInstance,
  357. LPBYTE HardwareAddressType,
  358. LPBYTE *HardwareAddress,
  359. LPDWORD HardwareAddressLength
  360. );
  361. //
  362. // Added for winse 25452
  363. // This is to allow reading of the DNS client policy
  364. // in the registry so that DHCP can figure out if
  365. // per adapter name registration is enabled for
  366. // dynamic dns.
  367. //
  368. #define DNS_POLICY_KEY L"Software\\Policies\\Microsoft\\Windows NT\\Dns Client"
  369. #define REGISTER_ADAPTER_NAME L"RegisterAdapterName"
  370. #define ADAPTER_DOMAIN_NAME L"AdapterDomainName"
  371. #endif // _LOCAL_