📄 jwadhcpcsdk.pas
字号:
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
const
dhcpapi = 'dhcpcsvc.dll';
{$IFDEF DYNAMIC_LINK}
var
_DhcpCApiInitialize: Pointer;
function DhcpCApiInitialize;
begin
GetProcedureAddress(_DhcpCApiInitialize, dhcpapi, 'DhcpCApiInitialize');
asm
mov esp, ebp
pop ebp
jmp [_DhcpCApiInitialize]
end;
end;
{$ELSE}
function DhcpCApiInitialize; external dhcpapi name 'DhcpCApiInitialize';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_DhcpCApiCleanup: Pointer;
procedure DhcpCApiCleanup;
begin
GetProcedureAddress(_DhcpCApiCleanup, dhcpapi, 'DhcpCApiCleanup');
asm
mov esp, ebp
pop ebp
jmp [_DhcpCApiCleanup]
end;
end;
{$ELSE}
procedure DhcpCApiCleanup; external dhcpapi name 'DhcpCApiCleanup';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_DhcpRequestParams: Pointer;
function DhcpRequestParams;
begin
GetProcedureAddress(_DhcpRequestParams, dhcpapi, 'DhcpRequestParams');
asm
mov esp, ebp
pop ebp
jmp [_DhcpRequestParams]
end;
end;
{$ELSE}
function DhcpRequestParams; external dhcpapi name 'DhcpRequestParams';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_DhcpUndoRequestParams: Pointer;
function DhcpUndoRequestParams;
begin
GetProcedureAddress(_DhcpUndoRequestParams, dhcpapi, 'DhcpUndoRequestParams');
asm
mov esp, ebp
pop ebp
jmp [_DhcpUndoRequestParams]
end;
end;
{$ELSE}
function DhcpUndoRequestParams; external dhcpapi name 'DhcpUndoRequestParams';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_DhcpRegisterParamChange: Pointer;
function DhcpRegisterParamChange;
begin
GetProcedureAddress(_DhcpRegisterParamChange, dhcpapi, 'DhcpRegisterParamChange');
asm
mov esp, ebp
pop ebp
jmp [_DhcpRegisterParamChange]
end;
end;
{$ELSE}
function DhcpRegisterParamChange; external dhcpapi name 'DhcpRegisterParamChange';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_DhcpDeRegisterParamChange: Pointer;
function DhcpDeRegisterParamChange;
begin
GetProcedureAddress(_DhcpDeRegisterParamChange, dhcpapi, 'DhcpDeRegisterParamChange');
asm
mov esp, ebp
pop ebp
jmp [_DhcpDeRegisterParamChange]
end;
end;
{$ELSE}
function DhcpDeRegisterParamChange; external dhcpapi name 'DhcpDeRegisterParamChange';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_DhcpRemoveDNSRegistrations: Pointer;
function DhcpRemoveDNSRegistrations;
begin
GetProcedureAddress(_DhcpRemoveDNSRegistrations, dhcpapi, 'DhcpRemoveDNSRegistrations');
asm
mov esp, ebp
pop ebp
jmp [_DhcpRemoveDNSRegistrations]
end;
end;
{$ELSE}
function DhcpRemoveDNSRegistrations; external dhcpapi name 'DhcpRemoveDNSRegistrations';
{$ENDIF DYNAMIC_LINK}
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -