12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094 |
- {******************************************************************************}
- { }
- { Winsock2 Service Provider API interface Unit for Object Pascal }
- { }
- { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
- { Corporation. All Rights Reserved. }
- { }
- { The original file is: ws2spi.h, released June 2000. The original Pascal }
- { code is: WS2spi.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: JwaWS2spi.pas,v 1.9 2005/09/06 16:36:50 marquardt Exp $
- unit JwaWS2spi;
- {$WEAKPACKAGEUNIT}
- {$HPPEMIT ''}
- {$HPPEMIT '#include "ws2spi.h"'}
- {$HPPEMIT ''}
- {$I jediapilib.inc}
- interface
- uses
- JwaWindows, JwaWinSock2;
- (*
- * Ensure structures are packed consistently.
- *)
- {$IFDEF _WIN64}
- {$ALIGN OFF}
- {$ELSE}
- {$ALIGN ON}
- {$ENDIF _WIN64}
- const
- WSPDESCRIPTION_LEN = 255;
- {$EXTERNALSYM WSPDESCRIPTION_LEN}
- WSS_OPERATION_IN_PROGRESS = $00000103;
- {$EXTERNALSYM WSS_OPERATION_IN_PROGRESS}
- type
- WSPData = record
- wVersion: WORD;
- wHighVersion: WORD;
- szDescription: array [0..WSPDESCRIPTION_LEN] of WCHAR;
- end;
- {$EXTERNALSYM WSPData}
- LPWSPDATA = ^WSPData;
- {$EXTERNALSYM LPWSPDATA}
- TWSPData = WSPDATA;
- PWSPData = LPWSPDATA;
- _WSATHREADID = record
- ThreadHandle: HANDLE;
- Reserved: DWORD;
- end;
- {$EXTERNALSYM _WSATHREADID}
- WSATHREADID = _WSATHREADID;
- {$EXTERNALSYM WSATHREADID}
- LPWSATHREADID = ^WSATHREADID;
- {$EXTERNALSYM LPWSATHREADID}
- TWSAThreadID = WSATHREADID;
- PWSAThreadID = LPWSATHREADID;
- (*
- * Pointer to a blocking callback. A pointer to a blocking callback is
- * returned from the WPUQueryBlockingCallback() upcall. Note that this
- * function's signature is not identical to an application's blocking
- * hook function.
- *)
- type
- LPBLOCKINGCALLBACK = function(dwContext: DWORD): BOOL; stdcall;
- {$EXTERNALSYM LPBLOCKINGCALLBACK}
- TBlockingCallback = LPBLOCKINGCALLBACK;
- (*
- * Pointer to a user APC function. This is used as a parameter to the
- * WPUQueueUserApc() upcall. Note that this function's signature is not
- * identical to an application's completion routine.
- *)
- LPWSAUSERAPC = procedure(dwContext: DWORD); stdcall;
- {$EXTERNALSYM LPWSAUSERAPC}
- TWsaUserApc = LPWSAUSERAPC;
- (*
- * Pointers to the individual entries in a service provider's proc table.
- *)
- LPWSPACCEPT = function(s: TSocket; addr: PSockAddr; addrlen: PINT;
- lpfnCondition: LPCONDITIONPROC; dwCallbackData: DWORD; var Errno: Integer): TSocket; stdcall;
- {$EXTERNALSYM LPWSPACCEPT}
- TWspAccept = LPWSPACCEPT;
- LPWSPADDRESSTOSTRING = function(lpsaAddress: LPSOCKADDR; dwAddressLength: DWORD;
- lpProtocolInfo: LPWSAPROTOCOL_INFOW; lpszAddressString: LPWSTR;
- var lpdwAddressStringLength: DWORD; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPADDRESSTOSTRING}
- TWspAddressToString = LPWSPADDRESSTOSTRING;
- LPWSPASYNCSELECT = function(s: TSocket; hWnd: HWND; wMsg: u_int; lEvent: Longint; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPASYNCSELECT}
- TWspASyncSelect = LPWSPASYNCSELECT;
- LPWSPBIND = function(s: TSocket; var name: sockaddr; namelen: Integer; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPBIND}
- TWspBind = LPWSPBIND;
- LPWSPCANCELBLOCKINGCALL = function(var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPCANCELBLOCKINGCALL}
- TWspCancelBlockingCall = LPWSPCANCELBLOCKINGCALL;
- LPWSPCLEANUP = function(var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPCLEANUP}
- TWspCleanup = LPWSPCLEANUP;
- LPWSPCLOSESOCKET = function(s: TSocket; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPCLOSESOCKET}
- TWspCloseSocket = LPWSPCLOSESOCKET;
- LPWSPCONNECT = function(s: TSocket; name: PSockAddr; namelen: Integer; lpCallerData: LPWSABUF;
- lpCalleeData: LPWSABUF; lpSQOS: LPQOS; lpGQOS: LPQOS; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPCONNECT}
- TWspConnect = LPWSPCONNECT;
- LPWSPDUPLICATESOCKET = function(s: TSocket; dwProcessId: DWORD; lpProtocolInfo: LPWSAPROTOCOL_INFOW; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPDUPLICATESOCKET}
- TWspDuplicateSocket = LPWSPDUPLICATESOCKET;
- LPWSPENUMNETWORKEVENTS = function(s: TSocket; hEventObject: WSAEVENT; lpNetworkEvents: LPWSANETWORKEVENTS; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPENUMNETWORKEVENTS}
- TWspEnumNetworkEvents = LPWSPENUMNETWORKEVENTS;
- LPWSPEVENTSELECT = function(s: TSocket; hEventObject: WSAEVENT; lNetworkEvents: Longint; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPEVENTSELECT}
- TWspEventSelect = LPWSPEVENTSELECT;
- LPWSPGETOVERLAPPEDRESULT = function(s: TSocket; lpOverlapped: LPWSAOVERLAPPED;
- var lpcbTransfer: DWORD; fWait: BOOL; lpdwFlags: DWORD; var lpErrno: Integer): BOOL; stdcall;
- {$EXTERNALSYM LPWSPGETOVERLAPPEDRESULT}
- TWspGetOverlappedResult = LPWSPGETOVERLAPPEDRESULT;
- LPWSPGETPEERNAME = function(s: TSocket; var name: sockaddr; var namelen, lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPGETPEERNAME}
- TWspGetPeerName = LPWSPGETPEERNAME;
- LPWSPGETSOCKNAME = function(s: TSocket; var name: sockaddr; var namelen, lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPGETSOCKNAME}
- TWspGetSockName = LPWSPGETSOCKNAME;
- LPWSPGETSOCKOPT = function(s: TSocket; level, optname: Integer; optval: PChar; var optlen, lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPGETSOCKOPT}
- TWspGetSockOpt = LPWSPGETSOCKOPT;
- LPWSPGETQOSBYNAME = function(s: TSocket; var lpQOSName: WSABUF; lpQOS: LPQOS; lpErrno: Integer): BOOL; stdcall;
- {$EXTERNALSYM LPWSPGETQOSBYNAME}
- TWspGetQosByName = LPWSPGETQOSBYNAME;
- LPWSPIOCTL = function(s: TSocket; dwIoControlCode: DWORD; lpvInBuffer: LPVOID; cbInBuffer: DWORD;
- lpvOutBuffer: LPVOID; cbOutBuffer: DWORD; var lpcbBytesReturned: DWORD;
- lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE;
- lpThreadId: LPWSATHREADID; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPIOCTL}
- TWspIoctl = LPWSPIOCTL;
- LPWSPJOINLEAF = function(s: TSocket; name: sockaddr; namelen: Integer; lpCallerData: LPWSABUF;
- lpCalleeData: LPWSABUF; lpSQOS, lpGQOS: LPQOS; dwFlags: DWORD; var lpErrno: Integer): TSocket; stdcall;
- {$EXTERNALSYM LPWSPJOINLEAF}
- TWspJoinLeaf = LPWSPJOINLEAF;
- LPWSPLISTEN = function(s: TSocket; backlog: Integer; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPLISTEN}
- TWspListen = LPWSPLISTEN;
- LPWSPRECV = function(s: TSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD;
- var lpNumberOfBytesRecvd, lpFlags: DWORD; lpOverlapped: LPWSAOVERLAPPED;
- lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE; lpThreadId: LPWSATHREADID;
- var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPRECV}
- TWspRecv = LPWSPRECV;
- LPWSPRECVDISCONNECT = function(s: TSocket; lpInboundDisconnectData: LPWSABUF; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPRECVDISCONNECT}
- TWspRecvDisconnect = LPWSPRECVDISCONNECT;
- LPWSPRECVFROM = function(s: TSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD;
- var lpNumberOfBytesRecvd, lpFlags: DWORD; lpFrom: PSockAddr; lpFromlen: PINT;
- lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE;
- lpThreadId: LPWSATHREADID; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPRECVFROM}
- TWspRecvFrom = LPWSPRECVFROM;
- LPWSPSELECT = function(nfds: Integer; readfds, writefds, exceptfds: PFdSet; timeout: PTimeVal; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPSELECT}
- TWspSelect = LPWSPSELECT;
- LPWSPSEND = function(s: TSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD;
- var lpNumberOfBytesSent: DWORD; dwFlags: DWORD; lpOverlapped: LPWSAOVERLAPPED;
- lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE;
- lpThreadId: LPWSATHREADID; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPSEND}
- TWspSend = LPWSPSEND;
- LPWSPSENDDISCONNECT = function(s: TSocket; lpOutboundDisconnectData: LPWSABUF; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPSENDDISCONNECT}
- TWspSendDisconnect = LPWSPSENDDISCONNECT;
- LPWSPSENDTO = function(s: TSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD;
- var lpNumberOfBytesSent: DWORD; dwFlags: DWORD; lpTo: PSockAddr; iTolen: Integer;
- lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE;
- lpThreadId: LPWSATHREADID; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPSENDTO}
- TWspSendTo = LPWSPSENDTO;
- LPWSPSETSOCKOPT = function(s: TSocket; level, optname: Integer; optval: PChar; optlen: Integer; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPSETSOCKOPT}
- TWspSetSockOpt = LPWSPSETSOCKOPT;
- LPWSPSHUTDOWN = function(s: TSocket; how: Integer; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPSHUTDOWN}
- TWspShutdown = LPWSPSHUTDOWN;
- LPWSPSOCKET = function(af, type_, protocol: Integer; lpProtocolInfo: LPWSAPROTOCOL_INFOW;
- g: GROUP; dwFlags: DWORD; var lpErrno: Integer): TSocket; stdcall;
- {$EXTERNALSYM LPWSPSOCKET}
- TWspSocket = LPWSPSOCKET;
- LPWSPSTRINGTOADDRESS = function(AddressString: LPWSTR; AddressFamily: Integer;
- lpProtocolInfo: LPWSAPROTOCOL_INFOW; lpAddress: LPSOCKADDR;
- var lpAddressLength, lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSPSTRINGTOADDRESS}
- TWspStringToAddress = LPWSPSTRINGTOADDRESS;
- (*
- * A service provider proc table. This structure is returned by value
- * from the service provider's WSPStartup() entrypoint.
- *)
- type
- _WSPPROC_TABLE = record
- lpWSPAccept: LPWSPACCEPT;
- lpWSPAddressToString: LPWSPADDRESSTOSTRING;
- lpWSPAsyncSelect: LPWSPASYNCSELECT;
- lpWSPBind: LPWSPBIND;
- lpWSPCancelBlockingCall: LPWSPCANCELBLOCKINGCALL;
- lpWSPCleanup: LPWSPCLEANUP;
- lpWSPCloseSocket: LPWSPCLOSESOCKET;
- lpWSPConnect: LPWSPCONNECT;
- lpWSPDuplicateSocket: LPWSPDUPLICATESOCKET;
- lpWSPEnumNetworkEvents: LPWSPENUMNETWORKEVENTS;
- lpWSPEventSelect: LPWSPEVENTSELECT;
- lpWSPGetOverlappedResult: LPWSPGETOVERLAPPEDRESULT;
- lpWSPGetPeerName: LPWSPGETPEERNAME;
- lpWSPGetSockName: LPWSPGETSOCKNAME;
- lpWSPGetSockOpt: LPWSPGETSOCKOPT;
- lpWSPGetQOSByName: LPWSPGETQOSBYNAME;
- lpWSPIoctl: LPWSPIOCTL;
- lpWSPJoinLeaf: LPWSPJOINLEAF;
- lpWSPListen: LPWSPLISTEN;
- lpWSPRecv: LPWSPRECV;
- lpWSPRecvDisconnect: LPWSPRECVDISCONNECT;
- lpWSPRecvFrom: LPWSPRECVFROM;
- lpWSPSelect: LPWSPSELECT;
- lpWSPSend: LPWSPSEND;
- lpWSPSendDisconnect: LPWSPSENDDISCONNECT;
- lpWSPSendTo: LPWSPSENDTO;
- lpWSPSetSockOpt: LPWSPSETSOCKOPT;
- lpWSPShutdown: LPWSPSHUTDOWN;
- lpWSPSocket: LPWSPSOCKET;
- lpWSPStringToAddress: LPWSPSTRINGTOADDRESS;
- end;
- {$EXTERNALSYM _WSPPROC_TABLE}
- WSPPROC_TABLE = _WSPPROC_TABLE;
- {$EXTERNALSYM WSPPROC_TABLE}
- LPWSPPROC_TABLE = ^WSPPROC_TABLE;
- {$EXTERNALSYM LPWSPPROC_TABLE}
- TWspProcTable = WSPPROC_TABLE;
- PWspProcTable = LPWSPPROC_TABLE;
- (*
- * Pointers to the individual entries in the upcall table.
- *)
- type
- LPWPUCLOSEEVENT = function(hEvent: WSAEVENT; var lpErrno: Integer): BOOL; stdcall;
- {$EXTERNALSYM LPWPUCLOSEEVENT}
- TWpuCloseEvent = LPWPUCLOSEEVENT;
- LPWPUCLOSESOCKETHANDLE = function(s: TSocket; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWPUCLOSESOCKETHANDLE}
- TWpuCloseSocketHandle = LPWPUCLOSESOCKETHANDLE;
- LPWPUCREATEEVENT = function(var lpErrno: Integer): WSAEVENT; stdcall;
- {$EXTERNALSYM LPWPUCREATEEVENT}
- TWpuCreateEvent = LPWPUCREATEEVENT;
- LPWPUCREATESOCKETHANDLE = function(dwCatalogEntryId, dwContext: DWORD;
- var lpErrno: Integer): TSocket; stdcall;
- {$EXTERNALSYM LPWPUCREATESOCKETHANDLE}
- TWpuCreateSocketHandle = LPWPUCREATESOCKETHANDLE;
- LPWPUFDISSET = function(s: TSocket; fdset: PFdSet): Integer; stdcall;
- {$EXTERNALSYM LPWPUFDISSET}
- TWpuFdIsSet = LPWPUFDISSET;
- LPWPUGETPROVIDERPATH = function(const lpProviderId: TGUID;
- lpszProviderDllPath: PWCHAR; var lpProviderDllPathLen, lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWPUGETPROVIDERPATH}
- TWpuGetProviderPath = LPWPUGETPROVIDERPATH;
- LPWPUMODIFYIFSHANDLE = function(dwCatalogEntryId: DWORD; ProposedHandle: TSocket;
- var lpErrno: Integer): TSocket; stdcall;
- {$EXTERNALSYM LPWPUMODIFYIFSHANDLE}
- TWpuMoifyIfsHandle = LPWPUMODIFYIFSHANDLE;
- LPWPUPOSTMESSAGE = function(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): BOOL; stdcall;
- {$EXTERNALSYM LPWPUPOSTMESSAGE}
- TWpuPostMessage = LPWPUPOSTMESSAGE;
- LPWPUQUERYBLOCKINGCALLBACK = function(dwCatalogEntryId: DWORD; var lplpfnCallback: LPBLOCKINGCALLBACK;
- lpdwContext: LPDWORD; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWPUQUERYBLOCKINGCALLBACK}
- TWpuQueryBlockingCallback = LPWPUQUERYBLOCKINGCALLBACK;
- LPWPUQUERYSOCKETHANDLECONTEXT = function(s: TSocket; lpContext: LPDWORD;
- var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWPUQUERYSOCKETHANDLECONTEXT}
- TWpuQuerySocketHandleContext = LPWPUQUERYSOCKETHANDLECONTEXT;
- LPWPUQUEUEAPC = function(lpThreadId: LPWSATHREADID; lpfnUserApc: LPWSAUSERAPC;
- dwContext: DWORD; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWPUQUEUEAPC}
- TWpuQueueApc = LPWPUQUEUEAPC;
- LPWPURESETEVENT = function(hEvent: WSAEVENT; var lpErrno: Integer): BOOL; stdcall;
- {$EXTERNALSYM LPWPURESETEVENT}
- TWpuResetEvent = LPWPURESETEVENT;
- LPWPUSETEVENT = function(hEvent: WSAEVENT; var lpErrno: Integer): BOOL; stdcall;
- {$EXTERNALSYM LPWPUSETEVENT}
- TWpuSetEvent = LPWPUSETEVENT;
- LPWPUOPENCURRENTTHREAD = function(lpThreadId: LPWSATHREADID; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWPUOPENCURRENTTHREAD}
- TWpuOpenCurrentThread = LPWPUOPENCURRENTTHREAD;
- LPWPUCLOSETHREAD = function(lpThreadId: LPWSATHREADID; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWPUCLOSETHREAD}
- TWpuCloseThread = LPWPUCLOSETHREAD;
- // Available only directly from ws2_32.dll
- LPWPUCOMPLETEOVERLAPPEDREQUEST = function(s: TSocket; lpOverlapped: LPWSAOVERLAPPED;
- dwError: DWORD; cbTransferred: DWORD; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWPUCOMPLETEOVERLAPPEDREQUEST}
- TWpuCompleteOverlappedRequest = LPWPUCOMPLETEOVERLAPPEDREQUEST;
- (*
- * The upcall table. This structure is passed by value to the service
- * provider's WSPStartup() entrypoint.
- *)
- _WSPUPCALLTABLE = record
- lpWPUCloseEvent: LPWPUCLOSEEVENT;
- lpWPUCloseSocketHandle: LPWPUCLOSESOCKETHANDLE;
- lpWPUCreateEvent: LPWPUCREATEEVENT;
- lpWPUCreateSocketHandle: LPWPUCREATESOCKETHANDLE;
- lpWPUFDIsSet: LPWPUFDISSET;
- lpWPUGetProviderPath: LPWPUGETPROVIDERPATH;
- lpWPUModifyIFSHandle: LPWPUMODIFYIFSHANDLE;
- lpWPUPostMessage: LPWPUPOSTMESSAGE;
- lpWPUQueryBlockingCallback: LPWPUQUERYBLOCKINGCALLBACK;
- lpWPUQuerySocketHandleContext: LPWPUQUERYSOCKETHANDLECONTEXT;
- lpWPUQueueApc: LPWPUQUEUEAPC;
- lpWPUResetEvent: LPWPURESETEVENT;
- lpWPUSetEvent: LPWPUSETEVENT;
- lpWPUOpenCurrentThread: LPWPUOPENCURRENTTHREAD;
- lpWPUCloseThread: LPWPUCLOSETHREAD;
- end;
- {$EXTERNALSYM _WSPUPCALLTABLE}
- WSPUPCALLTABLE = _WSPUPCALLTABLE;
- {$EXTERNALSYM WSPUPCALLTABLE}
- LPWSPUPCALLTABLE = ^WSPUPCALLTABLE;
- {$EXTERNALSYM LPWSPUPCALLTABLE}
- TWspUpCallTable = WSPUPCALLTABLE;
- PWspUpCallTable = LPWSPUPCALLTABLE;
- (*
- * WinSock 2 SPI socket function prototypes
- *)
- //function WSPStartup(wVersionRequested: WORD; lpWSPData: LPWSPDATA;
- // lpProtocolInfo: LPWSAPROTOCOL_INFOW; UpcallTable: WSPUPCALLTABLE;
- // lpProcTable: LPWSPPROC_TABLE): Integer; stdcall;
- //{$EXTERNALSYM WSPStartup}
- type
- LPWSPSTARTUP = function(wVersionRequested: WORD; lpWSPData: LPWSPDATA;
- lpProtocolInfo: LPWSAPROTOCOL_INFOW; UpcallTable: WSPUPCALLTABLE;
- lpProcTable: LPWSPPROC_TABLE): Integer; stdcall;
- {$EXTERNALSYM LPWSPSTARTUP}
- TWspStartUp = LPWSPSTARTUP;
- (*
- * Installation and configuration entrypoints.
- *)
- function WSCEnumProtocols(lpiProtocols: PINT; lpProtocolBuffer: LPWSAPROTOCOL_INFOW;
- var lpdwBufferLength: DWORD; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM WSCEnumProtocols}
- type
- LPWSCENUMPROTOCOLS = function(lpiProtocols: PINT; lpProtocolBuffer: LPWSAPROTOCOL_INFOW;
- var lpdwBufferLength: DWORD; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSCENUMPROTOCOLS}
- TWscEnumProtocols = LPWSCENUMPROTOCOLS;
- {$IFDEF _WIN64}
- //
- // 64-bit architectures capable of running 32-bit code have
- // separate 64-bit and 32-bit catalogs. API with '32' prefix
- // allow 32 bit catalog manipulations by 64 bit process.
- //
- function WSCEnumProtocols32(lpiProtocols: PINT; lpProtocolBuffer: LPWSAPROTOCOL_INFOW; lpdwBufferLength: LPDWORD; lpErrno: PINT): Integer; stdcall;
- {$EXTERNALSYM WSCEnumProtocols32}
- {$ENDIF _WIN64}
- function WSCDeinstallProvider(const lpProviderId: TGUID; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM WSCDeinstallProvider}
- type
- LPWSCDEINSTALLPROVIDER = function(const lpProviderId: TGUID; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSCDEINSTALLPROVIDER}
- TWscDeinstallProvider = LPWSCDEINSTALLPROVIDER;
- {$IFDEF _WIN64}
- function WSCDeinstallProvider32(lpProviderId: PGUID; lpErrno: PINT): Integer; stdcall;
- {$EXTERNALSYM WSCDeinstallProvider32}
- {$ENDIF _WIN64}
- function WSCInstallProvider(const lpProviderId: TGUID; lpszProviderDllPath: PWCHAR;
- lpProtocolInfoList: LPWSAPROTOCOL_INFOW; dwNumberOfEntries: DWORD; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM WSCInstallProvider}
- type
- LPWSCINSTALLPROVIDER = function(const lpProviderId: TGUID; lpszProviderDllPath: PWCHAR;
- lpProtocolInfoList: LPWSAPROTOCOL_INFOW; dwNumberOfEntries: DWORD; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSCINSTALLPROVIDER}
- TWscInstallProvider = LPWSCINSTALLPROVIDER;
- {$IFDEF _WIN64}
- //
- // This API manipulates 64-bit and 32-bit catalogs simulteneously.
- // It is needed to guarantee the same catalog IDs for provider catalog
- // entries in both 64-bit and 32-bit catalogs.
- //
- function WSCInstallProvider64_32(lpProviderId: PGUID; lpszProviderDllPath: PWCHAR; lpProtocolInfoList: LPWSAPROTOCOL_INFOW;
- dwNumberOfEntries: DWORD; lpErrno: PINT): Integer; stdcall;
- {$EXTERNALSYM WSCInstallProvider64_32}
- {$ENDIF _WIN64}
- function WSCGetProviderPath(const lpProviderId: TGUID; lpszProviderDllPath: PWCHAR;
- var lpProviderDllPathLen, lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM WSCGetProviderPath}
- type
- LPWSCGETPROVIDERPATH = function(const lpProviderId: TGUID; lpszProviderDllPath: PWCHAR;
- var lpProviderDllPathLen, lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM LPWSCGETPROVIDERPATH}
- TWscGetProviderPath = LPWSCGETPROVIDERPATH;
- {$IFDEF _WIN64}
- function WSCGetProviderPath32(lpProviderId: PGUID; lpszProviderDllPath: PWCHAR; lpProviderDllPathLen: PINT; lpErrno: PINT): Integer; stdcall;
- {$EXTERNALSYM WSCGetProviderPath32}
- {$ENDIF _WIN64}
- function WSCUpdateProvider(lpProviderId: PGUID; lpszProviderDllPath: PWCHAR; lpProtocolInfoList: LPWSAPROTOCOL_INFOW;
- dwNumberOfEntries: DWORD; lpErrno: PINT): Integer; stdcall;
- {$EXTERNALSYM WSCUpdateProvider}
- type
- LPWSCUPDATEPROVIDER = function(lpProviderId: PGUID; lpszProviderDllPath: PWCHAR; lpProtocolInfoList: LPWSAPROTOCOL_INFOW;
- dwNumberOfEntries: DWORD; lpErrno: PINT): Integer; stdcall;
- {$EXTERNALSYM LPWSCUPDATEPROVIDER}
- {$IFDEF _WIN64}
- function WSCUpdateProvider32(lpProviderId: PGUID; lpszProviderDllPath: PWCHAR; lpProtocolInfoList: LPWSAPROTOCOL_INFOW;
- dwNumberOfEntries: DWORD; lpErrno: PINT): Integer; stdcall;
- {$EXTERNALSYM WSCUpdateProvider32}
- {$ENDIF _WIN64}
- function WSCInstallQOSTemplate(const Guid: TGUID; QosName: LPWSABUF; Qos: LPQOS): Integer; stdcall;
- {$EXTERNALSYM WSCInstallQOSTemplate}
- type
- LPWSCINSTALLQOSTEMPLATE = function(const Guid: TGUID; QosName: LPWSABUF; Qos: LPQOS): Integer; stdcall;
- {$EXTERNALSYM LPWSCINSTALLQOSTEMPLATE}
- TWscInstallQosTemplate = LPWSCINSTALLQOSTEMPLATE;
- function WSCRemoveQOSTemplate(const Guid: TGUID; QosName: LPWSABUF): Integer; stdcall;
- {$EXTERNALSYM WSCRemoveQOSTemplate}
- type
- LPWSCREMOVEQOSTEMPLATE = function(const Guid: TGUID; QosName: LPWSABUF): Integer; stdcall;
- {$EXTERNALSYM LPWSCREMOVEQOSTEMPLATE}
- TWscRemoveQosTemplate = LPWSCREMOVEQOSTEMPLATE;
- (*
- * The following upcall function prototypes are only used by WinSock 2 DLL and
- * should not be used by any service providers.
- *
- function WPUCloseEvent(hEvent: WSAEVENT; var lpErrno: Integer): BOOL; stdcall;
- {$EXTERNALSYM WPUCloseEvent}
- function WPUCloseSocketHandle(s: TSocket; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM WPUCloseSocketHandle}
- function WPUCreateEvent(var lpErrno: Integer): WSAEVENT; stdcall;
- {$EXTERNALSYM WPUCreateEvent}
- function WPUCreateSocketHandle(dwCatalogEntryId, dwContext: DWORD; var lpErrno: Integer): SOCKET; stdcall;
- {$EXTERNALSYM WPUCreateSocketHandle}
- function WPUFDIsSet(s: TSocket; const fdset: fd_set): Integer; stdcall;
- {$EXTERNALSYM WPUFDIsSet}
- function WPUGetProviderPath(const lpProviderId: TGUID; lpszProviderDllPath: PWCHAR;
- var lpProviderDllPathLen, lpErrno: : Integer): Integer; stdcall;
- {$EXTERNALSYM WPUGetProviderPath}
- function WPUModifyIFSHandle(dwCatalogEntryId: DWORD; ProposedHandle: SOCKET; var lpErrno: Integer): SOCKET; stdcall;
- {$EXTERNALSYM WPUModifyIFSHandle}
- function WPUPostMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): BOOL; stdcall;
- {$EXTERNALSYM WPUPostMessage}
- function WPUQueryBlockingCallback(dwCatalogEntryId: DWORD; var lplpfnCallback: LPBLOCKINGCALLBACK;
- var lpdwContext: DWORD_PTR; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM WPUQueryBlockingCallback}
- function WPUQuerySocketHandleContext(s: SOCKET; var lpContext: DWORD_PTR; lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM WPUQuerySocketHandleContext}
- function WPUQueueApc(lpThreadId: LPWSATHREADID; lpfnUserApc: LPWSAUSERAPC;
- dwContext: DWORD_PTR; var lpErrno: Integer): Integer; stdcall;
- {$EXTERNALSYM WPUQueueApc}
- function WPUResetEvent(hEvent: WSAEVENT; var lpErrno: Integer): BOOL; stcall;
- {$EXTERNALSYM WPUResetEvent}
- function WPUSetEvent(hEvent: WSAEVENT; var lpErrno: Integer): BOOL; stdcall;
- {$EXTERNALSYM WPUSetEvent}
- function WPUCompleteOverlappedRequest(s: SOCKET; lpOverlapped: LPWSAOVERLAPPED;
- dwError, cbTransferred: DWORD; var lpErrno: Integer): Integerl stdcall;
- {$EXTERNALSYM WPUCompleteOverlappedRequest}
- function WPUOpenCurrentThread(lpThreadId: LPWSATHREADID; lpErrno: PINT): Integer; stdcall;
- {$EXTERNALSYM WPUOpenCurrentThread}
- function WPUCloseThread(lpThreadId: LPWSATHREADID; lpErrno: PINT): Integer; stdcall;
- {$EXTERNALSYM WPUCloseThread}
- *)
- (*
- * Installing and uninstalling name space providers.
- *)
- //
- // SPI and API for enumerating name space providers are
- // currently equivalent since there is no concept of a hidden
- // name space provider
- //
- //TODO
- //#define WSCEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
- //#define LPFN_WSCENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
- {$IFDEF _WIN64}
- function WSCEnumNameSpaceProviders32(lpdwBufferLength: LPDWORD; lpnspBuffer: LPWSANAMESPACE_INFOW): Integer; stdcall;
- {$EXTERNALSYM WSCEnumNameSpaceProviders32}
- {$ENDIF _WIN64}
- function WSCInstallNameSpace(lpszIdentifier, lpszPathName: LPWSTR; dwNameSpace,
- dwVersion: DWORD; const lpProviderId: TGUID): Integer; stdcall;
- {$EXTERNALSYM WSCInstallNameSpace}
- type
- LPWSCINSTALLNAMESPACE = function(lpszIdentifier, lpszPathName: LPWSTR;
- dwNameSpace, dwVersion: DWORD; const lpProviderId: TGUID): Integer; stdcall;
- {$EXTERNALSYM LPWSCINSTALLNAMESPACE}
- TWscInstallNamespace = LPWSCINSTALLNAMESPACE;
- {$IFDEF _WIN64}
- function WSCInstallNameSpace32(lpszIdentifier, lpszPathName: LPWSTR; dwNameSpace, dwVersion: DWORD; lpProviderId: PGUID): Integer; stdcall;
- {$EXTERNALSYM WSCInstallNameSpace32}
- {$ENDIF _WIN64}
- function WSCUnInstallNameSpace(const lpProviderId: TGUID): Integer; stdcall;
- {$EXTERNALSYM WSCUnInstallNameSpace}
- type
- LPWSCUNINSTALLNAMESPACE = function(const lpProviderId: TGUID): Integer; stdcall;
- {$EXTERNALSYM LPWSCUNINSTALLNAMESPACE}
- TWscUninstallNamespace = LPWSCUNINSTALLNAMESPACE;
- {$IFDEF _WIN64}
- function WSCUnInstallNameSpace32(lpProviderId: PGUID): Integer; stdcall;
- {$EXTERNALSYM WSCUnInstallNameSpace32}
- {$ENDIF _WIN64}
- function WSCEnableNSProvider(const lpProviderId: TGUID; fEnable: BOOL): Integer; stdcall;
- {$EXTERNALSYM WSCEnableNSProvider}
- type
- LPWSCENABLENSPROVIDER = function(const lpProviderId: TGUID; fEnable: BOOL): Integer; stdcall;
- {$EXTERNALSYM LPWSCENABLENSPROVIDER}
- TWscEnableNsProvider = LPWSCENABLENSPROVIDER;
- {$IFDEF _WIN64}
- function WSCEnableNSProvider32(lpProviderId: PGUID; fEnable: BOOL): Integer; stdcall;
- {$EXTERNALSYM WSCEnableNSProvider32}
- {$ENDIF _WIN64}
- (*
- * Pointers to the individual entries in the namespace proc table.
- *)
- type
- LPNSPCLEANUP = function(const lpProviderId: TGUID): Integer; stdcall;
- {$EXTERNALSYM LPNSPCLEANUP}
- TNspCleanup = LPNSPCLEANUP;
- LPNSPLOOKUPSERVICEBEGIN = function(const lpProviderId: TGUID;
- lpqsRestrictions: LPWSAQUERYSETW; lpServiceClassInfo: LPWSASERVICECLASSINFOW;
- dwControlFlags: DWORD; lphLookup: LPHANDLE): Integer; stdcall;
- {$EXTERNALSYM LPNSPLOOKUPSERVICEBEGIN}
- TNspLookupServiceBegin = LPNSPLOOKUPSERVICEBEGIN;
- LPNSPLOOKUPSERVICENEXT = function(hLookup: HANDLE; dwControlFlags: DWORD;
- lpdwBufferLength: LPDWORD; lpqsResults: LPWSAQUERYSETW): Integer; stdcall;
- {$EXTERNALSYM LPNSPLOOKUPSERVICENEXT}
- TNspLookupServiceNext = LPNSPLOOKUPSERVICENEXT;
- LPNSPIOCTL = function(hLookup: HANDLE; dwControlCode: DWORD; lpvInBuffer: LPVOID;
- cbInBuffer: DWORD; lpvOutBuffer: LPVOID; cbOutBuffer: DWORD; lpcbBytesReturned: LPDWORD;
- lpCompletion: LPWSACOMPLETION; lpThreadId: LPWSATHREADID): Integer; stdcall;
- {$EXTERNALSYM LPNSPIOCTL}
- LPNSPLOOKUPSERVICEEND = function(hLookup: HANDLE): Integer; stdcall;
- {$EXTERNALSYM LPNSPLOOKUPSERVICEEND}
- TNspLookupServiceEnd = LPNSPLOOKUPSERVICEEND;
- LPNSPSETSERVICE = function(const lpProviderId: TGUID;
- lpServiceClassInfo: LPWSASERVICECLASSINFOW; lpqsRegInfo: LPWSAQUERYSETW;
- essOperation: WSAESETSERVICEOP; dwControlFlags: DWORD): Integer; stdcall;
- {$EXTERNALSYM LPNSPSETSERVICE}
- TNspSetService = LPNSPSETSERVICE;
- LPNSPINSTALLSERVICECLASS = function(const lpProviderId: TGUID;
- lpServiceClassInfo: LPWSASERVICECLASSINFOW): Integer; stdcall;
- {$EXTERNALSYM LPNSPINSTALLSERVICECLASS}
- TNspInstallServiceClass = LPNSPINSTALLSERVICECLASS;
- LPNSPREMOVESERVICECLASS = function(const lpProviderId, lpServiceClassId: TGUID): Integer; stdcall;
- {$EXTERNALSYM LPNSPREMOVESERVICECLASS}
- TNspRemoveServiceClass = LPNSPREMOVESERVICECLASS;
- LPNSPGETSERVICECLASSINFO = function(const lpProviderId: TGUID; lpdwBufSize: LPDWORD;
- lpServiceClassInfo: LPWSASERVICECLASSINFOW): Integer; stdcall;
- {$EXTERNALSYM LPNSPGETSERVICECLASSINFO}
- TNspGetServiceClassInfo = LPNSPGETSERVICECLASSINFO;
- (*
- * The name space service provider procedure table.
- *)
- type
- _NSP_ROUTINE = record
- (* Structure version information: *)
- cbSize: DWORD;
- dwMajorVersion: DWORD;
- dwMinorVersion: DWORD;
- (* Procedure-pointer table: *)
- NSPCleanup: LPNSPCLEANUP;
- NSPLookupServiceBegin: LPNSPLOOKUPSERVICEBEGIN;
- NSPLookupServiceNext: LPNSPLOOKUPSERVICENEXT;
- NSPLookupServiceEnd: LPNSPLOOKUPSERVICEEND;
- NSPSetService: LPNSPSETSERVICE;
- NSPInstallServiceClass: LPNSPINSTALLSERVICECLASS;
- NSPRemoveServiceClass: LPNSPREMOVESERVICECLASS;
- NSPGetServiceClassInfo: LPNSPGETSERVICECLASSINFO;
- // These APIs were added later, so must appear here
- // to keep the pointers in the structure in order.
- // Namespaces unaware of these APIs will set cbSize
- // to match the size of FIELD_OFFSET(NSP_ROUTINE, NSPIoctl).
- NSPIoctl: LPNSPIOCTL;
- end;
- {$EXTERNALSYM _NSP_ROUTINE}
- NSP_ROUTINE = _NSP_ROUTINE;
- {$EXTERNALSYM NSP_ROUTINE}
- LPNSP_ROUTINE = ^NSP_ROUTINE;
- {$EXTERNALSYM LPNSP_ROUTINE}
- TNspRoutines = NSP_ROUTINE;
- PNspRoutines = LPNSP_ROUTINE;
- (*
- * Startup procedures.
- *)
- //function NSPStartup(const lpProviderId: TGUID; lpnspRoutines: LPNSP_ROUTINE): Integer; stdcall;
- //{$EXTERNALSYM NSPStartup}
- type
- LPNSPSTARTUP = function(const lpProviderId: TGUID; lpnspRoutines: LPNSP_ROUTINE): Integer; stdcall;
- {$EXTERNALSYM LPNSPSTARTUP}
- TNspStartup = LPNSPSTARTUP;
- implementation
- uses
- JwaWinDLLNames;
- {$IFDEF DYNAMIC_LINK}
- var
- _WSCEnumProtocols: Pointer;
- function WSCEnumProtocols;
- begin
- GetProcedureAddress(_WSCEnumProtocols, ws2_32, 'WSCEnumProtocols');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCEnumProtocols]
- end;
- end;
- {$IFDEF _WIN64}
- var
- _WSCEnumProtocols32: Pointer;
- function WSCEnumProtocols32;
- begin
- GetProcedureAddress(_WSCEnumProtocols32, ws2_32, 'WSCEnumProtocols32');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCEnumProtocols32]
- end;
- end;
- {$ENDIF _WIN64}
- var
- _WSCDeinstallProvider: Pointer;
- function WSCDeinstallProvider;
- begin
- GetProcedureAddress(_WSCDeinstallProvider, ws2_32, 'WSCDeinstallProvider');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCDeinstallProvider]
- end;
- end;
- {$IFDEF _WIN64}
- var
- _WSCDeinstallProvider32: Pointer;
- function WSCDeinstallProvider32;
- begin
- GetProcedureAddress(_WSCDeinstallProvider32, ws2_32, 'WSCDeinstallProvider32');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCDeinstallProvider32]
- end;
- end;
- {$ENDIF _WIN64}
- var
- _WSCInstallProvider: Pointer;
- function WSCInstallProvider;
- begin
- GetProcedureAddress(_WSCInstallProvider, ws2_32, 'WSCInstallProvider');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCInstallProvider]
- end;
- end;
- {$IFDEF _WIN64}
- var
- _WSCInstallProvider64_32: Pointer;
- function WSCInstallProvider64_32;
- begin
- GetProcedureAddress(_WSCInstallProvider64_32, ws2_32, 'WSCInstallProvider64_32');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCInstallProvider64_32]
- end;
- end;
- {$ENDIF _WIN64}
- var
- _WSCGetProviderPath: Pointer;
- function WSCGetProviderPath;
- begin
- GetProcedureAddress(_WSCGetProviderPath, ws2_32, 'WSCGetProviderPath');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCGetProviderPath]
- end;
- end;
- {$IFDEF _WIN64}
- var
- _WSCGetProviderPath32: Pointer;
- function WSCGetProviderPath32;
- begin
- GetProcedureAddress(_WSCGetProviderPath32, ws2_32, 'WSCGetProviderPath32');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCGetProviderPath32]
- end;
- end;
- {$ENDIF _WIN64}
- var
- _WSCUpdateProvider: Pointer;
- function WSCUpdateProvider;
- begin
- GetProcedureAddress(_WSCUpdateProvider, ws2_32, 'WSCUpdateProvider');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCUpdateProvider]
- end;
- end;
- {$IFDEF _WIN64}
- var
- _WSCUpdateProvider32: Pointer;
- function WSCUpdateProvider32;
- begin
- GetProcedureAddress(_WSCUpdateProvider32, ws2_32, 'WSCUpdateProvider32');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCUpdateProvider32]
- end;
- end;
- {$ENDIF _WIN64}
- var
- _WSCInstallQOSTemplate: Pointer;
- function WSCInstallQOSTemplate;
- begin
- GetProcedureAddress(_WSCInstallQOSTemplate, JwaWs2spi.qosname, 'WSCInstallQOSTemplate');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCInstallQOSTemplate]
- end;
- end;
- var
- _WSCRemoveQOSTemplate: Pointer;
- function WSCRemoveQOSTemplate;
- begin
- GetProcedureAddress(_WSCRemoveQOSTemplate, JwaWs2spi.qosname, 'WSCRemoveQOSTemplate');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCRemoveQOSTemplate]
- end;
- end;
- {$IFDEF _WIN64}
- var
- _WSCEnumNameSpaceProviders32: Pointer;
- function WSCEnumNameSpaceProviders32;
- begin
- GetProcedureAddress(_WSCEnumNameSpaceProviders32, ws2_32, 'WSCEnumNameSpaceProviders32');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCEnumNameSpaceProviders32]
- end;
- end;
- {$ENDIF _WIN64}
- var
- _WSCInstallNameSpace: Pointer;
- function WSCInstallNameSpace;
- begin
- GetProcedureAddress(_WSCInstallNameSpace, ws2_32, 'WSCInstallNameSpace');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCInstallNameSpace]
- end;
- end;
- {$IFDEF _WIN64}
- var
- _WSCInstallNameSpace32: Pointer;
- function WSCInstallNameSpace32;
- begin
- GetProcedureAddress(_WSCInstallNameSpace32, ws2_32, 'WSCInstallNameSpace32');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCInstallNameSpace32]
- end;
- end;
- {$ENDIF _WIN64}
- var
- _WSCUnInstallNameSpace: Pointer;
- function WSCUnInstallNameSpace;
- begin
- GetProcedureAddress(_WSCUnInstallNameSpace, ws2_32, 'WSCUnInstallNameSpace');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCUnInstallNameSpace]
- end;
- end;
- {$IFDEF _WIN64}
- var
- _WSCUnInstallNameSpace32: Pointer;
- function WSCUnInstallNameSpace32;
- begin
- GetProcedureAddress(_WSCUnInstallNameSpace32, ws2_32, 'WSCUnInstallNameSpace32');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCUnInstallNameSpace32]
- end;
- end;
- {$ENDIF _WIN64}
- var
- _WSCEnableNSProvider: Pointer;
- function WSCEnableNSProvider;
- begin
- GetProcedureAddress(_WSCEnableNSProvider, ws2_32, 'WSCEnableNSProvider');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCEnableNSProvider]
- end;
- end;
- {$IFDEF _WIN64}
- var
- _WSCEnableNSProvider32: Pointer;
- function WSCEnableNSProvider32;
- begin
- GetProcedureAddress(_WSCEnableNSProvider32, ws2_32, 'WSCEnableNSProvider32');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSCEnableNSProvider32]
- end;
- end;
- {$ENDIF _WIN64}
- {$ELSE}
- function WSCEnumProtocols; external ws2_32 name 'WSCEnumProtocols';
- function WSCDeinstallProvider; external ws2_32 name 'WSCDeinstallProvider';
- function WSCInstallProvider; external ws2_32 name 'WSCInstallProvider';
- function WSCGetProviderPath; external ws2_32 name 'WSCGetProviderPath';
- function WSCUpdateProvider; external ws2_32 name 'WSCUpdateProvider';
- function WSCInstallQOSTemplate; external qosname name 'WSCInstallQOSTemplate';
- function WSCRemoveQOSTemplate; external qosname name 'WSCRemoveQOSTemplate';
- function WSCInstallNameSpace; external ws2_32 name 'WSCInstallNameSpace';
- function WSCUnInstallNameSpace; external ws2_32 name 'WSCUnInstallNameSpace';
- function WSCEnableNSProvider; external ws2_32 name 'WSCEnableNSProvider';
- {$IFDEF _WIN64}
- function WSCEnumProtocols32; external ws2_32 name 'WSCEnumProtocols32';
- function WSCDeinstallProvider32; external ws2_32 name 'WSCDeinstallProvider32';
- function WSCInstallProvider64_32; external ws2_32 name 'WSCInstallProvider64_32';
- function WSCGetProviderPath32; external ws2_32 name 'WSCGetProviderPath32';
- function WSCUpdateProvider32; external ws2_32 name 'WSCUpdateProvider32';
- function WSCEnumNameSpaceProviders32; external ws2_32 name 'WSCEnumNameSpaceProviders32';
- function WSCInstallNameSpace32; external ws2_32 name 'WSCInstallNameSpace32';
- function WSCUnInstallNameSpace32; external ws2_32 name 'WSCUnInstallNameSpace32';
- function WSCEnableNSProvider32; external ws2_32 name 'WSCEnableNSProvider32';
- {$ENDIF _WIN64}
- {$ENDIF DYNAMIC_LINK}
- end.
|