123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623 |
- {******************************************************************************}
- { }
- { DHCP Server Management API interface Unit for Object Pascal }
- { }
- { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
- { Corporation. All Rights Reserved. }
- { }
- { The original file is: dhcpsapi.h, released Feb 2003. The original Pascal }
- { code is: DhcpsApi.pas, released December 2003. The initial developer of the }
- { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
- { }
- { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
- { Marcel van Brakel. All Rights Reserved. }
- { }
- { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
- { }
- { You may retrieve the latest version of this file at the Project JEDI }
- { APILIB home page, located at http://jedi-apilib.sourceforge.net }
- { }
- { The contents of this file are used with permission, subject to the Mozilla }
- { Public License Version 1.1 (the "License"); you may not use this file except }
- { in compliance with the License. You may obtain a copy of the License at }
- { http://www.mozilla.org/MPL/MPL-1.1.html }
- { }
- { Software distributed under the License is distributed on an "AS IS" basis, }
- { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
- { the specific language governing rights and limitations under the License. }
- { }
- { Alternatively, the contents of this file may be used under the terms of the }
- { GNU Lesser General Public License (the "LGPL License"), in which case the }
- { provisions of the LGPL License are applicable instead of those above. }
- { If you wish to allow use of your version of this file only under the terms }
- { of the LGPL License and not to allow others to use your version of this file }
- { under the MPL, indicate your decision by deleting the provisions above and }
- { replace them with the notice and other provisions required by the LGPL }
- { License. If you do not delete the provisions above, a recipient may use }
- { your version of this file under either the MPL or the LGPL License. }
- { }
- { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
- { }
- {******************************************************************************}
- // $Id: JwaDhcpsApi.pas,v 1.9 2005/09/06 16:36:50 marquardt Exp $
- unit JwaDhcpsApi;
- {$WEAKPACKAGEUNIT}
- {$HPPEMIT ''}
- {$HPPEMIT '#include "dhcpsapi.h"'}
- {$HPPEMIT ''}
- {$I jediapilib.inc}
- interface
- uses
- JwaWindows;
- type
- DHCP_IP_ADDRESS = DWORD;
- {$EXTERNALSYM DHCP_IP_ADDRESS}
- PDHCP_IP_ADDRESS = ^DHCP_IP_ADDRESS;
- {$EXTERNALSYM PDHCP_IP_ADDRESS}
- LPDHCP_IP_ADDRESS = ^DHCP_IP_ADDRESS;
- {$EXTERNALSYM LPDHCP_IP_ADDRESS}
- TDhcpIpAddress = DHCP_IP_ADDRESS;
- PDhcpIpAddress = ^DHCP_IP_ADDRESS;
- DHCP_IP_MASK = DWORD;
- {$EXTERNALSYM DHCP_IP_MASK}
- TDhcpIpMask = DHCP_IP_MASK;
- DHCP_RESUME_HANDLE = DWORD;
- {$EXTERNALSYM DHCP_RESUME_HANDLE}
- TDhcpResumeHandle = DHCP_RESUME_HANDLE;
- DHCP_OPTION_ID = DWORD;
- {$EXTERNALSYM DHCP_OPTION_ID}
- TDhcpOptionID = DHCP_OPTION_ID;
- _DATE_TIME = record
- dwLowDateTime: DWORD;
- dwHighDateTime: DWORD;
- end;
- {$EXTERNALSYM _DATE_TIME}
- DATE_TIME = _DATE_TIME;
- {$EXTERNALSYM DATE_TIME}
- LPDATE_TIME = ^DATE_TIME;
- {$EXTERNALSYM LPDATE_TIME}
- TDateTime = DATE_TIME;
- PDateTime = ^DATE_TIME;
- _DWORD_DWORD = record
- DWord1: DWORD;
- DWord2: DWORD;
- end;
- {$EXTERNALSYM _DWORD_DWORD}
- DWORD_DWORD = _DWORD_DWORD;
- {$EXTERNALSYM DWORD_DWORD}
- LPDWORD_DWORD = ^DWORD_DWORD;
- {$EXTERNALSYM LPDWORD_DWORD}
- TDwordDword = DWORD_DWORD;
- PDwordDword = ^DWORD_DWORD;
- _DHCP_BINARY_DATA = record
- DataLength: DWORD;
- Data: LPBYTE;
- end;
- {$EXTERNALSYM _DHCP_BINARY_DATA}
- DHCP_BINARY_DATA = _DHCP_BINARY_DATA;
- {$EXTERNALSYM DHCP_BINARY_DATA}
- LPDHCP_BINARY_DATA = ^DHCP_BINARY_DATA;
- {$EXTERNALSYM LPDHCP_BINARY_DATA}
- TDhcpBinaryData = DHCP_BINARY_DATA;
- PDhcpBinaryData = ^DHCP_BINARY_DATA;
- DHCP_CLIENT_UID = DHCP_BINARY_DATA;
- {$EXTERNALSYM DHCP_CLIENT_UID}
- TDhcpClientUid = DHCP_CLIENT_UID;
- const
- DHCP_ENDPOINT_FLAG_CANT_MODIFY = $01;
- {$EXTERNALSYM DHCP_ENDPOINT_FLAG_CANT_MODIFY}
- type
- _DHCP_BIND_ELEMENT = record
- Flags: ULONG;
- fBoundToDHCPServer: BOOL;
- AdapterPrimaryAddress: DHCP_IP_ADDRESS;
- AdapterSubnetAddress: DHCP_IP_ADDRESS;
- IfDescription: LPWSTR;
- IfIdSize: ULONG;
- IfId: LPBYTE;
- end;
- {$EXTERNALSYM _DHCP_BIND_ELEMENT}
- DHCP_BIND_ELEMENT = _DHCP_BIND_ELEMENT;
- {$EXTERNALSYM DHCP_BIND_ELEMENT}
- LPDHCP_BIND_ELEMENT = ^DHCP_BIND_ELEMENT;
- {$EXTERNALSYM LPDHCP_BIND_ELEMENT}
- TDhcpBindElement = DHCP_BIND_ELEMENT;
- PDhcpBindElement = ^DHCP_BIND_ELEMENT;
- _DHCP_BIND_ELEMENT_ARRAY = record
- NumElements: DWORD;
- Elements: LPDHCP_BIND_ELEMENT; //array
- end;
- {$EXTERNALSYM _DHCP_BIND_ELEMENT_ARRAY}
- DHCP_BIND_ELEMENT_ARRAY = _DHCP_BIND_ELEMENT_ARRAY;
- {$EXTERNALSYM DHCP_BIND_ELEMENT_ARRAY}
- LPDHCP_BIND_ELEMENT_ARRAY = ^DHCP_BIND_ELEMENT_ARRAY;
- {$EXTERNALSYM LPDHCP_BIND_ELEMENT_ARRAY}
- TDhcpBindElementArray = DHCP_BIND_ELEMENT_ARRAY;
- PDhcpBindElementArray = ^DHCP_BIND_ELEMENT_ARRAY;
- _DHCP_CLIENT_SEARCH_TYPE = (
- DhcpClientIpAddress,
- DhcpClientHardwareAddress,
- DhcpClientName);
- {$EXTERNALSYM _DHCP_CLIENT_SEARCH_TYPE}
- DHCP_SEARCH_INFO_TYPE = _DHCP_CLIENT_SEARCH_TYPE;
- {$EXTERNALSYM DHCP_SEARCH_INFO_TYPE}
- LPDHCP_SEARCH_INFO_TYPE = ^DHCP_SEARCH_INFO_TYPE;
- {$EXTERNALSYM LPDHCP_SEARCH_INFO_TYPE}
- TDhcpSearchInfoType = DHCP_SEARCH_INFO_TYPE;
- PDhcpSearchInfoType = ^DHCP_SEARCH_INFO_TYPE;
- _DHCP_CLIENT_SEARCH_UNION = record
- case Integer of
- 0: (ClientIpAddress: DHCP_IP_ADDRESS);
- 1: (ClientHardwareAddress: DHCP_CLIENT_UID);
- 2: (ClientName: LPWSTR);
- end;
- {$EXTERNALSYM _DHCP_CLIENT_SEARCH_UNION}
- _DHCP_CLIENT_SEARCH_INFO = record
- SearchType: DHCP_SEARCH_INFO_TYPE;
- SearchInfo: _DHCP_CLIENT_SEARCH_UNION;
- end;
- {$EXTERNALSYM _DHCP_CLIENT_SEARCH_INFO}
- DHCP_SEARCH_INFO = _DHCP_CLIENT_SEARCH_INFO;
- {$EXTERNALSYM DHCP_SEARCH_INFO}
- LPDHCP_SEARCH_INFO = ^DHCP_SEARCH_INFO;
- {$EXTERNALSYM LPDHCP_SEARCH_INFO}
- TDhcpSearchInfo = DHCP_SEARCH_INFO;
- PDhcpSearchInfo = ^DHCP_SEARCH_INFO;
- _DHCP_OPTION_SCOPE_TYPE = (
- DhcpDefaultOptions,
- DhcpGlobalOptions,
- DhcpSubnetOptions,
- DhcpReservedOptions,
- DhcpMScopeOptions);
- {$EXTERNALSYM _DHCP_OPTION_SCOPE_TYPE}
- DHCP_OPTION_SCOPE_TYPE = _DHCP_OPTION_SCOPE_TYPE;
- {$EXTERNALSYM DHCP_OPTION_SCOPE_TYPE}
- LPDHCP_OPTION_SCOPE_TYPE = ^DHCP_OPTION_SCOPE_TYPE;
- {$EXTERNALSYM LPDHCP_OPTION_SCOPE_TYPE}
- TDhcpOptionScopeType = DHCP_OPTION_SCOPE_TYPE;
- PDhcpOptionScopeType = ^DHCP_OPTION_SCOPE_TYPE;
- _DHCP_RESERVED_SCOPE = record
- ReservedIpAddress: DHCP_IP_ADDRESS;
- ReservedIpSubnetAddress: DHCP_IP_ADDRESS;
- end;
- {$EXTERNALSYM _DHCP_RESERVED_SCOPE}
- DHCP_RESERVED_SCOPE = _DHCP_RESERVED_SCOPE;
- {$EXTERNALSYM DHCP_RESERVED_SCOPE}
- LPDHCP_RESERVED_SCOPE = ^DHCP_RESERVED_SCOPE;
- {$EXTERNALSYM LPDHCP_RESERVED_SCOPE}
- TDhcpReservedScope = DHCP_RESERVED_SCOPE;
- PDhcpReservedScope = ^DHCP_RESERVED_SCOPE;
- _DHCP_OPTION_SCOPE_UNION = record
- case Integer of
- 0: (DefaultScopeInfo: PVOID); // must be NULL
- 1: (GlobalScopeInfo: PVOID); // must be NULL
- 2: (SubnetScopeInfo: DHCP_IP_ADDRESS);
- 3: (ReservedScopeInfo: DHCP_RESERVED_SCOPE);
- 4: (MScopeInfo: LPWSTR);
- end;
- {$EXTERNALSYM _DHCP_OPTION_SCOPE_UNION}
- _DHCP_OPTION_SCOPE_INFO = record
- ScopeType: DHCP_OPTION_SCOPE_TYPE;
- ScopeInfo: _DHCP_OPTION_SCOPE_UNION;
- end;
- {$EXTERNALSYM _DHCP_OPTION_SCOPE_INFO}
- DHCP_OPTION_SCOPE_INFO = _DHCP_OPTION_SCOPE_INFO;
- {$EXTERNALSYM DHCP_OPTION_SCOPE_INFO}
- LPDHCP_OPTION_SCOPE_INFO = ^DHCP_OPTION_SCOPE_INFO;
- {$EXTERNALSYM LPDHCP_OPTION_SCOPE_INFO}
- TDhcpOptionScopeInfo = DHCP_OPTION_SCOPE_INFO;
- PDhcpOptionScopeInfo = ^DHCP_OPTION_SCOPE_INFO;
- _DHCP_HOST_INFO = record
- IpAddress: DHCP_IP_ADDRESS; // minimum information always available
- NetBiosName: LPWSTR; // optional information
- HostName: LPWSTR; // optional information
- end;
- {$EXTERNALSYM _DHCP_HOST_INFO}
- DHCP_HOST_INFO = _DHCP_HOST_INFO;
- {$EXTERNALSYM DHCP_HOST_INFO}
- LPDHCP_HOST_INFO = ^DHCP_HOST_INFO;
- {$EXTERNALSYM LPDHCP_HOST_INFO}
- TDhcpHostInfo = DHCP_HOST_INFO;
- PDhcpHostInfo = ^DHCP_HOST_INFO;
- _DHCP_CLIENT_INFO = record
- ClientIpAddress: DHCP_IP_ADDRESS; // currently assigned IP address.
- SubnetMask: DHCP_IP_MASK;
- ClientHardwareAddress: DHCP_CLIENT_UID;
- ClientName: LPWSTR; // optional.
- ClientComment: LPWSTR;
- ClientLeaseExpires: DATE_TIME; // UTC time in FILE_TIME format.
- OwnerHost: DHCP_HOST_INFO; // host that distributed this IP address.
- end;
- {$EXTERNALSYM _DHCP_CLIENT_INFO}
- DHCP_CLIENT_INFO = _DHCP_CLIENT_INFO;
- {$EXTERNALSYM DHCP_CLIENT_INFO}
- LPDHCP_CLIENT_INFO = ^DHCP_CLIENT_INFO;
- {$EXTERNALSYM LPDHCP_CLIENT_INFO}
- TDhcpClientInfo = DHCP_CLIENT_INFO;
- PDhcpClientInfo = ^DHCP_CLIENT_INFO;
- _DHCP_CLIENT_INFO_ARRAY = record
- NumElements: DWORD;
- Clients: ^LPDHCP_CLIENT_INFO; // array of pointers\
- end;
- {$EXTERNALSYM _DHCP_CLIENT_INFO_ARRAY}
- DHCP_CLIENT_INFO_ARRAY = _DHCP_CLIENT_INFO_ARRAY;
- {$EXTERNALSYM DHCP_CLIENT_INFO_ARRAY}
- LPDHCP_CLIENT_INFO_ARRAY = ^DHCP_CLIENT_INFO_ARRAY;
- {$EXTERNALSYM LPDHCP_CLIENT_INFO_ARRAY}
- TDhcpClientInfoArray = DHCP_CLIENT_INFO_ARRAY;
- PDhcpClientInfoArray = ^DHCP_CLIENT_INFO_ARRAY;
- _DHCP_IP_ARRAY = record
- NumElements: DWORD;
- Elements: LPDHCP_IP_ADDRESS; //array
- end;
- {$EXTERNALSYM _DHCP_IP_ARRAY}
- DHCP_IP_ARRAY = _DHCP_IP_ARRAY;
- {$EXTERNALSYM DHCP_IP_ARRAY}
- LPDHCP_IP_ARRAY = ^DHCP_IP_ARRAY;
- {$EXTERNALSYM LPDHCP_IP_ARRAY}
- TDhcpIpArray = DHCP_IP_ARRAY;
- PDhcpIpArray = ^DHCP_IP_ARRAY;
- //
- // Subnet State.
- //
- // Currently a Subnet scope can be Enabled or Disabled.
- //
- // If the state is Enabled State,
- // The server distributes address to the client, extends leases and
- // accepts releases.
- //
- // If the state is Disabled State,
- // The server does not distribute address to any new client, and does
- // extent (and sends NACK) old leases, but the servers accepts lease
- // releases.
- //
- // The idea behind this subnet state is, when the admin wants to stop
- // serving a subnet, he moves the state from Enbaled to Disabled so
- // that the clients from the subnets smoothly move to another servers
- // serving that subnet. When all or most of the clients move to
- // another server, the admin can delete the subnet without any force
- // if no client left in that subnet, otherwise the admin should use
- // full force to delete the subnet.
- //
- type
- _DHCP_SUBNET_STATE = (
- DhcpSubnetEnabled = 0,
- DhcpSubnetDisabled,
- DhcpSubnetEnabledSwitched,
- DhcpSubnetDisabledSwitched,
- DhcpSubnetInvalidState);
- {$EXTERNALSYM _DHCP_SUBNET_STATE}
- DHCP_SUBNET_STATE = _DHCP_SUBNET_STATE;
- {$EXTERNALSYM DHCP_SUBNET_STATE}
- LPDHCP_SUBNET_STATE = ^DHCP_SUBNET_STATE;
- {$EXTERNALSYM LPDHCP_SUBNET_STATE}
- TDhcpSubnetState = DHCP_SUBNET_STATE;
- PDhcpSubnetState = ^DHCP_SUBNET_STATE;
- //
- // Subnet related data structures.
- //
- _DHCP_SUBNET_INFO = record
- SubnetAddress: DHCP_IP_ADDRESS;
- SubnetMask: DHCP_IP_MASK;
- SubnetName: LPWSTR;
- SubnetComment: LPWSTR;
- PrimaryHost: DHCP_HOST_INFO;
- SubnetState: DHCP_SUBNET_STATE;
- end;
- {$EXTERNALSYM _DHCP_SUBNET_INFO}
- DHCP_SUBNET_INFO = _DHCP_SUBNET_INFO;
- {$EXTERNALSYM DHCP_SUBNET_INFO}
- LPDHCP_SUBNET_INFO = ^DHCP_SUBNET_INFO;
- {$EXTERNALSYM LPDHCP_SUBNET_INFO}
- TDhcpSubnetInfo = DHCP_SUBNET_INFO;
- PDhcpSubnetInfo = ^DHCP_SUBNET_INFO;
- //
- // DHCP Options related data structures.
- //
- _DHCP_OPTION_DATA_TYPE = (
- DhcpByteOption,
- DhcpWordOption,
- DhcpDWordOption,
- DhcpDWordDWordOption,
- DhcpIpAddressOption,
- DhcpStringDataOption,
- DhcpBinaryDataOption,
- DhcpEncapsulatedDataOption);
- {$EXTERNALSYM _DHCP_OPTION_DATA_TYPE}
- DHCP_OPTION_DATA_TYPE = _DHCP_OPTION_DATA_TYPE;
- {$EXTERNALSYM DHCP_OPTION_DATA_TYPE}
- LPDHCP_OPTION_DATA_TYPE = ^DHCP_OPTION_DATA_TYPE;
- {$EXTERNALSYM LPDHCP_OPTION_DATA_TYPE}
- TDhcpOptionDataType = DHCP_OPTION_DATA_TYPE;
- PDhcpOptionDataType = ^DHCP_OPTION_DATA_TYPE;
- _DHCP_OPTION_ELEMENT_UNION = record
- case Integer of
- 0: (ByteOption: BYTE);
- 1: (WordOption: WORD);
- 2: (DWordOption: DWORD);
- 3: (DWordDWordOption: DWORD_DWORD);
- 4: (IpAddressOption: DHCP_IP_ADDRESS);
- 5: (StringDataOption: LPWSTR);
- 6: (BinaryDataOption: DHCP_BINARY_DATA);
- 7: (EncapsulatedDataOption: DHCP_BINARY_DATA);
- // for vendor specific information option.
- end;
- {$EXTERNALSYM _DHCP_OPTION_ELEMENT_UNION}
- _DHCP_OPTION_DATA_ELEMENT = record
- OptionType: DHCP_OPTION_DATA_TYPE;
- Element: _DHCP_OPTION_ELEMENT_UNION;
- end;
- {$EXTERNALSYM _DHCP_OPTION_DATA_ELEMENT}
- DHCP_OPTION_DATA_ELEMENT = _DHCP_OPTION_DATA_ELEMENT;
- {$EXTERNALSYM DHCP_OPTION_DATA_ELEMENT}
- LPDHCP_OPTION_DATA_ELEMENT = ^DHCP_OPTION_DATA_ELEMENT;
- {$EXTERNALSYM LPDHCP_OPTION_DATA_ELEMENT}
- TDhcpOptionDataElement = DHCP_OPTION_DATA_ELEMENT;
- PDhcpOptionDataElement = ^DHCP_OPTION_DATA_ELEMENT;
- _DHCP_OPTION_DATA = record
- NumElements: DWORD; // number of option elements in the pointed array
- Elements: LPDHCP_OPTION_DATA_ELEMENT; //array
- end;
- {$EXTERNALSYM _DHCP_OPTION_DATA}
- DHCP_OPTION_DATA = _DHCP_OPTION_DATA;
- {$EXTERNALSYM DHCP_OPTION_DATA}
- LPDHCP_OPTION_DATA = ^DHCP_OPTION_DATA;
- {$EXTERNALSYM LPDHCP_OPTION_DATA}
- TDhcpOptionData = DHCP_OPTION_DATA;
- PDhcpOptionData = ^DHCP_OPTION_DATA;
- _DHCP_OPTION_VALUE = record
- OptionID: DHCP_OPTION_ID;
- Value: DHCP_OPTION_DATA;
- end;
- {$EXTERNALSYM _DHCP_OPTION_VALUE}
- DHCP_OPTION_VALUE = _DHCP_OPTION_VALUE;
- {$EXTERNALSYM DHCP_OPTION_VALUE}
- LPDHCP_OPTION_VALUE = ^DHCP_OPTION_VALUE;
- {$EXTERNALSYM LPDHCP_OPTION_VALUE}
- TDhcpOptionValue = DHCP_OPTION_VALUE;
- PDhcpOptionValue = ^DHCP_OPTION_VALUE;
- function DhcpGetVersion(ServerIpAddress: LPWSTR; MajorVersion, MinorVersion: LPDWORD): DWORD; stdcall;
- {$EXTERNALSYM DhcpGetVersion}
- function DhcpSetServerBindingInfo(ServerIpAddress: PWideChar; Flags: ULONG; BindElementInfo: LPDHCP_BIND_ELEMENT_ARRAY): DWORD; stdcall;
- {$EXTERNALSYM DhcpSetServerBindingInfo}
- function DhcpGetServerBindingInfo(ServerIpAddress: PWideChar; Flags: ULONG; out BindElementsInfo: LPDHCP_BIND_ELEMENT_ARRAY): DWORD; stdcall;
- {$EXTERNALSYM DhcpGetServerBindingInfo}
- function DhcpCreateClientInfo(ServerIpAddress: PWideChar; ClientInfo: LPDHCP_CLIENT_INFO): DWORD; stdcall;
- {$EXTERNALSYM DhcpCreateClientInfo}
- function DhcpSetClientInfo(ServerIpAddress: PWideChar; ClientInfo: LPDHCP_CLIENT_INFO): DWORD; stdcall;
- {$EXTERNALSYM DhcpSetClientInfo}
- function DhcpGetClientInfo(ServerIpAddress: PWideChar; SearchInfo: LPDHCP_SEARCH_INFO; ClientInfo: LPDHCP_CLIENT_INFO): DWORD; stdcall;
- {$EXTERNALSYM DhcpGetClientInfo}
- function DhcpDeleteClientInfo(ServerIpAddress: PWideChar; ClientInfo: LPDHCP_SEARCH_INFO): DWORD; stdcall;
- {$EXTERNALSYM DhcpDeleteClientInfo}
- function DhcpEnumSubnetClients(ServerIpAddress: PWideChar; SubnetAddress: DHCP_IP_ADDRESS; var ResumeHandle: DHCP_RESUME_HANDLE; PreferredMaximum: DWORD; out ClientInfo: LPDHCP_CLIENT_INFO_ARRAY; out ClientsRead, ClientsTotal: DWORD): DWORD; stdcall;
- {$EXTERNALSYM DhcpEnumSubnetClients}
- function DhcpEnumSubnets(ServerIpAddress: PWideChar; var ResumeHandle: DHCP_RESUME_HANDLE; PreferredMaximum: DWORD; EnumInfo: LPDHCP_IP_ARRAY; out ElementsRead, ElementsTotal: DWORD): DWORD; stdcall;
- {$EXTERNALSYM DhcpEnumSubnets}
- function DhcpGetSubnetInfo(ServerIpAddress: PWideChar; SubnetAddress: DHCP_IP_ADDRESS; out SubnetInfo: LPDHCP_SUBNET_INFO): DWORD; stdcall;
- {$EXTERNALSYM DhcpGetSubnetInfo}
- function DhcpGetOptionValue(ServerIpAddress: PWideChar; OptionID: DHCP_OPTION_ID; const ScopeInfo: DHCP_OPTION_SCOPE_INFO; out OptionValue: LPDHCP_OPTION_VALUE): DWORD; stdcall;
- {$EXTERNALSYM DhcpGetOptionValue}
- procedure DhcpRpcFreeMemory(BufferPointer: PVOID); stdcall;
- {$EXTERNALSYM DhcpRpcFreeMemory}
- implementation
- uses
- JwaWinDLLNames;
- {$IFDEF DYNAMIC_LINK}
- var
- _DhcpGetVersion: Pointer;
- function DhcpGetVersion;
- begin
- GetProcedureAddress(_DhcpGetVersion, dhcplib, 'DhcpGetVersion');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpGetVersion]
- end;
- end;
- var
- _DhcpSetServerBindingInfo: Pointer;
- function DhcpSetServerBindingInfo;
- begin
- GetProcedureAddress(_DhcpSetServerBindingInfo, dhcplib, 'DhcpSetServerBindingInfo');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpSetServerBindingInfo]
- end;
- end;
- var
- _DhcpGetServerBindingInfo: Pointer;
- function DhcpGetServerBindingInfo;
- begin
- GetProcedureAddress(_DhcpGetServerBindingInfo, dhcplib, 'DhcpGetServerBindingInfo');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpGetServerBindingInfo]
- end;
- end;
- var
- _DhcpCreateClientInfo: Pointer;
- function DhcpCreateClientInfo;
- begin
- GetProcedureAddress(_DhcpCreateClientInfo, dhcplib, 'DhcpCreateClientInfo');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpCreateClientInfo]
- end;
- end;
- var
- _DhcpSetClientInfo: Pointer;
- function DhcpSetClientInfo;
- begin
- GetProcedureAddress(_DhcpSetClientInfo, dhcplib, 'DhcpSetClientInfo');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpSetClientInfo]
- end;
- end;
- var
- _DhcpGetClientInfo: Pointer;
- function DhcpGetClientInfo;
- begin
- GetProcedureAddress(_DhcpGetClientInfo, dhcplib, 'DhcpGetClientInfo');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpGetClientInfo]
- end;
- end;
- var
- _DhcpDeleteClientInfo: Pointer;
- function DhcpDeleteClientInfo;
- begin
- GetProcedureAddress(_DhcpDeleteClientInfo, dhcplib, 'DhcpDeleteClientInfo');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpDeleteClientInfo]
- end;
- end;
- var
- _DhcpEnumSubnetClients: Pointer;
- function DhcpEnumSubnetClients;
- begin
- GetProcedureAddress(_DhcpEnumSubnetClients, dhcplib, 'DhcpEnumSubnetClients');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpEnumSubnetClients]
- end;
- end;
- var
- _DhcpEnumSubnets: Pointer;
- function DhcpEnumSubnets;
- begin
- GetProcedureAddress(_DhcpEnumSubnets, dhcplib, 'DhcpEnumSubnets');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpEnumSubnets]
- end;
- end;
- var
- _DhcpGetSubnetInfo: Pointer;
- function DhcpGetSubnetInfo;
- begin
- GetProcedureAddress(_DhcpGetSubnetInfo, dhcplib, 'DhcpGetSubnetInfo');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpGetSubnetInfo]
- end;
- end;
- var
- _DhcpGetOptionValue: Pointer;
- function DhcpGetOptionValue;
- begin
- GetProcedureAddress(_DhcpGetOptionValue, dhcplib, 'DhcpGetOptionValue');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpGetOptionValue]
- end;
- end;
- var
- _DhcpRpcFreeMemory: Pointer;
- procedure DhcpRpcFreeMemory;
- begin
- GetProcedureAddress(_DhcpRpcFreeMemory, dhcplib, 'DhcpRpcFreeMemory');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpRpcFreeMemory]
- end;
- end;
-
- {$ELSE}
- function DhcpGetVersion; external dhcplib name 'DhcpGetVersion';
- function DhcpSetServerBindingInfo; external dhcplib name 'DhcpSetServerBindingInfo';
- function DhcpGetServerBindingInfo; external dhcplib name 'DhcpGetServerBindingInfo';
- function DhcpCreateClientInfo; external dhcplib name 'DhcpCreateClientInfo';
- function DhcpSetClientInfo; external dhcplib name 'DhcpSetClientInfo';
- function DhcpGetClientInfo; external dhcplib name 'DhcpGetClientInfo';
- function DhcpDeleteClientInfo; external dhcplib name 'DhcpDeleteClientInfo';
- function DhcpEnumSubnetClients; external dhcplib name 'DhcpEnumSubnetClients';
- function DhcpEnumSubnets; external dhcplib name 'DhcpEnumSubnets';
- function DhcpGetSubnetInfo; external dhcplib name 'DhcpGetSubnetInfo';
- function DhcpGetOptionValue; external dhcplib name 'DhcpGetOptionValue';
- procedure DhcpRpcFreeMemory; external dhcplib name 'DhcpRpcFreeMemory';
- {$ENDIF DYNAMIC_LINK}
- end.
|