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
516 lines
17 KiB
/*++
|
|
|
|
Copyright (c) 1994 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
local.h
|
|
|
|
Abstract:
|
|
|
|
This module contains various declarations for implementation
|
|
specific "stuff".
|
|
|
|
Author:
|
|
|
|
Manny Weiser (mannyw) 21-Oct-1992
|
|
|
|
Environment:
|
|
|
|
User Mode - Win32
|
|
|
|
Revision History:
|
|
|
|
Madan Appiah (madana) 21-Oct-1993
|
|
|
|
--*/
|
|
|
|
#ifndef _LOCAL_
|
|
#define _LOCAL_
|
|
|
|
//
|
|
// dhcp.c will #include this file with GLOBAL_DATA_ALLOCATE defined.
|
|
// That will cause each of these variables to be allocated.
|
|
//
|
|
|
|
#ifdef GLOBAL_DATA_ALLOCATE
|
|
#define GLOBAL
|
|
#else
|
|
#define GLOBAL extern
|
|
#endif
|
|
|
|
#define DAY_LONG_SLEEP 24*60*60 // in secs.
|
|
#define INVALID_INTERFACE_CONTEXT 0xFFFF
|
|
|
|
#define DHCP_NEW_IPADDRESS_EVENT_NAME L"DHCPNEWIPADDRESS"
|
|
|
|
//
|
|
// Registry keys and values we're interested in.
|
|
//
|
|
|
|
#define DHCP_SERVICES_KEY L"System\\CurrentControlSet\\Services"
|
|
|
|
#define DHCP_ADAPTERS_KEY L"System\\CurrentControlSet\\Services\\TCPIP\\Linkage"
|
|
#define DHCP_ADAPTERS_VALUE L"Bind"
|
|
#define DHCP_ADAPTERS_VALUE_TYPE REG_MULTI_SZ
|
|
#define DHCP_ADAPTERS_DEVICE_STRING L"\\Device\\"
|
|
#define DHCP_TCPIP_DEVICE_STRING L"\\Device\\TCPIP_"
|
|
#if defined(_PNP_POWER_)
|
|
#define DHCP_NETBT_DEVICE_STRING L"NetBT_TCPIP_"
|
|
#else
|
|
#define DHCP_NETBT_DEVICE_STRING L"NetBT_"
|
|
#endif _PNP_POWER_
|
|
|
|
#define DHCP_CLIENT_ENABLE_DYNDNS_VALUE L"EnableDynDNS"
|
|
#define DHCP_CLIENT_ENABLE_DYNDNS_VALUE_TYPE REG_DWORD
|
|
|
|
#define DHCP_CLIENT_PARAMETER_KEY L"System\\CurrentControlSet\\Services\\Dhcp\\Parameters"
|
|
#define DHCP_CLIENT_CONFIGURATIONS_KEY L"System\\CurrentControlSet\\Services\\Dhcp\\Configurations"
|
|
|
|
#if DBG
|
|
#define DHCP_DEBUG_FLAG_VALUE L"DebugFlag"
|
|
#define DHCP_DEBUG_FLAG_VALUE_TYPE REG_DWORD
|
|
|
|
#define DHCP_DEBUG_FILE_VALUE L"DebugFile"
|
|
#define DHCP_DEBUG_FILE_VALUE_TYPE REG_SZ
|
|
|
|
#define DHCP_SERVER_PORT_VALUE L"ServerPort"
|
|
#define DHCP_CLIENT_PORT_VALUE L"ClientPort"
|
|
|
|
#endif
|
|
|
|
#define DHCP_CLIENT_OPTION_KEY L"System\\CurrentControlSet\\Services\\Dhcp\\Parameters\\Options"
|
|
|
|
#define DHCP_CLIENT_GLOBAL_CLASSES_KEY L"System\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Classes"
|
|
#define DHCP_CLIENT_CLASS_VALUE L"DhcpMachineClass"
|
|
|
|
#define DHCP_ADAPTER_PARAMETERS_KEY L"\\TCPIP\\Parameters\\Interfaces"
|
|
#define DHCP_ADAPTER_PARAMETERS_KEY_OLD L"System\\CurrentControlSet\\Services\\?\\Parameters\\TCPIP"
|
|
|
|
#define DHCP_DEFAULT_GATEWAY_PARAMETER L"DefaultGateway"
|
|
#define DHCP_DEFAULT_GATEWAY_METRIC_PARAMETER L"DefaultGatewayMetric"
|
|
#define DHCP_INTERFACE_METRIC_PARAMETER L"InterfaceMetric"
|
|
#define DHCP_DONT_ADD_DEFAULT_GATEWAY_FLAG L"DontAddDefaultGateway"
|
|
#define DHCP_DONT_PING_GATEWAY_FLAG L"DontPingGateway"
|
|
#define DHCP_USE_MHASYNCDNS_FLAG L"UseMHAsyncDns"
|
|
#define DHCP_USE_INFORM_FLAG L"UseInform"
|
|
#ifdef BOOTPERF
|
|
#define DHCP_QUICK_BOOT_FLAG L"EnableQuickBoot"
|
|
#endif BOOTPERF
|
|
#define DHCP_INFORM_SEPARATION_INTERVAL L"DhcpInformInterval"
|
|
|
|
#define DHCP_TCPIP_PARAMETERS_KEY DHCP_SERVICES_KEY L"\\TCPIP\\Parameters"
|
|
#define DHCP_TCPIP_ADAPTER_PARAMETERS_KEY NULL
|
|
#define DHCP_NAME_SERVER_VALUE L"NameServer"
|
|
#define DHCP_IPADDRESS_VALUE L"IPAddress"
|
|
#define DHCP_HOSTNAME_VALUE L"Hostname"
|
|
#define DHCP_DOMAINNAME_VALUE L"Domain"
|
|
#define DHCP_STATIC_DOMAIN_VALUE_A "Domain"
|
|
|
|
#define DHCP_STATIC_IP_ADDRESS_STRING L"IPAddress"
|
|
#define DHCP_STATIC_IP_ADDRESS_STRING_TYPE REG_MULTI_SZ
|
|
|
|
#define DHCP_STATIC_SUBNET_MASK_STRING L"SubnetMask"
|
|
#define DHCP_STATIC_SUBNET_MASK_STRING_TYPE REG_MULTI_SZ
|
|
|
|
#ifdef __DHCP_CLIENT_OPTIONS_API_ENABLED__
|
|
|
|
#define DHCP_CLIENT_OPTION_SIZE L"OptionSize"
|
|
#define DHCP_CLIENT_OPTION_SIZE_TYPE REG_DWORD
|
|
#define DHCP_CLIENT_OPTION_VALUE L"OptionValue"
|
|
#define DHCP_CLIENT_OPTION_VALUE_TYPE REG_BINARY
|
|
|
|
#endif
|
|
|
|
#define REGISTRY_CONNECT L'\\'
|
|
#define REGISTRY_CONNECT_STRING L"\\"
|
|
|
|
#define DHCP_CLIENT_OPTION_REG_LOCATION L"RegLocation"
|
|
#define DHCP_CLIENT_OPTION_REG_LOCATION_TYPE REG_SZ
|
|
|
|
#define DHCP_CLIENT_OPTION_REG_KEY_TYPE L"KeyType"
|
|
#define DHCP_CLIENT_OPTION_REG_KEY_TYPE_TYPE REG_DWORD
|
|
|
|
#define DHCP_CLASS_LOCATION_VALUE L"DhcpClientClassLocation"
|
|
#define DHCP_CLASS_LOCATION_TYPE REG_MULTI_SZ
|
|
|
|
#define DEFAULT_USER_CLASS_LOCATION L"Tcpip\\Parameters\\Interfaces\\?\\DhcpClassIdBin"
|
|
#define DEFAULT_USER_CLASS_LOC_FULL DHCP_SERVICES_KEY REGISTRY_CONNECT_STRING DEFAULT_USER_CLASS_LOCATION
|
|
|
|
#define DEFAULT_USER_CLASS_UI_LOCATION L"Tcpip\\Parameters\\Interfaces\\?\\DhcpClassId"
|
|
#define DEFAULT_USER_CLASS_UI_LOC_FULL DHCP_SERVICES_KEY REGISTRY_CONNECT_STRING DEFAULT_USER_CLASS_UI_LOCATION
|
|
|
|
// ******** Don;t chagne regloc for below.. it also affects DHCP_REGISTER_OPTION_LOC below
|
|
#define DEFAULT_REGISTER_OPT_LOC L"Tcpip\\Parameters\\Interfaces\\?\\DhcpRequestOptions"
|
|
|
|
#define DHCP_OPTION_LIST_VALUE L"DhcpOptionLocationList"
|
|
#define DHCP_OPTION_LIST_TYPE REG_MULTI_SZ
|
|
|
|
#define NETBIOSLESS_OPT L"DhcpNetbiosOptions\0"
|
|
#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)
|
|
|
|
#define DHCP_OPTION_OPTIONID_VALUE L"OptionId"
|
|
#define DHCP_OPTION_OPTIONID_TYPE REG_DWORD
|
|
|
|
#define DHCP_OPTION_ISVENDOR_VALUE L"VendorType"
|
|
#define DHCP_OPTION_ISVENDOR_TYPE REG_DWORD
|
|
|
|
#define DHCP_OPTION_SAVE_TYPE_VALUE L"KeyType"
|
|
#define DHCP_OPTION_SAVE_TYPE_TYPE REG_DWORD
|
|
|
|
#define DHCP_OPTION_CLASSID_VALUE L"ClassId"
|
|
#define DHCP_OPTION_CLASSID_TYPE REG_BINARY
|
|
|
|
#define DHCP_OPTION_SAVE_LOCATION_VALUE L"RegLocation"
|
|
#define DHCP_OPTION_SAVE_LOCATION_TYPE REG_MULTI_SZ
|
|
|
|
#define DHCP_OPTION_SEND_LOCATION_VALUE L"RegSendLocation"
|
|
#define DHCP_OPTION_SEND_LOCATION_TYPE REG_MULTI_SZ
|
|
|
|
#define DHCP_ENABLE_STRING L"EnableDhcp"
|
|
#define DHCP_ENABLE_STRING_TYPE REG_DWORD
|
|
|
|
#define DHCP_IP_ADDRESS_STRING L"DhcpIPAddress"
|
|
#define DHCP_IP_ADDRESS_STRING_TYPE REG_SZ
|
|
|
|
#define DHCP_SUBNET_MASK_STRING L"DhcpSubnetMask"
|
|
#define DHCP_SUBNET_MASK_STRING_TYPE REG_SZ
|
|
|
|
#define DHCP_SERVER L"DhcpServer"
|
|
#define DHCP_SERVER_TYPE REG_SZ
|
|
|
|
#define DHCP_LEASE L"Lease"
|
|
#define DHCP_LEASE_TYPE REG_DWORD
|
|
|
|
#define DHCP_LEASE_OBTAINED_TIME L"LeaseObtainedTime"
|
|
#define DHCP_LEASE_OBTAINED_TIME_TYPE REG_DWORD
|
|
|
|
#define DHCP_LEASE_T1_TIME L"T1"
|
|
#define DHCP_LEASE_T1_TIME_TYPE REG_DWORD
|
|
|
|
#define DHCP_LEASE_T2_TIME L"T2"
|
|
#define DHCP_LEASE_T2_TIME_TYPE REG_DWORD
|
|
|
|
#define DHCP_LEASE_TERMINATED_TIME L"LeaseTerminatesTime"
|
|
#define DHCP_LEASE_TERMINATED_TIME_TYPE REG_DWORD
|
|
|
|
#define DHCP_IP_INTERFACE_CONTEXT L"IpInterfaceContext"
|
|
#define DHCP_IP_INTERFACE_CONTEXT_TYPE REG_DWORD
|
|
|
|
#define DHCP_IP_INTERFACE_CONTEXT_MAX L"IpInterfaceContextMax"
|
|
#define DHCP_IP_INTERFACE_CONTEXT_MAX_TYPE REG_DWORD
|
|
|
|
#if defined(_PNP_POWER_)
|
|
#define DHCP_NTE_CONTEXT_LIST L"NTEContextList"
|
|
#define DHCP_NTE_CONTEXT_LIST_TYPE REG_MULTI_SZ
|
|
#endif _PNP_POWER_
|
|
|
|
#define DHCP_CLIENT_IDENTIFIER_FORMAT L"DhcpClientIdentifierType"
|
|
#define DHCP_CLIENT_IDENTIFIER_FORMAT_TYPE REG_DWORD
|
|
|
|
#define DHCP_CLIENT_IDENTIFIER_VALUE L"DhcpClientIdentifier"
|
|
|
|
#define DHCP_DYNDNS_UPDATE_REQUIRED L"DNSUpdateRequired"
|
|
#define DHCP_DYNDNS_UPDATE_REQUIRED_TYPE REG_DWORD
|
|
|
|
#define DHCP_IPAUTOCONFIGURATION_ENABLED L"IPAutoconfigurationEnabled"
|
|
#define DHCP_IPAUTOCONFIGURATION_ENABLED_TYPE REG_DWORD
|
|
|
|
#define DHCP_IPAUTOCONFIGURATION_ADDRESS L"IPAutoconfigurationAddress"
|
|
#define DHCP_IPAUTOCONFIGURATION_ADDRESS_TYPE REG_SZ
|
|
|
|
#define DHCP_IPAUTOCONFIGURATION_SUBNET L"IPAutoconfigurationSubnet"
|
|
#define DHCP_IPAUTOCONFIGURATION_SUBNET_TYPE REG_SZ
|
|
|
|
#define DHCP_IPAUTOCONFIGURATION_MASK L"IPAutoconfigurationMask"
|
|
#define DHCP_IPAUTOCONFIGURATION_MASK_TYPE REG_SZ
|
|
|
|
#define DHCP_IPAUTOCONFIGURATION_SEED L"IPAutoconfigurationSeed"
|
|
#define DHCP_IPAUTOCONFIGURATION_SEED_TYPE REG_DWORD
|
|
|
|
#define DHCP_IPAUTOCONFIGURATION_CFG L"ActiveConfigurations"
|
|
#define DHCP_IPAUTOCONFIGURATION_CFG_TYPE REG_MULTI_SZ
|
|
|
|
#define DHCP_IPAUTOCONFIGURATION_CFGOPT L"Options"
|
|
#define DHCP_IPAUTOCONFIGURATION_CFGOPT_TYPE REG_BINARY
|
|
|
|
#define DHCP_OPTION_EXPIRATION_DATE L"ExpirationTime"
|
|
#define DHCP_OPTION_EXPIRATION_DATE_TYPE REG_BINARY
|
|
|
|
#define DHCP_MACHINE_TYPE L"MachineType"
|
|
#define DHCP_MACHINE_TYPE_TYPE REG_DWORD
|
|
|
|
#define DHCP_AUTONET_RETRIES_VALUE L"AutonetRetries"
|
|
#define DHCP_AUTONET_RETRIES_VALUE_TYPE REG_DWORD
|
|
|
|
#define DHCP_ADDRESS_TYPE_VALUE L"AddressType"
|
|
#define DHCP_ADDRESS_TYPE_TYPE REG_DWORD
|
|
|
|
#if DBG
|
|
|
|
#define DHCP_LEASE_OBTAINED_CTIME L"LeaseObtainedCTime"
|
|
#define DHCP_LEASE_OBTAINED_CTIME_TYPE REG_SZ
|
|
|
|
#define DHCP_LEASE_T1_CTIME L"T1CTime"
|
|
#define DHCP_LEASE_T1_CTIME_TYPE REG_SZ
|
|
|
|
#define DHCP_LEASE_T2_CTIME L"T2CTime"
|
|
#define DHCP_LEASE_T2_CTIME_TYPE REG_SZ
|
|
|
|
#define DHCP_LEASE_TERMINATED_CTIME L"LeaseTerminatesCTime"
|
|
#define DHCP_LEASE_TERMINATED_CTIME_TYPE REG_SZ
|
|
|
|
#define DHCP_OPTION_EXPIRATION_CDATE L"ExpirationCTime"
|
|
#define DHCP_OPTION_EXPIRATION_CDATE_TYPE REG_SZ
|
|
|
|
|
|
#endif
|
|
|
|
// options api specials
|
|
#define DHCPAPI_VALID_VALUE L"Valid"
|
|
#define DHCPAPI_VALID_VALUE_TYPE REG_DWORD
|
|
|
|
#define DHCPAPI_AVAIL_VALUE L"AvailableOptions"
|
|
#define DHCPAPI_AVAIL_VALUE_TYPE REG_BINARY
|
|
|
|
#define DHCPAPI_REQUESTED_VALUE L"RequestedOptions"
|
|
#define DHCPAPI_REQUESTED_VALUE_TYPE REG_BINARY
|
|
|
|
#define DHCPAPI_RAW_OPTIONS_VALUE L"RawOptionsValue"
|
|
#define DHCPAPI_RAW_OPTIONS_VALUE_TYPE REG_BINARY
|
|
|
|
#define DHCPAPI_RAW_LENGTH_VALUE L"RawOptionsLength"
|
|
#define DHCPAPI_RAW_LENGTH_VALUE_TYPE REG_DWORD
|
|
|
|
#define DHCPAPI_GATEWAY_VALUE L"LastGateWay"
|
|
#define DHCPAPI_GATEWAY_VALUE_TYPE REG_DWORD
|
|
|
|
// this tag is used to locate dns updates requests on the renewal list
|
|
#define DHCP_DNS_UPDATE_CONTEXT_TAG L"DNSUpdateRetry"
|
|
|
|
// This semaphore cannot have backward slashes in it.
|
|
#define DHCP_REQUEST_OPTIONS_API_SEMAPHORE L"DhcpRequestOptionsAPI"
|
|
|
|
// the client vendor name (DhcpGlobalClientClassInfo) value is this..
|
|
#define DHCP_DEFAULT_CLIENT_CLASS_INFO "MSFT 5.0"
|
|
|
|
// the location for storing options for DhcpRegisterOptions API.
|
|
// ****** Don't change the foll value -- it also changes DEFAULT_REGISTER_OPT_LOC above
|
|
//
|
|
#define DHCP_REGISTER_OPTIONS_LOC DHCP_TCPIP_PARAMETERS_KEY L"\\Interfaces\\?\\DhcpRequestOptions"
|
|
|
|
//
|
|
// the value name of the flag that controls whether the popups are displayed or not on NT..
|
|
// (By default they are NOT displayed -- this value is under System\CCS\Services\Dhcp)
|
|
//
|
|
#define DHCP_DISPLAY_POPUPS_FLAG L"PopupFlag"
|
|
|
|
#ifdef BOOTPERF
|
|
//
|
|
// The values related to quick boot... All of these start with "Temp"
|
|
//
|
|
//
|
|
#define DHCP_TEMP_IPADDRESS_VALUE L"TempIpAddress"
|
|
#define DHCP_TEMP_MASK_VALUE L"TempMask"
|
|
#define DHCP_TEMP_LEASE_EXP_TIME_VALUE L"TempLeaseExpirationTime"
|
|
#endif BOOTPERF
|
|
|
|
//
|
|
// size of the largest adapter name in unicode.
|
|
//
|
|
#define ADAPTER_STRING_SIZE 512
|
|
|
|
//
|
|
// windows version info.
|
|
//
|
|
|
|
#define HOST_COMMENT_LENGTH 128
|
|
#define WINDOWS_32S "Win32s on Windows 3.1"
|
|
#define WINDOWS_NT "Windows NT"
|
|
|
|
#define DHCP_NAMESERVER_BACKUP L"Backup"
|
|
#define DHCP_NAMESERVER_BACKUP_LIST L"BackupList"
|
|
|
|
//
|
|
// Adapter Key - replacement character.
|
|
//
|
|
#define OPTION_REPLACE_CHAR L'\?'
|
|
|
|
//
|
|
// registry access key.
|
|
//
|
|
|
|
#define DHCP_CLIENT_KEY_ACCESS (KEY_QUERY_VALUE | \
|
|
KEY_SET_VALUE | \
|
|
KEY_CREATE_SUB_KEY | \
|
|
KEY_ENUMERATE_SUB_KEYS)
|
|
|
|
//
|
|
// Dhcp registry class.
|
|
//
|
|
|
|
#define DHCP_CLASS L"DhcpClientClass"
|
|
#define DHCP_CLASS_SIZE sizeof(DHCP_CLASS)
|
|
|
|
|
|
//
|
|
// Option ID key length.
|
|
//
|
|
|
|
#define DHCP_OPTION_KEY_LEN 32
|
|
|
|
#define DHCP_RELEASE_ON_SHUTDOWN_VALUE L"ReleaseOnShutdown"
|
|
|
|
#define DEFAULT_RELEASE_ON_SHUTDOWN RELEASE_ON_SHUTDOWN_OBEY_DHCP_SERVER
|
|
|
|
//
|
|
// command values for SetDefaultGateway function.
|
|
|
|
#define DEFAULT_GATEWAY_ADD 0
|
|
#define DEFAULT_GATEWAY_DELETE 1
|
|
|
|
|
|
//
|
|
// A block NT specific context information, appended the the DHCP work
|
|
// context block.
|
|
//
|
|
|
|
typedef struct _LOCAL_CONTEXT_INFO {
|
|
DWORD IpInterfaceContext;
|
|
DWORD IpInterfaceInstance; // needed for BringUpInterface
|
|
DWORD IfIndex;
|
|
LPWSTR AdapterName;
|
|
LPWSTR NetBTDeviceName;
|
|
LPWSTR RegistryKey;
|
|
SOCKET Socket;
|
|
BOOL DefaultGatewaysSet;
|
|
#ifdef BOOTPERF
|
|
ULONG OldIpAddress;
|
|
ULONG OldIpMask;
|
|
BOOL fInterfaceDown;
|
|
#endif BOOTPERF
|
|
} LOCAL_CONTEXT_INFO, *PLOCAL_CONTEXT_INFO;
|
|
|
|
//
|
|
// Other service specific options info struct.
|
|
//
|
|
|
|
typedef struct _SERVICE_SPECIFIC_DHCP_OPTION {
|
|
DHCP_OPTION_ID OptionId;
|
|
LPWSTR RegKey; // alloted memory.
|
|
LPWSTR ValueName; // embedded in the RegKey memory.
|
|
DWORD ValueType;
|
|
DWORD OptionLength;
|
|
#ifdef __DHCP_CLIENT_OPTIONS_API_ENABLED__
|
|
time_t ExpirationDate; // this value is used to decide when to stop
|
|
// requested unneeded options.
|
|
#endif
|
|
LPBYTE RawOptionValue;
|
|
} SERVICE_SPECIFIC_DHCP_OPTION, *LPSERVICE_SPECIFIC_DHCP_OPTION;
|
|
|
|
|
|
//
|
|
// Key query Info.
|
|
//
|
|
|
|
typedef struct _DHCP_KEY_QUERY_INFO {
|
|
WCHAR Class[DHCP_CLASS_SIZE];
|
|
DWORD ClassSize;
|
|
DWORD NumSubKeys;
|
|
DWORD MaxSubKeyLen;
|
|
DWORD MaxClassLen;
|
|
DWORD NumValues;
|
|
DWORD MaxValueNameLen;
|
|
DWORD MaxValueLen;
|
|
DWORD SecurityDescriptorLen;
|
|
FILETIME LastWriteTime;
|
|
} DHCP_KEY_QUERY_INFO, *LPDHCP_KEY_QUERY_INFO;
|
|
|
|
//
|
|
// Global variables.
|
|
//
|
|
|
|
//
|
|
// client specific option list.
|
|
//
|
|
|
|
|
|
GLOBAL HINSTANCE DhcpGlobalMessageFileHandle;
|
|
|
|
GLOBAL DWORD DhcpGlobalOptionCount;
|
|
GLOBAL LPSERVICE_SPECIFIC_DHCP_OPTION DhcpGlobalOptionInfo;
|
|
GLOBAL LPBYTE DhcpGlobalOptionList;
|
|
|
|
//
|
|
// Service variables
|
|
//
|
|
|
|
GLOBAL SERVICE_STATUS DhcpGlobalServiceStatus;
|
|
GLOBAL SERVICE_STATUS_HANDLE DhcpGlobalServiceStatusHandle;
|
|
|
|
//
|
|
// To signal to stop the service.
|
|
//
|
|
|
|
GLOBAL HANDLE DhcpGlobalTerminateEvent;
|
|
|
|
//
|
|
// Client APIs over name pipe variables.
|
|
//
|
|
|
|
GLOBAL HANDLE DhcpGlobalClientApiPipe;
|
|
GLOBAL HANDLE DhcpGlobalClientApiPipeEvent;
|
|
GLOBAL OVERLAPPED DhcpGlobalClientApiOverLapBuffer;
|
|
|
|
//
|
|
// Message Popup Thread handle.
|
|
//
|
|
|
|
GLOBAL HANDLE DhcpGlobalMsgPopupThreadHandle;
|
|
GLOBAL BOOL DhcpGlobalDisplayPopup;
|
|
GLOBAL CRITICAL_SECTION DhcpGlobalPopupCritSect;
|
|
|
|
#define LOCK_POPUP() EnterCriticalSection(&DhcpGlobalPopupCritSect)
|
|
#define UNLOCK_POPUP() LeaveCriticalSection(&DhcpGlobalPopupCritSect)
|
|
|
|
|
|
//
|
|
// winsock variables.
|
|
//
|
|
|
|
GLOBAL WSADATA DhcpGlobalWsaData;
|
|
GLOBAL BOOL DhcpGlobalWinSockInitialized;
|
|
|
|
GLOBAL BOOL DhcpGlobalGatewaysSet;
|
|
|
|
//
|
|
// a named event that notifies the ip address changes to
|
|
// external apps.
|
|
//
|
|
|
|
GLOBAL HANDLE DhcpGlobalNewIpAddressNotifyEvent;
|
|
GLOBAL UINT DhcpGlobalIPEventSeqNo;
|
|
|
|
GLOBAL ULONG DhcpGlobalIsShuttingDown;
|
|
|
|
DWORD
|
|
DhcpQueryHWInfo(
|
|
DWORD IpInterfaceContext,
|
|
DWORD *pIpInterfaceInstance,
|
|
LPBYTE HardwareAddressType,
|
|
LPBYTE *HardwareAddress,
|
|
LPDWORD HardwareAddressLength
|
|
);
|
|
|
|
//
|
|
// Added for winse 25452
|
|
// This is to allow reading of the DNS client policy
|
|
// in the registry so that DHCP can figure out if
|
|
// per adapter name registration is enabled for
|
|
// dynamic dns.
|
|
//
|
|
#define DNS_POLICY_KEY L"Software\\Policies\\Microsoft\\Windows NT\\Dns Client"
|
|
#define REGISTER_ADAPTER_NAME L"RegisterAdapterName"
|
|
#define ADAPTER_DOMAIN_NAME L"AdapterDomainName"
|
|
|
|
#endif // _LOCAL_
|