//======================================================================== // Copyright (C) 1997 Microsoft Corporation // Author: RameshV // Description: This file has been generated. Pl look at the .c file //======================================================================== typedef struct _REG_HANDLE { HKEY Key; HKEY SubKey; LPWSTR SubKeyLocation; } REG_HANDLE, *PREG_HANDLE, *LPREG_HANDLE; #define REG_THIS_SERVER L"Software\\Microsoft\\DHCPServer\\Configuration" #define REG_THIS_SERVER_DS L"Software\\Microsoft\\DHCPServer\\Config_DS" #define REG_THIS_SERVER_DS_VALUE L"Config_DS" #define REG_THIS_SERVER_DS_PARENT L"Software\\Microsoft\\DHCPServer" #define REG_SERVER_GLOBAL_OPTIONS L"GlobalOptionValues" #define REG_SERVER_OPTDEFS L"OptionInfo" #define REG_SERVER_SUBNETS L"Subnets" #define REG_SERVER_SSCOPES L"SuperScope" #define REG_SERVER_CLASSDEFS L"ClassDefs" #define REG_SERVER_MSCOPES L"MulticastScopes" #define REG_SUBNET_SERVERS L"DHCPServers" #define REG_SUBNET_RANGES L"IpRanges" #define REG_SUBNET_RESERVATIONS L"ReservedIps" #define REG_SUBNET_OPTIONS L"SubnetOptions" #define REG_SUBNET_EXCL L"ExcludedIpRanges" #define REG_SUBNET_ADDRESS L"SubnetAddress" #define REG_SUBNET_NAME L"SubnetName" #define REG_SUBNET_COMMENT L"SubnetComment" #define REG_SUBNET_MASK L"SubnetMask" #define REG_SUBNET_STATE L"SubnetState" #define REG_SUBNET_SWITCHED_FLAG L"SwitchedNetworkFlag" #define REG_MSCOPE_NAME L"MScopeName" #define REG_MSCOPE_COMMENT L"MScopeComment" #define REG_MSCOPE_SCOPEID L"MScopeIdValue" #define REG_MSCOPE_STATE L"MScopeState" #define REG_MSCOPE_ADDR_POLICY L"MScopeAddressPolicy" #define REG_MSCOPE_TTL L"MScopeTTL" #define REG_MSCOPE_LANG_TAG L"MScopeLangTag" #define REG_MSCOPE_EXPIRY_TIME L"MScopeExpiryTime" #define REG_SUB_SERVER_NAME L"ServerHostName" #define REG_SUB_SERVER_COMMENT L"ServerComment" #define REG_SUB_SERVER_ADDRESS L"ServerAddress" #define REG_SUB_SERVER_ROLE L"Role" #define REG_RANGE_NAME L"RangeName" #define REG_RANGE_COMMENT L"RangeComment" #define REG_RANGE_START_ADDRESS L"StartAddress" #define REG_RANGE_END_ADDRESS L"EndAddress" #define REG_RANGE_INUSE_CLUSTERS L"InUseClusters" #define REG_RANGE_USED_CLUSTERS L"UsedClusters" #define REG_RANGE_BITS_PREFIX L"Bits " #define REG_RANGE_BITS_PREFIX_WCHAR_COUNT (5) #define REG_RANGE_FLAGS L"RangeFlags" #define REG_RANGE_ALLOC L"RangeBootpAllocated" #define REG_RANGE_MAX_ALLOC L"RangeBootpMaxAllowed" #define REG_OPTION_NAME L"OptionName" #define REG_OPTION_COMMENT L"OptionComment" #define REG_OPTION_TYPE L"OptionType" #define REG_OPTION_VALUE L"OptionValue" #define REG_OPTION_ID L"OptionId" #define REG_OPTION_CLASSNAME L"OptionClassName" #define REG_OPTION_VENDORNAME L"OptionVendorName" #define REG_CLASSDEF_NAME L"ClassName" #define REG_CLASSDEF_COMMENT L"ClassComment" #define REG_CLASSDEF_TYPE L"ClassType" #define REG_CLASSDEF_VALUE L"ClassValue" #define REG_RESERVATION_ADDRESS L"IpAddress" #define REG_RESERVATION_UID L"ClientUID" #define REG_RESERVATION_TYPE L"AllowedClientTypes" #define REG_RESERVATION_NAME L"ReservationName" #define REG_RESERVATION_COMMENT L"ReservationComment" #define REG_FLAGS L"Flags" #define REG_ACCESS KEY_ALL_ACCESS #define REG_DEFAULT_SUBNET_STATE 0 #define REG_DEFAULT_SUBNET_MASK 0xFFFFFFFF #define REG_DEFAULT_SWITCHED_FLAG FALSE #define REG_CLASS L"DhcpClass" #define DHCP_LAST_DOWNLOAD_TIME_VALUE L"LastDownloadTime" #define DHCP_LAST_DOWNLOAD_TIME_TYPE REG_BINARY #define DEF_RANGE_ALLOC 0 #define DEF_RANGE_MAX_ALLOC (~(ULONG)0) //================================================================================ // The basic open/traverse/close functions are here //================================================================================ DWORD DhcpRegSetCurrentServer( IN OUT PREG_HANDLE Hdl ) ; DWORD DhcpRegGetThisServer( IN OUT PREG_HANDLE Hdl ) ; DWORD DhcpRegGetNextHdl( IN PREG_HANDLE Hdl, IN LPWSTR NextLoc, OUT PREG_HANDLE OutHdl ) ; DWORD DhcpRegCloseHdl( IN OUT PREG_HANDLE Hdl ) ; //================================================================================ // MISC utilities for registry manipulation //================================================================================ DWORD DhcpRegFillSubKeys( IN PREG_HANDLE Hdl, IN OUT PARRAY Array // fill in a list of key names ) ; LPVOID // DWORD or LPWSTR or LPBYTE DhcpRegRead( // read differnt values from registry and allocate if not DWORD IN PREG_HANDLE Hdl, IN DWORD Type, // if DWORD dont allocate memory IN LPWSTR ValueName, IN LPVOID RetValue // value to use if nothing found ) ; DWORD DhcpRegReadBinary( // read binary type IN PREG_HANDLE Hdl, IN LPWSTR ValueName, OUT LPBYTE *RetVal, OUT DWORD *RetValSize ) ; LPWSTR DhcpRegCombineClassAndOption( // create string based on class name and option id IN LPWSTR ClassName, IN LPWSTR VendorName, IN DWORD OptionId ) ; LPWSTR ConvertAddressToLPWSTR( IN DWORD Address, IN OUT LPWSTR BufferStr // input buffer to fill with dotted notation ) ; //================================================================================ // the following functions help traversing the registry //================================================================================ DWORD DhcpRegServerGetSubnetHdl( IN PREG_HANDLE Hdl, IN LPWSTR Subnet, OUT PREG_HANDLE Hdl2 ) ; DWORD DhcpRegServerGetSScopeHdl( IN PREG_HANDLE Hdl, IN LPWSTR SScope, OUT PREG_HANDLE Hdl2 ) ; DWORD DhcpRegServerGetOptDefHdl( IN PREG_HANDLE Hdl, IN LPWSTR OptDef, OUT PREG_HANDLE Hdl2 ) ; DWORD DhcpRegServerGetOptHdl( IN PREG_HANDLE Hdl, IN LPWSTR Opt, OUT PREG_HANDLE Hdl2 ) ; DWORD DhcpRegServerGetMScopeHdl( IN PREG_HANDLE Hdl, IN LPWSTR MScope, OUT PREG_HANDLE Hdl2 ) ; DWORD DhcpRegServerGetClassDefHdl( IN PREG_HANDLE Hdl, IN LPWSTR ClassDef, OUT PREG_HANDLE Hdl2 ) ; DWORD DhcpRegSubnetGetOptHdl( IN PREG_HANDLE Hdl, IN LPWSTR Opt, OUT PREG_HANDLE Hdl2 ) ; DWORD DhcpRegSubnetGetRangeHdl( IN PREG_HANDLE Hdl, IN LPWSTR Range, OUT PREG_HANDLE Hdl2 ) ; DWORD DhcpRegSubnetGetReservationHdl( IN PREG_HANDLE Hdl, IN LPWSTR Reservation, OUT PREG_HANDLE Hdl2 ) ; DWORD DhcpRegSubnetGetServerHdl( IN PREG_HANDLE Hdl, IN LPWSTR Server, OUT PREG_HANDLE Hdl2 ) ; DWORD DhcpRegReservationGetOptHdl( IN PREG_HANDLE Hdl, IN LPWSTR OptionName, OUT PREG_HANDLE Hdl2 ) ; //================================================================================ // List retrieval functions.. for servers, subnets, ranges etc. //================================================================================ DWORD DhcpRegServerGetList( IN PREG_HANDLE Hdl, // ptr to server location IN OUT PARRAY OptList, // list of LPWSTR options IN OUT PARRAY OptDefList, // list of LPWSTR optdefs IN OUT PARRAY Subnets, // list of LPWSTR subnets IN OUT PARRAY SScopes, // list of LPWSTR sscopes IN OUT PARRAY ClassDefs, // list of LPWSTR classes IN OUT PARRAY MScopes // list of LPWSTR mscopes ) ; DWORD DhcpRegSubnetGetExclusions( IN PREG_HANDLE Hdl, OUT LPBYTE *Excl, OUT DWORD *ExclSize ) ; DWORD DhcpRegSubnetGetList( IN PREG_HANDLE Hdl, IN OUT PARRAY Servers, IN OUT PARRAY IpRanges, IN OUT PARRAY Reservations, IN OUT PARRAY Options, OUT LPBYTE *Excl, OUT DWORD *ExclSizeInBytes ) ; DWORD DhcpRegSScopeGetList( IN PREG_HANDLE Hdl, IN OUT PARRAY Subnets ) ; DWORD DhcpRegReservationGetList( IN PREG_HANDLE Hdl, IN OUT PARRAY Options ) ; //================================================================================ // the separate stuff are here -- these are not list stuff, but just simple // single valued attributes // some of these actually, dont even go to the registry, but that's fine alright? //================================================================================ DWORD DhcpRegServerGetAttributes( IN PREG_HANDLE Hdl, OUT LPWSTR *Name, OUT LPWSTR *Comment, OUT DWORD *Flags // more attributes will come here soon? ) ; DWORD DhcpRegSubnetGetAttributes( IN PREG_HANDLE Hdl, OUT LPWSTR *Name, OUT LPWSTR *Comment, OUT DWORD *Flags, OUT DWORD *Address, OUT DWORD *Mask ) ; DWORD DhcpRegMScopeGetAttributes( IN PREG_HANDLE Hdl, OUT LPWSTR *Comments, OUT DWORD *State, OUT DWORD *ScopeId, OUT DWORD *Policy, OUT DWORD *TTL, OUT LPWSTR *LangTag, OUT PDATE_TIME *ExpiryTime ) ; DWORD DhcpRegOptDefGetAttributes( IN PREG_HANDLE Hdl, OUT LPWSTR *Name, OUT LPWSTR *Comments, OUT DWORD *Flags, OUT DWORD *OptionId, OUT LPWSTR *ClassName, OUT LPWSTR *VendorName, OUT LPBYTE *Value, OUT DWORD *ValueSize ) ; DWORD DhcpRegSScopeGetAttributes( // superscopes dont have any information stored.. dont use this IN PREG_HANDLE Hdl, OUT LPWSTR *Name, OUT LPWSTR *Comment, OUT DWORD *Flags ) ; DWORD DhcpRegClassDefGetAttributes( IN PREG_HANDLE Hdl, OUT LPWSTR *Name, OUT LPWSTR *Comment, OUT DWORD *Flags, OUT LPBYTE *Value, OUT DWORD *ValueSize ) ; DWORD DhcpRegSubnetServerGetAttributes( IN PREG_HANDLE Hdl, OUT LPWSTR *Name, OUT LPWSTR *Comment, OUT DWORD *Flags, OUT DWORD *Address, OUT DWORD *Role ) ; DWORD DhcpRegRangeGetAttributes( IN PREG_HANDLE Hdl, OUT LPWSTR *Name, OUT LPWSTR *Comment, OUT DWORD *Flags, OUT ULONG *AllocCount, OUT ULONG *MaxAllocCount, OUT DWORD *StartAddress, OUT DWORD *EndAddress, OUT LPBYTE *InUseClusters, OUT DWORD *InUseClusterSize, OUT LPBYTE *UsedClusters, OUT DWORD *UsedClustersSize ) ; DWORD DhcpRegReservationGetAttributes( IN PREG_HANDLE Hdl, OUT LPWSTR *Name, OUT LPWSTR *Comment, OUT DWORD *Flags, OUT DWORD *Address, OUT LPBYTE *ClientUID, OUT DWORD *ClientUIDSize ) ; DWORD DhcpRegOptGetAttributes( IN PREG_HANDLE Hdl, OUT DWORD *OptionId, OUT LPWSTR *ClassName, OUT LPWSTR *VendorName, OUT DWORD *Flags, OUT LPBYTE *Value, OUT DWORD *ValueSize ) ; //================================================================================ // the following functiosn help in writing to the registry //================================================================================ DWORD DhcpRegSaveSubKeys( IN PREG_HANDLE Hdl, IN OUT PARRAY Array ) ; DWORD DhcpRegSaveSubKeysPrefixed( IN PREG_HANDLE Hdl, IN OUT PARRAY Array, IN LPWSTR CommonPrefix ) ; DWORD DhcpRegServerSetList( IN PREG_HANDLE Hdl, IN PARRAY OptList, // list of LPWSTR options IN PARRAY OptDefList, // list of LPWSTR optdefs IN PARRAY Subnets, // list of LPWSTR subnets IN PARRAY SScopes, // list of LPWSTR sscopes IN PARRAY ClassDefs, // list of LPWSTR classes IN PARRAY MScopes // list of LPWSTR mscopes ) ; DWORD DhcpRegSubnetSetExclusions( IN PREG_HANDLE Hdl, IN LPBYTE *Excl, IN DWORD ExclSize ) ; DWORD DhcpRegSubnetSetList( IN PREG_HANDLE Hdl, IN PARRAY Servers, IN PARRAY IpRanges, IN PARRAY Reservations, IN PARRAY Options, IN LPBYTE *Excl, IN DWORD ExclSizeInBytes ) ; DWORD DhcpRegSScopeSetList( IN PREG_HANDLE Hdl, IN OUT PARRAY Subnets ) ; DWORD DhcpRegReservationSetList( IN PREG_HANDLE Hdl, IN PARRAY Subnets ) ; //================================================================================ // the single stuff are here -- these are not list stuff, but just simple // single valued attributes // some of these actually, dont even go to the registry, but that's fine alright? //================================================================================ DWORD DhcpRegServerSetAttributes( IN PREG_HANDLE Hdl, IN LPWSTR *Name, IN LPWSTR *Comment, IN DWORD *Flags // more attributes will come here soon? ) ; DWORD DhcpRegSubnetSetAttributes( IN PREG_HANDLE Hdl, IN LPWSTR *Name, IN LPWSTR *Comment, IN DWORD *Flags, IN DWORD *Address, IN DWORD *Mask ) ; DWORD DhcpRegMScopeSetAttributes( IN PREG_HANDLE Hdl, IN LPWSTR *Comments, IN DWORD *State, IN DWORD *ScopeId, IN DWORD *Policy, IN DWORD *TTL, IN LPWSTR *LangTag, IN PDATE_TIME *ExpiryTime ) ; DWORD DhcpRegOptDefSetAttributes( IN PREG_HANDLE Hdl, IN LPWSTR *Name, IN LPWSTR *Comments, IN DWORD *Flags, IN DWORD *OptionId, IN LPWSTR *ClassName, IN LPWSTR *VendorName, IN LPBYTE *Value, IN DWORD ValueSize ) ; DWORD DhcpRegSScopeSetAttributes( // superscopes dont have any information stored.. dont use this IN PREG_HANDLE Hdl, IN LPWSTR *Name, IN LPWSTR *Comment, IN DWORD *Flags ) ; DWORD DhcpRegClassDefSetAttributes( IN PREG_HANDLE Hdl, IN LPWSTR *Name, IN LPWSTR *Comment, IN DWORD *Flags, IN LPBYTE *Value, IN DWORD ValueSize ) ; DWORD DhcpRegSubnetServerSetAttributes( IN PREG_HANDLE Hdl, IN LPWSTR *Name, IN LPWSTR *Comment, IN DWORD *Flags, IN DWORD *Address, IN DWORD *Role ) ; DWORD DhcpRegRangeSetAttributes( IN PREG_HANDLE Hdl, IN LPWSTR *Name, IN LPWSTR *Comment, IN DWORD *Flags, IN ULONG *AllocCount, IN ULONG *MaxAllocCount, IN DWORD *StartAddress, IN DWORD *EndAddress, IN LPBYTE *InUseClusters, IN DWORD InUseClusterSize, IN LPBYTE *UsedClusters, IN DWORD UsedClustersSize ) ; DWORD DhcpRegReservationSetAttributes( IN PREG_HANDLE Hdl, IN LPWSTR *Name, IN LPWSTR *Comment, IN DWORD *Flags, IN DWORD *Address, IN LPBYTE *ClientUID, IN DWORD ClientUIDSize ) ; DWORD DhcpRegOptSetAttributes( IN PREG_HANDLE Hdl, IN DWORD *OptionId, IN LPWSTR *ClassName, IN LPWSTR *VendorName, IN DWORD *Flags, IN LPBYTE *Value, IN DWORD ValueSize ) ; DWORD DhcpRegRecurseDelete( IN PREG_HANDLE Hdl, IN LPWSTR KeyName ) ; DWORD DhcpRegRecurseDeleteBunch( IN PREG_HANDLE Hdl, IN PARRAY KeysArray ) ; DWORD DhcpRegUpdateTime( // update the last modified time VOID ) ; //======================================================================== // end of file //========================================================================