/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corporation, 1997 - 1999 **/ /**********************************************************************/ /* global.h Global defines for the DHCP snapin FILE HISTORY: */ // message that gets posted to statistics windows to update their stats #define WM_NEW_STATS_AVAILABLE WM_USER + 100 // percentage of addresses in use to generate a warning for a scope #define SCOPE_WARNING_LEVEL 90 // Defines for help from the help menu and F1 help for scope pane items #define DHCPSNAP_HELP_BASE 0xA0000000 #define DHCPSNAP_HELP_SNAPIN DHCPSNAP_HELP_BASE + 1 #define DHCPSNAP_HELP_ROOT DHCPSNAP_HELP_BASE + 2 #define DHCPSNAP_HELP_SERVER DHCPSNAP_HELP_BASE + 3 #define DHCPSNAP_HELP_SCOPE DHCPSNAP_HELP_BASE + 4 #define DHCPSNAP_HELP_SUPERSCOPE DHCPSNAP_HELP_BASE + 5 #define DHCPSNAP_HELP_BOOTP_TABLE DHCPSNAP_HELP_BASE + 6 #define DHCPSNAP_HELP_GLOBAL_OPTIONS DHCPSNAP_HELP_BASE + 7 #define DHCPSNAP_HELP_ADDRESS_POOL DHCPSNAP_HELP_BASE + 8 #define DHCPSNAP_HELP_ACTIVE_LEASES DHCPSNAP_HELP_BASE + 9 #define DHCPSNAP_HELP_RESERVATIONS DHCPSNAP_HELP_BASE + 10 #define DHCPSNAP_HELP_SCOPE_OPTIONS DHCPSNAP_HELP_BASE + 11 #define DHCPSNAP_HELP_RESERVATION_CLIENT DHCPSNAP_HELP_BASE + 12 #define DHCPSNAP_HELP_ACTIVE_LEASE DHCPSNAP_HELP_BASE + 13 #define DHCPSNAP_HELP_ALLOCATION_RANGE DHCPSNAP_HELP_BASE + 14 #define DHCPSNAP_HELP_EXCLUSION_RANGE DHCPSNAP_HELP_BASE + 15 #define DHCPSNAP_HELP_BOOTP_ENTRY DHCPSNAP_HELP_BASE + 16 #define DHCPSNAP_HELP_OPTION_ITEM DHCPSNAP_HELP_BASE + 17 #define DHCPSNAP_HELP_CLASSID_HOLDER DHCPSNAP_HELP_BASE + 18 #define DHCPSNAP_HELP_CLASSID DHCPSNAP_HELP_BASE + 19 #define DHCPSNAP_HELP_MSCOPE DHCPSNAP_HELP_BASE + 20 #define DHCPSNAP_HELP_MCAST_LEASE DHCPSNAP_HELP_BASE + 21 // wait cursor stuff around functions. If you need a wait cursor for // and entire fucntion, just use CWaitCursor. To wrap a wait cursor // around an rpc call, use these macros. #define BEGIN_WAIT_CURSOR { CWaitCursor waitCursor; #define RESTORE_WAIT_CURSOR waitCursor.Restore(); #define END_WAIT_CURSOR } #define ARRAYLEN(x) (sizeof(x) / sizeof((x)[0])) // some defines for options that we get/set explicitly #define MADCAP_OPTION_LEASE_TIME 1 #define OPTION_LEASE_DURATION 51 #define OPTION_DNS_REGISTATION 81 // HRESULT Mapping #define WIN32_FROM_HRESULT(hr) (0x0000FFFF & (hr)) // Dynamic DNS defines #define DHCP_DYN_DNS_DEFAULT DNS_FLAG_ENABLED | DNS_FLAG_CLEANUP_EXPIRED; // notification and struct for toolbars #define DHCP_MSG_CONTROLBAR_NOTIFY 100 typedef struct _DHCP_TOOLBAR_NOTIFY { MMC_COOKIE cookie; LPTOOLBAR pToolbar; LPCONTROLBAR pControlbar; MMC_NOTIFY_TYPE event; LONG_PTR id; BOOL bSelect; } DHCPTOOLBARNOTIFY, * LPDHCPTOOLBARNOTIFY; // // Registry constants-- key and value names // #define DHCP_REG_USER_KEY_NAME _T("Software\\Microsoft\\DHCP Admin Tool") #define DHCP_REG_VALUE_HOSTS _T("KnownHosts") // multicast address defines #define MCAST_ADDRESS_MIN 0xE0000000 #define MCAST_ADDRESS_MAX 0xEFFFFFFF #define MCAST_SCOPED_RANGE_MIN 0xEF000000 #define MCAST_SCOPED_RANGE_MIX 0xEFFFFFFF // macro to get the handler for a node. This is a DHCP snapin specific // implementation #define GETHANDLER(classname, node) (reinterpret_cast(node->GetData(TFS_DATA_USER))) // used for notifing views to update // must not conflict with the RESULT_PANE notifications in tfsnode.h #define DHCPSNAP_UPDATE_OPTIONS 0x10000000 #define DHCPSNAP_UPDATE_TOOLBAR 0x20000000 // Version Suff #define DHCPSNAP_MAJOR_VERSION 0x00000001 #define DHCPSNAP_MINOR_VERSION 0x00000000 extern LARGE_INTEGER gliDhcpsnapVersion; #define DHCPSNAP_FILE_VERSION 0x00000002 // defines for maximum lease time entries #define HOURS_MAX 23 #define MINUTES_MAX 59 // constants for time conversion #define MILLISEC_PER_SECOND 1000 #define MILLISEC_PER_MINUTE (60 * MILLISEC_PER_SECOND) #define MILLISEC_PER_HOUR (60 * MILLISEC_PER_MINUTE) #define DHCPSNAP_REFRESH_INTERVAL_DEFAULT (10 * MILLISEC_PER_MINUTE) // 10 minutes in milliseconds // macros for memory exception handling #define CATCH_MEM_EXCEPTION \ TRY #define END_MEM_EXCEPTION(err) \ CATCH_ALL(e) { \ err = ERROR_NOT_ENOUGH_MEMORY ; \ } END_CATCH_ALL // some global defines we need #define STRING_LENGTH_MAX 256 #define EDIT_ARRAY_MAX 2048 #define EDIT_STRING_MAX STRING_LENGTH_MAX #define EDIT_ID_MAX 3 #define IP_ADDDRESS_LENGTH_MAX 16 #define DHCP_INFINIT_LEASE 0xffffffff // Inifinite lease LONG value // DHCP Server version defines #define DHCP_NT4_VERSION 0x0000000400000000 #define DHCP_SP2_VERSION 0x0000000400000001 #define DHCP_NT5_VERSION 0x0000000500000000 #define DHCP_NT51_VERSION 0x0000000500000006 // Note - These are offsets into my toolbar image list typedef enum _TOOLBAR_IMAGE_INDICIES { TOOLBAR_IDX_ADD_SERVER, TOOLBAR_IDX_REFRESH, TOOLBAR_IDX_CREATE_SCOPE, TOOLBAR_IDX_CREATE_SUPERSCOPE, TOOLBAR_IDX_DEACTIVATE, TOOLBAR_IDX_ACTIVATE, TOOLBAR_IDX_ADD_BOOTP, TOOLBAR_IDX_ADD_RESERVATION, TOOLBAR_IDX_ADD_EXCLUSION, TOOLBAR_IDX_OPTION_GLOBAL, TOOLBAR_IDX_OPTION_SCOPE, TOOLBAR_IDX_OPTION_RESERVATION, TOOLBAR_IDX_MAX } TOOLBAR_IMAGE_INDICIES, * LPTOOLBAR_IMAGE_INDICIES; typedef enum _ICON_IMAGE_INDICIES { ICON_IDX_ACTIVE_LEASES_FOLDER_OPEN, ICON_IDX_ACTIVE_LEASES_LEAF, ICON_IDX_ACTIVE_LEASES_FOLDER_CLOSED, ICON_IDX_ACTIVE_LEASES_FOLDER_OPEN_BUSY, ICON_IDX_ACTIVE_LEASES_LEAF_BUSY, ICON_IDX_ACTIVE_LEASES_FOLDER_CLOSED_BUSY, ICON_IDX_ACTIVE_LEASES_FOLDER_OPEN_LOST_CONNECTION, ICON_IDX_ACTIVE_LEASES_LEAF_LOST_CONNECTION, ICON_IDX_ACTIVE_LEASES_FOLDER_CLOSED_LOST_CONNECTION, ICON_IDX_ADDR_POOL_FOLDER_OPEN, ICON_IDX_ADDR_POOL_LEAF, //10 ICON_IDX_ADDR_POOL_FOLDER_CLOSED, ICON_IDX_ADDR_POOL_FOLDER_OPEN_BUSY, ICON_IDX_ADDR_POOL_LEAF_BUSY, ICON_IDX_ADDR_POOL_FOLDER_CLOSED_BUSY, ICON_IDX_ADDR_POOL_FOLDER_OPEN_LOST_CONNECTION, ICON_IDX_ADDR_POOL_LEAF_LOST_CONNECTION, ICON_IDX_ADDR_POOL_FOLDER_CLOSED_LOST_CONNECTION, ICON_IDX_ALLOCATION_RANGE, ICON_IDX_BOOTP_ENTRY, ICON_IDX_BOOTP_TABLE_CLOSED, //20 ICON_IDX_BOOTP_TABLE_OPEN, ICON_IDX_BOOTP_TABLE_CLOSED_BUSY, ICON_IDX_BOOTP_TABLE_OPEN_BUSY, ICON_IDX_BOOTP_TABLE_CLOSED_LOST_CONNECTION, ICON_IDX_BOOTP_TABLE_OPEN_LOST_CONNECTION, ICON_IDX_CLIENT, ICON_IDX_CLIENT_DNS_REGISTERING, ICON_IDX_CLIENT_EXPIRED, ICON_IDX_CLIENT_RAS, ICON_IDX_CLIENT_OPTION_FOLDER_OPEN, //30 ICON_IDX_CLIENT_OPTION_LEAF, ICON_IDX_CLIENT_OPTION_FOLDER_CLOSED, ICON_IDX_CLIENT_OPTION_FOLDER_OPEN_BUSY, ICON_IDX_CLIENT_OPTION_LEAF_BUSY, ICON_IDX_CLIENT_OPTION_FOLDER_CLOSED_BUSY, ICON_IDX_CLIENT_OPTION_FOLDER_OPEN_LOST_CONNECTION, ICON_IDX_CLIENT_OPTION_LEAF_LOST_CONNECTION, ICON_IDX_CLIENT_OPTION_FOLDER_CLOSED_LOST_CONNECTION, ICON_IDX_EXCLUSION_RANGE, ICON_IDX_FOLDER_CLOSED, //40 ICON_IDX_FOLDER_OPEN, ICON_IDX_RES_CLIENT, ICON_IDX_RES_CLIENT_BUSY, ICON_IDX_RES_CLIENT_LOST_CONNECTION, ICON_IDX_RESERVATIONS_FOLDER_OPEN, ICON_IDX_RESERVATIONS_FOLDER_CLOSED, ICON_IDX_RESERVATIONS_FOLDER_OPEN_BUSY, ICON_IDX_RESERVATIONS_FOLDER_CLOSED_BUSY, ICON_IDX_RESERVATIONS_FOLDER_OPEN_LOST_CONNECTION, ICON_IDX_RESERVATIONS_FOLDER_CLOSED_LOST_CONNECTION, //50 ICON_IDX_SCOPE_OPTION_FOLDER_OPEN, ICON_IDX_SCOPE_OPTION_LEAF, ICON_IDX_SCOPE_OPTION_FOLDER_CLOSED, ICON_IDX_SCOPE_OPTION_FOLDER_OPEN_BUSY, ICON_IDX_SCOPE_OPTION_LEAF_BUSY, ICON_IDX_SCOPE_OPTION_FOLDER_CLOSED_BUSY, ICON_IDX_SCOPE_OPTION_FOLDER_OPEN_LOST_CONNECTION, ICON_IDX_SCOPE_OPTION_FOLDER_CLOSED_LOST_CONNECTION, ICON_IDX_SCOPE_OPTION_LEAF_LOST_CONNECTION, ICON_IDX_SERVER, //60 ICON_IDX_SERVER_ALERT, ICON_IDX_SERVER_BUSY, ICON_IDX_SERVER_CONNECTED, ICON_IDX_SERVER_GROUP, ICON_IDX_SERVER_ROGUE, ICON_IDX_SERVER_LOST_CONNECTION, ICON_IDX_SERVER_NO_ACCESS, ICON_IDX_SERVER_WARNING, ICON_IDX_SERVER_OPTION_FOLDER_OPEN, ICON_IDX_SERVER_OPTION_LEAF, //70 ICON_IDX_SERVER_OPTION_FOLDER_CLOSED, ICON_IDX_SERVER_OPTION_FOLDER_OPEN_BUSY, ICON_IDX_SERVER_OPTION_LEAF_BUSY, ICON_IDX_SERVER_OPTION_FOLDER_CLOSED_BUSY, ICON_IDX_SERVER_OPTION_FOLDER_OPEN_LOST_CONNECTION, ICON_IDX_SERVER_OPTION_LEAF_LOST_CONNECTION, ICON_IDX_SERVER_OPTION_FOLDER_CLOSED_LOST_CONNECTION, ICON_IDX_SCOPE_FOLDER_OPEN, ICON_IDX_SCOPE_FOLDER_OPEN_BUSY, ICON_IDX_SCOPE_FOLDER_CLOSED_BUSY, //80 ICON_IDX_SCOPE_FOLDER_OPEN_WARNING, ICON_IDX_SCOPE_FOLDER_CLOSED_WARNING, ICON_IDX_SCOPE_FOLDER_OPEN_LOST_CONNECTION, ICON_IDX_SCOPE_FOLDER_CLOSED_LOST_CONNECTION, ICON_IDX_SCOPE_FOLDER_OPEN_ALERT, ICON_IDX_SCOPE_INACTIVE_FOLDER_OPEN, ICON_IDX_SCOPE_INACTIVE_FOLDER_CLOSED, ICON_IDX_SCOPE_INACTIVE_FOLDER_OPEN_LOST_CONNECTION, ICON_IDX_SCOPE_INACTIVE_FOLDER_CLOSED_LOST_CONNECTION, ICON_IDX_SCOPE_FOLDER_CLOSED, //90 ICON_IDX_SCOPE_FOLDER_CLOSED_ALERT, ICON_IDX_APPLICATION, ICON_IDX_MAX } ICON_IMAGE_INDICIES, * LPICON_IMAGE_INDICIES; // Constants used in for column information const int MAX_COLUMNS = 7; const int NUM_CONSOLE_VERBS = 8; const int NUM_SCOPE_ITEMS = 14; // Sample folder types enum NODETYPES { // scope pane items DHCPSNAP_ROOT, DHCPSNAP_SERVER, DHCPSNAP_BOOTP_TABLE, DHCPSNAP_SUPERSCOPE, DHCPSNAP_SCOPE, DHCPSNAP_MSCOPE, DHCPSNAP_ADDRESS_POOL, DHCPSNAP_ACTIVE_LEASES, DHCPSNAP_MSCOPE_LEASES, DHCPSNAP_RESERVATIONS, DHCPSNAP_RESERVATION_CLIENT, DHCPSNAP_SCOPE_OPTIONS, DHCPSNAP_GLOBAL_OPTIONS, DHCPSNAP_CLASSID_HOLDER, // result pane items DHCPSNAP_ACTIVE_LEASE, DHCPSNAP_ALLOCATION_RANGE, DHCPSNAP_EXCLUSION_RANGE, DHCPSNAP_BOOTP_ENTRY, DHCPSNAP_OPTION_ITEM, DHCPSNAP_CLASSID, DHCPSNAP_MCAST_LEASE, DHCPSNAP_NODETYPE_MAX }; // GUIDs are defined in guids.cpp extern const CLSID CLSID_DhcpSnapin; // In-Proc server GUID extern const CLSID CLSID_DhcpSnapinExtension; // In-Proc server GUID extern const CLSID CLSID_DhcpSnapinAbout; // In-Proc server GUID extern const GUID GUID_DhcpRootNodeType; // Root NodeType GUID extern const GUID GUID_DhcpServerNodeType; // Server NodeType GUID extern const GUID GUID_DhcpScopeNodeType; // Scope NodeType GUID extern const GUID GUID_DhcpMScopeNodeType; // MScope NodeType GUID extern const GUID GUID_DhcpBootpNodeType; // Bootp NodeType GUID extern const GUID GUID_DhcpGlobalOptionsNodeType; // GlobalOptions NodeType GUID extern const GUID GUID_DhcpClassIdHolderNodeType; // ClassId Scope NodeType GUID extern const GUID GUID_DhcpSuperscopeNodeType; // Superscope NodeType GUID extern const GUID GUID_DhcpAddressPoolNodeType; // AddressPool NodeType GUID extern const GUID GUID_DhcpActiveLeasesNodeType; // ActiveLeases NodeType GUID extern const GUID GUID_DhcpReservationsNodeType; // Reservations NodeType GUID extern const GUID GUID_DhcpScopeOptionsNodeType; // ScopeOptions NodeType GUID extern const GUID GUID_DhcpReservationClientNodeType; // Reservation Client NodeType GUID extern const GUID GUID_DhcpAllocationNodeType; // Allocation range NodeType GUID extern const GUID GUID_DhcpExclusionNodeType; // Exlusion range NodeType GUID extern const GUID GUID_DhcpBootpEntryNodeType; // BootpEntry NodeType GUID extern const GUID GUID_DhcpActiveLeaseNodeType; // ActiveLease NodeType GUID extern const GUID GUID_DhcpOptionNodeType; // Option NodeType GUID extern const GUID GUID_DhcpClassIdNodeType; // ClassId (result pane) NodeType GUID extern const GUID GUID_DhcpMCastLeaseNodeType; // Multicast lease (result pane) NodeType GUID extern const GUID GUID_DhcpMCastAddressPoolNodeType; // AddressPool NodeType GUID (multicast scope) extern const GUID GUID_DhcpMCastActiveLeasesNodeType; // ActiveLeases NodeType GUID (multicast scope) // arrays used to hold all of the result pane column information extern UINT aColumns[DHCPSNAP_NODETYPE_MAX][MAX_COLUMNS]; extern int aColumnWidths[DHCPSNAP_NODETYPE_MAX][MAX_COLUMNS]; // arrays for toolbar information extern MMCBUTTON g_SnapinButtons[TOOLBAR_IDX_MAX]; extern int g_SnapinButtonStrings[TOOLBAR_IDX_MAX][2]; extern MMC_BUTTON_STATE g_SnapinButtonStates[DHCPSNAP_NODETYPE_MAX][TOOLBAR_IDX_MAX]; // arrays for console verbs extern MMC_CONSOLE_VERB g_ConsoleVerbs[NUM_CONSOLE_VERBS]; extern MMC_BUTTON_STATE g_ConsoleVerbStates[DHCPSNAP_NODETYPE_MAX][NUM_CONSOLE_VERBS]; extern MMC_BUTTON_STATE g_ConsoleVerbStatesMultiSel[DHCPSNAP_NODETYPE_MAX][NUM_CONSOLE_VERBS]; // array for help extern DWORD g_dwMMCHelp[DHCPSNAP_NODETYPE_MAX]; // icon image map extern UINT g_uIconMap[ICON_IDX_MAX + 1][2]; // Clipboard format that has the Type and Cookie extern const wchar_t* SNAPIN_INTERNAL; // CDhcpSnapinApp definition class CDhcpSnapinApp : public CWinApp { public: virtual BOOL InitInstance(); virtual int ExitInstance(); DECLARE_MESSAGE_MAP() public: BOOL m_bWinsockInited; }; extern CDhcpSnapinApp theApp; // help stuff here typedef CMap CDhcpContextHelpMap; extern CDhcpContextHelpMap g_dhcpContextHelpMap; #define DHCPSNAP_NUM_HELP_MAPS 38 extern DWORD * DhcpGetHelpMap(UINT uID);