123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449 |
- {******************************************************************************}
- { }
- { DHCP Client API interface unit for Object Pascal }
- { }
- { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
- { Corporation. All Rights Reserved. }
- { }
- { The original file is: dhcpcsdk.h, released June 2000. The original Pascal }
- { code is: DhcpCSdk.pas, released December 2000. 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: JwaDhcpCSdk.pas,v 1.8 2005/09/06 16:36:50 marquardt Exp $
- unit JwaDhcpCSdk;
- {$WEAKPACKAGEUNIT}
- {$HPPEMIT ''}
- {$HPPEMIT '#include "dhcpcsdk.h"'}
- {$HPPEMIT ''}
- {$I jediapilib.inc}
- interface
- uses
- JwaWindows;
- //
- // DHCP Standard Options.
- //
- const
- OPTION_PAD = 0;
- {$EXTERNALSYM OPTION_PAD}
- OPTION_SUBNET_MASK = 1;
- {$EXTERNALSYM OPTION_SUBNET_MASK}
- OPTION_TIME_OFFSET = 2;
- {$EXTERNALSYM OPTION_TIME_OFFSET}
- OPTION_ROUTER_ADDRESS = 3;
- {$EXTERNALSYM OPTION_ROUTER_ADDRESS}
- OPTION_TIME_SERVERS = 4;
- {$EXTERNALSYM OPTION_TIME_SERVERS}
- OPTION_IEN116_NAME_SERVERS = 5;
- {$EXTERNALSYM OPTION_IEN116_NAME_SERVERS}
- OPTION_DOMAIN_NAME_SERVERS = 6;
- {$EXTERNALSYM OPTION_DOMAIN_NAME_SERVERS}
- OPTION_LOG_SERVERS = 7;
- {$EXTERNALSYM OPTION_LOG_SERVERS}
- OPTION_COOKIE_SERVERS = 8;
- {$EXTERNALSYM OPTION_COOKIE_SERVERS}
- OPTION_LPR_SERVERS = 9;
- {$EXTERNALSYM OPTION_LPR_SERVERS}
- OPTION_IMPRESS_SERVERS = 10;
- {$EXTERNALSYM OPTION_IMPRESS_SERVERS}
- OPTION_RLP_SERVERS = 11;
- {$EXTERNALSYM OPTION_RLP_SERVERS}
- OPTION_HOST_NAME = 12;
- {$EXTERNALSYM OPTION_HOST_NAME}
- OPTION_BOOT_FILE_SIZE = 13;
- {$EXTERNALSYM OPTION_BOOT_FILE_SIZE}
- OPTION_MERIT_DUMP_FILE = 14;
- {$EXTERNALSYM OPTION_MERIT_DUMP_FILE}
- OPTION_DOMAIN_NAME = 15;
- {$EXTERNALSYM OPTION_DOMAIN_NAME}
- OPTION_SWAP_SERVER = 16;
- {$EXTERNALSYM OPTION_SWAP_SERVER}
- OPTION_ROOT_DISK = 17;
- {$EXTERNALSYM OPTION_ROOT_DISK}
- OPTION_EXTENSIONS_PATH = 18;
- {$EXTERNALSYM OPTION_EXTENSIONS_PATH}
- //
- // IP layer parameters - per host
- //
- OPTION_BE_A_ROUTER = 19;
- {$EXTERNALSYM OPTION_BE_A_ROUTER}
- OPTION_NON_LOCAL_SOURCE_ROUTING = 20;
- {$EXTERNALSYM OPTION_NON_LOCAL_SOURCE_ROUTING}
- OPTION_POLICY_FILTER_FOR_NLSR = 21;
- {$EXTERNALSYM OPTION_POLICY_FILTER_FOR_NLSR}
- OPTION_MAX_REASSEMBLY_SIZE = 22;
- {$EXTERNALSYM OPTION_MAX_REASSEMBLY_SIZE}
- OPTION_DEFAULT_TTL = 23;
- {$EXTERNALSYM OPTION_DEFAULT_TTL}
- OPTION_PMTU_AGING_TIMEOUT = 24;
- {$EXTERNALSYM OPTION_PMTU_AGING_TIMEOUT}
- OPTION_PMTU_PLATEAU_TABLE = 25;
- {$EXTERNALSYM OPTION_PMTU_PLATEAU_TABLE}
- //
- // Link layer parameters - per interface.
- //
- OPTION_MTU = 26;
- {$EXTERNALSYM OPTION_MTU}
- OPTION_ALL_SUBNETS_MTU = 27;
- {$EXTERNALSYM OPTION_ALL_SUBNETS_MTU}
- OPTION_BROADCAST_ADDRESS = 28;
- {$EXTERNALSYM OPTION_BROADCAST_ADDRESS}
- OPTION_PERFORM_MASK_DISCOVERY = 29;
- {$EXTERNALSYM OPTION_PERFORM_MASK_DISCOVERY}
- OPTION_BE_A_MASK_SUPPLIER = 30;
- {$EXTERNALSYM OPTION_BE_A_MASK_SUPPLIER}
- OPTION_PERFORM_ROUTER_DISCOVERY = 31;
- {$EXTERNALSYM OPTION_PERFORM_ROUTER_DISCOVERY}
- OPTION_ROUTER_SOLICITATION_ADDR = 32;
- {$EXTERNALSYM OPTION_ROUTER_SOLICITATION_ADDR}
- OPTION_STATIC_ROUTES = 33;
- {$EXTERNALSYM OPTION_STATIC_ROUTES}
- OPTION_TRAILERS = 34;
- {$EXTERNALSYM OPTION_TRAILERS}
- OPTION_ARP_CACHE_TIMEOUT = 35;
- {$EXTERNALSYM OPTION_ARP_CACHE_TIMEOUT}
- OPTION_ETHERNET_ENCAPSULATION = 36;
- {$EXTERNALSYM OPTION_ETHERNET_ENCAPSULATION}
- //
- // TCP Paramters - per host
- //
- OPTION_TTL = 37;
- {$EXTERNALSYM OPTION_TTL}
- OPTION_KEEP_ALIVE_INTERVAL = 38;
- {$EXTERNALSYM OPTION_KEEP_ALIVE_INTERVAL}
- OPTION_KEEP_ALIVE_DATA_SIZE = 39;
- {$EXTERNALSYM OPTION_KEEP_ALIVE_DATA_SIZE}
- //
- // Application Layer Parameters
- //
- OPTION_NETWORK_INFO_SERVICE_DOM = 40;
- {$EXTERNALSYM OPTION_NETWORK_INFO_SERVICE_DOM}
- OPTION_NETWORK_INFO_SERVERS = 41;
- {$EXTERNALSYM OPTION_NETWORK_INFO_SERVERS}
- OPTION_NETWORK_TIME_SERVERS = 42;
- {$EXTERNALSYM OPTION_NETWORK_TIME_SERVERS}
- //
- // Vender specific information option
- //
- OPTION_VENDOR_SPEC_INFO = 43;
- {$EXTERNALSYM OPTION_VENDOR_SPEC_INFO}
- //
- // NetBIOS over TCP/IP Name server option
- //
- OPTION_NETBIOS_NAME_SERVER = 44;
- {$EXTERNALSYM OPTION_NETBIOS_NAME_SERVER}
- OPTION_NETBIOS_DATAGRAM_SERVER = 45;
- {$EXTERNALSYM OPTION_NETBIOS_DATAGRAM_SERVER}
- OPTION_NETBIOS_NODE_TYPE = 46;
- {$EXTERNALSYM OPTION_NETBIOS_NODE_TYPE}
- OPTION_NETBIOS_SCOPE_OPTION = 47;
- {$EXTERNALSYM OPTION_NETBIOS_SCOPE_OPTION}
- //
- // X Window System Options.
- //
- OPTION_XWINDOW_FONT_SERVER = 48;
- {$EXTERNALSYM OPTION_XWINDOW_FONT_SERVER}
- OPTION_XWINDOW_DISPLAY_MANAGER = 49;
- {$EXTERNALSYM OPTION_XWINDOW_DISPLAY_MANAGER}
- //
- // Other extensions
- //
- OPTION_REQUESTED_ADDRESS = 50;
- {$EXTERNALSYM OPTION_REQUESTED_ADDRESS}
- OPTION_LEASE_TIME = 51;
- {$EXTERNALSYM OPTION_LEASE_TIME}
- OPTION_OK_TO_OVERLAY = 52;
- {$EXTERNALSYM OPTION_OK_TO_OVERLAY}
- OPTION_MESSAGE_TYPE = 53;
- {$EXTERNALSYM OPTION_MESSAGE_TYPE}
- OPTION_SERVER_IDENTIFIER = 54;
- {$EXTERNALSYM OPTION_SERVER_IDENTIFIER}
- OPTION_PARAMETER_REQUEST_LIST = 55;
- {$EXTERNALSYM OPTION_PARAMETER_REQUEST_LIST}
- OPTION_MESSAGE = 56;
- {$EXTERNALSYM OPTION_MESSAGE}
- OPTION_MESSAGE_LENGTH = 57;
- {$EXTERNALSYM OPTION_MESSAGE_LENGTH}
- OPTION_RENEWAL_TIME = 58; // T1
- {$EXTERNALSYM OPTION_RENEWAL_TIME}
- OPTION_REBIND_TIME = 59; // T2
- {$EXTERNALSYM OPTION_REBIND_TIME}
- OPTION_CLIENT_CLASS_INFO = 60;
- {$EXTERNALSYM OPTION_CLIENT_CLASS_INFO}
- OPTION_CLIENT_ID = 61;
- {$EXTERNALSYM OPTION_CLIENT_ID}
- OPTION_TFTP_SERVER_NAME = 66;
- {$EXTERNALSYM OPTION_TFTP_SERVER_NAME}
- OPTION_BOOTFILE_NAME = 67;
- {$EXTERNALSYM OPTION_BOOTFILE_NAME}
- OPTION_END = 255;
- {$EXTERNALSYM OPTION_END}
- type
- _DHCPAPI_PARAMS = record
- Flags: ULONG; // for future use
- OptionId: ULONG; // what option is this?
- IsVendor: BOOL; // is this vendor specific?
- Data: LPBYTE; // the actual data
- nBytesData: DWORD; // how many bytes of data are there in Data?
- end;
- {$EXTERNALSYM _DHCPAPI_PARAMS}
- DHCPAPI_PARAMS = _DHCPAPI_PARAMS;
- {$EXTERNALSYM DHCPAPI_PARAMS}
- LPDHCPAPI_PARAMS = ^DHCPAPI_PARAMS;
- {$EXTERNALSYM LPDHCPAPI_PARAMS}
- PDHCPAPI_PARAMS = ^DHCPAPI_PARAMS;
- {$EXTERNALSYM PDHCPAPI_PARAMS}
- TDhcpApiParams = DHCPAPI_PARAMS;
- PDhcpApiParams = PDHCPAPI_PARAMS;
- DHCPCAPI_PARAMS = DHCPAPI_PARAMS;
- {$EXTERNALSYM DHCPCAPI_PARAMS}
- PDHCPCAPI_PARAMS = ^DHCPCAPI_PARAMS;
- {$EXTERNALSYM PDHCPCAPI_PARAMS}
- LPDHCPCAPI_PARAMS = ^DHCPCAPI_PARAMS;
- {$EXTERNALSYM LPDHCPCAPI_PARAMS}
- TDhcpCApiParams = DHCPCAPI_PARAMS;
- PDhcpCApiParams = PDHCPCAPI_PARAMS;
- _DHCPCAPI_PARAMS_ARRAY = record
- nParams: ULONG; // size of array
- Params: PDHCPCAPI_PARAMS; // actual array
- end;
- {$EXTERNALSYM _DHCPCAPI_PARAMS_ARRAY}
- DHCPCAPI_PARAMS_ARRAY = _DHCPCAPI_PARAMS_ARRAY;
- {$EXTERNALSYM DHCPCAPI_PARAMS_ARRAY}
- LPDHCPCAPI_PARAMS_ARRAY = ^DHCPCAPI_PARAMS_ARRAY;
- {$EXTERNALSYM LPDHCPCAPI_PARAMS_ARRAY}
- PDHCPCAPI_PARAMS_ARRAY = ^DHCPCAPI_PARAMS_ARRAY;
- {$EXTERNALSYM PDHCPCAPI_PARAMS_ARRAY}
- TDhcpcApiParamsArray = DHCPCAPI_PARAMS_ARRAY;
- PDhcpcApiParamsArray = PDHCPCAPI_PARAMS_ARRAY;
- _DHCPCAPI_CLASSID = record
- Flags: ULONG; // must be zero currently.
- Data: LPBYTE; // classid binary data.
- nBytesData: ULONG; // how many bytes of data are there?
- end;
- {$EXTERNALSYM _DHCPCAPI_CLASSID}
- DHCPCAPI_CLASSID = _DHCPCAPI_CLASSID;
- {$EXTERNALSYM DHCPCAPI_CLASSID}
- LPDHCPCAPI_CLASSID = ^DHCPCAPI_CLASSID;
- {$EXTERNALSYM LPDHCPCAPI_CLASSID}
- PDHCPCAPI_CLASSID = ^DHCPCAPI_CLASSID;
- {$EXTERNALSYM PDHCPCAPI_CLASSID}
- TDhcpcApiClassId = DHCPCAPI_CLASSID;
- PDhcpcApiClassId = PDHCPCAPI_CLASSID;
- const
- DHCPCAPI_REQUEST_PERSISTENT = $01; // request this options "permanently"
- {$EXTERNALSYM DHCPCAPI_REQUEST_PERSISTENT}
- DHCPCAPI_REQUEST_SYNCHRONOUS = $02; // request and block on it
- {$EXTERNALSYM DHCPCAPI_REQUEST_SYNCHRONOUS}
- DHCPCAPI_REQUEST_ASYNCHRONOUS = $04; // request and return, set event on completion
- {$EXTERNALSYM DHCPCAPI_REQUEST_ASYNCHRONOUS}
- DHCPCAPI_REQUEST_CANCEL = $08; // cancel request
- {$EXTERNALSYM DHCPCAPI_REQUEST_CANCEL}
- DHCPCAPI_REQUEST_MASK = $0F; // allowed flags..
- {$EXTERNALSYM DHCPCAPI_REQUEST_MASK}
- function DhcpCApiInitialize(var Version: DWORD): DWORD; stdcall;
- {$EXTERNALSYM DhcpCApiInitialize}
- procedure DhcpCApiCleanup; stdcall;
- {$EXTERNALSYM DhcpCApiCleanup}
- function DhcpRequestParams(Flags: DWORD; Reserved: LPVOID; AdapterName: LPWSTR;
- ClassId: PDHCPCAPI_CLASSID; SendParams, RecdParams: DHCPCAPI_PARAMS_ARRAY;
- Buffer: LPBYTE; pSize: LPDWORD; RequestIdStr: LPWSTR): DWORD; stdcall;
- {$EXTERNALSYM DhcpRequestParams}
- function DhcpUndoRequestParams(Flags: DWORD; Reserved: LPVOID; AdapterName: LPWSTR;
- RequestIdStr: LPWSTR): DWORD; stdcall;
- {$EXTERNALSYM DhcpUndoRequestParams}
- const
- DHCPCAPI_REGISTER_HANDLE_EVENT = $01; // handle returned is to an event
- {$EXTERNALSYM DHCPCAPI_REGISTER_HANDLE_EVENT}
- function DhcpRegisterParamChange(Flags: DWORD; Reserved: LPVOID; AdapterName: LPWSTR;
- ClassId: PDHCPCAPI_CLASSID; Params: DHCPCAPI_PARAMS_ARRAY; Handle: LPVOID): DWORD; stdcall;
- {$EXTERNALSYM DhcpRegisterParamChange}
- const
- DHCPCAPI_DEREGISTER_HANDLE_EVENT = $01; // de-register handle that is an event
- {$EXTERNALSYM DHCPCAPI_DEREGISTER_HANDLE_EVENT}
- function DhcpDeRegisterParamChange(Flags: DWORD; Reserved, Event: LPVOID): DWORD; stdcall;
- {$EXTERNALSYM DhcpDeRegisterParamChange}
- function DhcpRemoveDNSRegistrations: DWORD; stdcall;
- {$EXTERNALSYM DhcpRemoveDNSRegistrations}
- implementation
- uses
- JwaWinDLLNames;
- {$IFDEF DYNAMIC_LINK}
- var
- _DhcpCApiInitialize: Pointer;
- function DhcpCApiInitialize;
- begin
- GetProcedureAddress(_DhcpCApiInitialize, dhcpapi, 'DhcpCApiInitialize');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpCApiInitialize]
- end;
- end;
- var
- _DhcpCApiCleanup: Pointer;
- procedure DhcpCApiCleanup;
- begin
- GetProcedureAddress(_DhcpCApiCleanup, dhcpapi, 'DhcpCApiCleanup');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpCApiCleanup]
- end;
- end;
- var
- _DhcpRequestParams: Pointer;
- function DhcpRequestParams;
- begin
- GetProcedureAddress(_DhcpRequestParams, dhcpapi, 'DhcpRequestParams');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpRequestParams]
- end;
- end;
- var
- _DhcpUndoRequestParams: Pointer;
- function DhcpUndoRequestParams;
- begin
- GetProcedureAddress(_DhcpUndoRequestParams, dhcpapi, 'DhcpUndoRequestParams');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpUndoRequestParams]
- end;
- end;
- var
- _DhcpRegisterParamChange: Pointer;
- function DhcpRegisterParamChange;
- begin
- GetProcedureAddress(_DhcpRegisterParamChange, dhcpapi, 'DhcpRegisterParamChange');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpRegisterParamChange]
- end;
- end;
- var
- _DhcpDeRegisterParamChange: Pointer;
- function DhcpDeRegisterParamChange;
- begin
- GetProcedureAddress(_DhcpDeRegisterParamChange, dhcpapi, 'DhcpDeRegisterParamChange');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpDeRegisterParamChange]
- end;
- end;
- var
- _DhcpRemoveDNSRegistrations: Pointer;
- function DhcpRemoveDNSRegistrations;
- begin
- GetProcedureAddress(_DhcpRemoveDNSRegistrations, dhcpapi, 'DhcpRemoveDNSRegistrations');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DhcpRemoveDNSRegistrations]
- end;
- end;
- {$ELSE}
- function DhcpCApiInitialize; external dhcpapi name 'DhcpCApiInitialize';
- procedure DhcpCApiCleanup; external dhcpapi name 'DhcpCApiCleanup';
- function DhcpRequestParams; external dhcpapi name 'DhcpRequestParams';
- function DhcpUndoRequestParams; external dhcpapi name 'DhcpUndoRequestParams';
- function DhcpRegisterParamChange; external dhcpapi name 'DhcpRegisterParamChange';
- function DhcpDeRegisterParamChange; external dhcpapi name 'DhcpDeRegisterParamChange';
- function DhcpRemoveDNSRegistrations; external dhcpapi name 'DhcpRemoveDNSRegistrations';
- {$ENDIF DYNAMIC_LINK}
- end.
|