12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199 |
- {******************************************************************************}
- { }
- { Winsock2 Namespace API interface Unit for Object Pascal }
- { }
- { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
- { Corporation. All Rights Reserved. }
- { }
- { The original file is: nspapi.h, released June 2000. The original Pascal }
- { code is: NspApi.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: JwaNspApi.pas,v 1.10 2005/09/06 16:36:50 marquardt Exp $
- unit JwaNspAPI;
- {$WEAKPACKAGEUNIT}
- {$HPPEMIT ''}
- {$HPPEMIT '#include "nspapi.h"'}
- {$HPPEMIT ''}
- {$I jediapilib.inc}
- interface
- uses
- JwaWindows, JwaWinSock2;
- //
- // Service categories
- //
- const
- SERVICE_RESOURCE = $00000001;
- {$EXTERNALSYM SERVICE_RESOURCE}
- SERVICE_SERVICE = $00000002;
- {$EXTERNALSYM SERVICE_SERVICE}
- SERVICE_LOCAL = $00000004;
- {$EXTERNALSYM SERVICE_LOCAL}
- //
- // Operation used when calling SetService()
- //
- SERVICE_REGISTER = $00000001;
- {$EXTERNALSYM SERVICE_REGISTER}
- SERVICE_DEREGISTER = $00000002;
- {$EXTERNALSYM SERVICE_DEREGISTER}
- SERVICE_FLUSH = $00000003;
- {$EXTERNALSYM SERVICE_FLUSH}
- SERVICE_ADD_TYPE = $00000004;
- {$EXTERNALSYM SERVICE_ADD_TYPE}
- SERVICE_DELETE_TYPE = $00000005;
- {$EXTERNALSYM SERVICE_DELETE_TYPE}
- //
- // Flags that affect the operations above
- //
- SERVICE_FLAG_DEFER = $00000001;
- {$EXTERNALSYM SERVICE_FLAG_DEFER}
- SERVICE_FLAG_HARD = $00000002;
- {$EXTERNALSYM SERVICE_FLAG_HARD}
- //
- // Used as input to GetService() for setting the dwProps parameter
- //
- PROP_COMMENT = $00000001;
- {$EXTERNALSYM PROP_COMMENT}
- PROP_LOCALE = $00000002;
- {$EXTERNALSYM PROP_LOCALE}
- PROP_DISPLAY_HINT = $00000004;
- {$EXTERNALSYM PROP_DISPLAY_HINT}
- PROP_VERSION = $00000008;
- {$EXTERNALSYM PROP_VERSION}
- PROP_START_TIME = $00000010;
- {$EXTERNALSYM PROP_START_TIME}
- PROP_MACHINE = $00000020;
- {$EXTERNALSYM PROP_MACHINE}
- PROP_ADDRESSES = $00000100;
- {$EXTERNALSYM PROP_ADDRESSES}
- PROP_SD = $00000200;
- {$EXTERNALSYM PROP_SD}
- PROP_ALL = DWORD($80000000);
- {$EXTERNALSYM PROP_ALL}
- //
- // Flags that describe attributes of Service Addresses
- //
- SERVICE_ADDRESS_FLAG_RPC_CN = $00000001;
- {$EXTERNALSYM SERVICE_ADDRESS_FLAG_RPC_CN}
- SERVICE_ADDRESS_FLAG_RPC_DG = $00000002;
- {$EXTERNALSYM SERVICE_ADDRESS_FLAG_RPC_DG}
- SERVICE_ADDRESS_FLAG_RPC_NB = $00000004;
- {$EXTERNALSYM SERVICE_ADDRESS_FLAG_RPC_NB}
- //
- // Name Spaces
- //
- NS_DEFAULT = 0;
- {$EXTERNALSYM NS_DEFAULT}
- NS_SAP = 1;
- {$EXTERNALSYM NS_SAP}
- NS_NDS = 2;
- {$EXTERNALSYM NS_NDS}
- NS_PEER_BROWSE = 3;
- {$EXTERNALSYM NS_PEER_BROWSE}
- NS_TCPIP_LOCAL = 10;
- {$EXTERNALSYM NS_TCPIP_LOCAL}
- NS_TCPIP_HOSTS = 11;
- {$EXTERNALSYM NS_TCPIP_HOSTS}
- NS_DNS = 12;
- {$EXTERNALSYM NS_DNS}
- NS_NETBT = 13;
- {$EXTERNALSYM NS_NETBT}
- NS_WINS = 14;
- {$EXTERNALSYM NS_WINS}
- NS_NBP = 20;
- {$EXTERNALSYM NS_NBP}
- NS_MS = 30;
- {$EXTERNALSYM NS_MS}
- NS_STDA = 31;
- {$EXTERNALSYM NS_STDA}
- NS_NTDS = 32;
- {$EXTERNALSYM NS_NTDS}
- NS_X500 = 40;
- {$EXTERNALSYM NS_X500}
- NS_NIS = 41;
- {$EXTERNALSYM NS_NIS}
- NS_VNS = 50;
- {$EXTERNALSYM NS_VNS}
- //
- // Name space attributes.
- //
- NSTYPE_HIERARCHICAL = $00000001;
- {$EXTERNALSYM NSTYPE_HIERARCHICAL}
- NSTYPE_DYNAMIC = $00000002;
- {$EXTERNALSYM NSTYPE_DYNAMIC}
- NSTYPE_ENUMERABLE = $00000004;
- {$EXTERNALSYM NSTYPE_ENUMERABLE}
- NSTYPE_WORKGROUP = $00000008;
- {$EXTERNALSYM NSTYPE_WORKGROUP}
- //
- // Transport attributes.
- //
- XP_CONNECTIONLESS = $00000001;
- {$EXTERNALSYM XP_CONNECTIONLESS}
- XP_GUARANTEED_DELIVERY = $00000002;
- {$EXTERNALSYM XP_GUARANTEED_DELIVERY}
- XP_GUARANTEED_ORDER = $00000004;
- {$EXTERNALSYM XP_GUARANTEED_ORDER}
- XP_MESSAGE_ORIENTED = $00000008;
- {$EXTERNALSYM XP_MESSAGE_ORIENTED}
- XP_PSEUDO_STREAM = $00000010;
- {$EXTERNALSYM XP_PSEUDO_STREAM}
- XP_GRACEFUL_CLOSE = $00000020;
- {$EXTERNALSYM XP_GRACEFUL_CLOSE}
- XP_EXPEDITED_DATA = $00000040;
- {$EXTERNALSYM XP_EXPEDITED_DATA}
- XP_CONNECT_DATA = $00000080;
- {$EXTERNALSYM XP_CONNECT_DATA}
- XP_DISCONNECT_DATA = $00000100;
- {$EXTERNALSYM XP_DISCONNECT_DATA}
- XP_SUPPORTS_BROADCAST = $00000200;
- {$EXTERNALSYM XP_SUPPORTS_BROADCAST}
- XP_SUPPORTS_MULTICAST = $00000400;
- {$EXTERNALSYM XP_SUPPORTS_MULTICAST}
- XP_BANDWIDTH_ALLOCATION = $00000800;
- {$EXTERNALSYM XP_BANDWIDTH_ALLOCATION}
- XP_FRAGMENTATION = $00001000;
- {$EXTERNALSYM XP_FRAGMENTATION}
- XP_ENCRYPTS = $00002000;
- {$EXTERNALSYM XP_ENCRYPTS}
- //
- // Resolution flags for GetAddressByName().
- //
- RES_SOFT_SEARCH = $00000001;
- {$EXTERNALSYM RES_SOFT_SEARCH}
- RES_FIND_MULTIPLE = $00000002;
- {$EXTERNALSYM RES_FIND_MULTIPLE}
- RES_SERVICE = $00000004;
- {$EXTERNALSYM RES_SERVICE}
- //
- // Well known value names for Service Types
- //
- SERVICE_TYPE_VALUE_SAPIDA = 'SapId';
- {$EXTERNALSYM SERVICE_TYPE_VALUE_SAPIDA}
- SERVICE_TYPE_VALUE_SAPIDW = WideString('SapId');
- {$EXTERNALSYM SERVICE_TYPE_VALUE_SAPIDW}
- SERVICE_TYPE_VALUE_CONNA = 'ConnectionOriented';
- {$EXTERNALSYM SERVICE_TYPE_VALUE_CONNA}
- SERVICE_TYPE_VALUE_CONNW = WideString('ConnectionOriented');
- {$EXTERNALSYM SERVICE_TYPE_VALUE_CONNW}
- SERVICE_TYPE_VALUE_TCPPORTA = 'TcpPort';
- {$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORTA}
- SERVICE_TYPE_VALUE_TCPPORTW = WideString('TcpPort');
- {$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORTW}
- SERVICE_TYPE_VALUE_UDPPORTA = 'UdpPort';
- {$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORTA}
- SERVICE_TYPE_VALUE_UDPPORTW = WideString('UdpPort');
- {$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORTW}
- {$IFDEF UNICODE}
- SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDW;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_SAPID}
- SERVICE_TYPE_VALUE_CONN = SERVICE_TYPE_VALUE_CONNW;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_CONN}
- SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTW;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORT}
- SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTW;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORT}
- {$ELSE}
- SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDA;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_SAPID}
- SERVICE_TYPE_VALUE_CONN = SERVICE_TYPE_VALUE_CONNA;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_CONN}
- SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTA;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORT}
- SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTA;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORT}
- {$ENDIF UNICODE}
- //
- // status flags returned by SetService
- //
- SET_SERVICE_PARTIAL_SUCCESS = $00000001;
- {$EXTERNALSYM SET_SERVICE_PARTIAL_SUCCESS}
- //
- // Name Space Information
- //
- type
- _NS_INFOA = record
- dwNameSpace: DWORD;
- dwNameSpaceFlags: DWORD;
- lpNameSpace: LPSTR;
- end;
- {$EXTERNALSYM _NS_INFOA}
- NS_INFOA = _NS_INFOA;
- {$EXTERNALSYM NS_INFOA}
- PNS_INFOA = ^NS_INFOA;
- {$EXTERNALSYM PNS_INFOA}
- LPNS_INFOA = ^NS_INFOA;
- {$EXTERNALSYM LPNS_INFOA}
- TNsInfoA = NS_INFOA;
- PNsInfoA = LPNS_INFOA;
- //
- // Name Space Information
- //
- _NS_INFOW = record
- dwNameSpace: DWORD;
- dwNameSpaceFlags: DWORD;
- lpNameSpace: LPWSTR;
- end;
- {$EXTERNALSYM _NS_INFOW}
- NS_INFOW = _NS_INFOW;
- {$EXTERNALSYM NS_INFOW}
- PNS_INFOW = ^NS_INFOW;
- {$EXTERNALSYM PNS_INFOW}
- LPNS_INFOW = ^NS_INFOW;
- {$EXTERNALSYM LPNS_INFOW}
- TNsInfoW = NS_INFOW;
- PNsInfoW = LPNS_INFOW;
- {$IFDEF UNICODE}
- NS_INFO = NS_INFOW;
- {$EXTERNALSYM NS_INFO}
- PNS_INFO = PNS_INFOW;
- {$EXTERNALSYM PNS_INFO}
- LPNS_INFO = LPNS_INFOW;
- {$EXTERNALSYM LPNS_INFO}
- TNsInfo = TNsInfoW;
- PNsInfo = PNsInfoW;
- {$ELSE}
- NS_INFO = NS_INFOA;
- {$EXTERNALSYM NS_INFO}
- PNS_INFO = PNS_INFOA;
- {$EXTERNALSYM PNS_INFO}
- LPNS_INFO = LPNS_INFOA;
- {$EXTERNALSYM LPNS_INFO}
- TNsInfo = TNsInfoA;
- PNsInfo = PNsInfoA;
- {$ENDIF UNICODE}
- //
- // Service Type Values. The structures are used to define named Service
- // Type specific values. This structure is self relative and has no pointers.
- //
- LPSERVICE_TYPE_VALUE = ^SERVICE_TYPE_VALUE;
- {$EXTERNALSYM LPSERVICE_TYPE_VALUE}
- PSERVICE_TYPE_VALUE = ^SERVICE_TYPE_VALUE;
- {$EXTERNALSYM PSERVICE_TYPE_VALUE}
- _SERVICE_TYPE_VALUE = record
- dwNameSpace: DWORD;
- dwValueType: DWORD;
- dwValueSize: DWORD;
- dwValueNameOffset: DWORD;
- dwValueOffset: DWORD;
- end;
- {$EXTERNALSYM _SERVICE_TYPE_VALUE}
- SERVICE_TYPE_VALUE = _SERVICE_TYPE_VALUE;
- {$EXTERNALSYM SERVICE_TYPE_VALUE}
- TServiceTypeValue = SERVICE_TYPE_VALUE;
- PServiceTypeValue = LPSERVICE_TYPE_VALUE;
- //
- // An absolute version of above. This structure does contain pointers.
- //
- LPSERVICE_TYPE_VALUE_ABSA = ^SERVICE_TYPE_VALUE_ABSA;
- {$EXTERNALSYM LPSERVICE_TYPE_VALUE_ABSA}
- PSERVICE_TYPE_VALUE_ABSA = ^SERVICE_TYPE_VALUE_ABSA;
- {$EXTERNALSYM PSERVICE_TYPE_VALUE_ABSA}
- _SERVICE_TYPE_VALUE_ABSA = record
- dwNameSpace: DWORD;
- dwValueType: DWORD;
- dwValueSize: DWORD;
- lpValueName: LPSTR;
- lpValue: LPVOID;
- end;
- {$EXTERNALSYM _SERVICE_TYPE_VALUE_ABSA}
- SERVICE_TYPE_VALUE_ABSA = _SERVICE_TYPE_VALUE_ABSA;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_ABSA}
- TServiceTypeValueAbsA = SERVICE_TYPE_VALUE_ABSA;
- PServiceTypeValueAbsA = LPSERVICE_TYPE_VALUE_ABSA;
- //
- // An absolute version of above. This structure does contain pointers.
- //
- LPSERVICE_TYPE_VALUE_ABSW = ^SERVICE_TYPE_VALUE_ABSW;
- {$EXTERNALSYM LPSERVICE_TYPE_VALUE_ABSW}
- PSERVICE_TYPE_VALUE_ABSW = ^SERVICE_TYPE_VALUE_ABSW;
- {$EXTERNALSYM PSERVICE_TYPE_VALUE_ABSW}
- _SERVICE_TYPE_VALUE_ABSW = record
- dwNameSpace: DWORD;
- dwValueType: DWORD;
- dwValueSize: DWORD;
- lpValueName: LPWSTR;
- lpValue: LPVOID;
- end;
- {$EXTERNALSYM _SERVICE_TYPE_VALUE_ABSW}
- SERVICE_TYPE_VALUE_ABSW = _SERVICE_TYPE_VALUE_ABSW;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_ABSW}
- TServiceTypeValueAbsW = SERVICE_TYPE_VALUE_ABSW;
- PServiceTypeValueAbsW = LPSERVICE_TYPE_VALUE_ABSW;
- {$IFDEF UNICODE}
- SERVICE_TYPE_VALUE_ABS = SERVICE_TYPE_VALUE_ABSW;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_ABS}
- PSERVICE_TYPE_VALUE_ABS = PSERVICE_TYPE_VALUE_ABSW;
- {$EXTERNALSYM PSERVICE_TYPE_VALUE_ABS}
- LPSERVICE_TYPE_VALUE_ABS = LPSERVICE_TYPE_VALUE_ABSW;
- {$EXTERNALSYM LPSERVICE_TYPE_VALUE_ABS}
- TServiceTypeValueAbs = TServiceTypeValueAbsW;
- PServiceTypeValueAbs = PServiceTypeValueAbsW;
- {$ELSE}
- SERVICE_TYPE_VALUE_ABS = SERVICE_TYPE_VALUE_ABSA;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_ABS}
- PSERVICE_TYPE_VALUE_ABS = PSERVICE_TYPE_VALUE_ABSA;
- {$EXTERNALSYM PSERVICE_TYPE_VALUE_ABS}
- LPSERVICE_TYPE_VALUE_ABS = LPSERVICE_TYPE_VALUE_ABSA;
- {$EXTERNALSYM LPSERVICE_TYPE_VALUE_ABS}
- TServiceTypeValueAbs = TServiceTypeValueAbsA;
- PServiceTypeValueAbs = PServiceTypeValueAbsA;
- {$ENDIF UNICODE}
- //
- // Service Type Information. Contains the name of the Service Type and
- // and an array of SERVICE_NS_TYPE_VALUE structures. This structure is self
- // relative and has no pointers in it.
- //
- LPSERVICE_TYPE_INFO = ^SERVICE_TYPE_INFO;
- {$EXTERNALSYM LPSERVICE_TYPE_INFO}
- PSERVICE_TYPE_INFO = ^SERVICE_TYPE_INFO;
- {$EXTERNALSYM PSERVICE_TYPE_INFO}
- _SERVICE_TYPE_INFO = record
- dwTypeNameOffset: DWORD;
- dwValueCount: DWORD;
- Values: array [0..0] of SERVICE_TYPE_VALUE;
- end;
- {$EXTERNALSYM _SERVICE_TYPE_INFO}
- SERVICE_TYPE_INFO = _SERVICE_TYPE_INFO;
- {$EXTERNALSYM SERVICE_TYPE_INFO}
- TServiceTypeInfo = SERVICE_TYPE_INFO;
- PServiceTypeInfo = LPSERVICE_TYPE_INFO;
- LPSERVICE_TYPE_INFO_ABSA = ^SERVICE_TYPE_INFO_ABSA;
- {$EXTERNALSYM LPSERVICE_TYPE_INFO_ABSA}
- PSERVICE_TYPE_INFO_ABSA = ^SERVICE_TYPE_INFO_ABSA;
- {$EXTERNALSYM PSERVICE_TYPE_INFO_ABSA}
- _SERVICE_TYPE_INFO_ABSA = record
- lpTypeName: LPSTR;
- dwValueCount: DWORD;
- Values: array [0..0] of SERVICE_TYPE_VALUE_ABSA;
- end;
- {$EXTERNALSYM _SERVICE_TYPE_INFO_ABSA}
- SERVICE_TYPE_INFO_ABSA = _SERVICE_TYPE_INFO_ABSA;
- {$EXTERNALSYM SERVICE_TYPE_INFO_ABSA}
- TServiceTypeInfoAbsA = SERVICE_TYPE_INFO_ABSA;
- PServiceTypeInfoAbsA = PSERVICE_TYPE_INFO_ABSA;
- LPSERVICE_TYPE_INFO_ABSW = ^SERVICE_TYPE_INFO_ABSW;
- {$EXTERNALSYM LPSERVICE_TYPE_INFO_ABSW}
- PSERVICE_TYPE_INFO_ABSW = ^SERVICE_TYPE_INFO_ABSW;
- {$EXTERNALSYM PSERVICE_TYPE_INFO_ABSW}
- _SERVICE_TYPE_INFO_ABSW = record
- lpTypeName: LPWSTR;
- dwValueCount: DWORD;
- Values: array [0..0] of SERVICE_TYPE_VALUE_ABSW;
- end;
- {$EXTERNALSYM _SERVICE_TYPE_INFO_ABSW}
- SERVICE_TYPE_INFO_ABSW = _SERVICE_TYPE_INFO_ABSW;
- {$EXTERNALSYM SERVICE_TYPE_INFO_ABSW}
- TServiceTypeInfoAbsW = SERVICE_TYPE_INFO_ABSW;
- PServiceTypeInfoAbsW = LPSERVICE_TYPE_INFO_ABSW;
- {$IFDEF UNICODE}
- SERVICE_TYPE_INFO_ABS = SERVICE_TYPE_INFO_ABSW;
- {$EXTERNALSYM SERVICE_TYPE_INFO_ABS}
- PSERVICE_TYPE_INFO_ABS = PSERVICE_TYPE_INFO_ABSW;
- {$EXTERNALSYM PSERVICE_TYPE_INFO_ABS}
- LPSERVICE_TYPE_INFO_ABS = LPSERVICE_TYPE_INFO_ABSW;
- {$EXTERNALSYM LPSERVICE_TYPE_INFO_ABS}
- TServiceTypeInfoAbs = TServiceTypeInfoAbsW;
- PServiceTypeInfoAbs = PServiceTypeInfoAbsW;
- {$ELSE}
- SERVICE_TYPE_INFO_ABS = SERVICE_TYPE_INFO_ABSA;
- {$EXTERNALSYM SERVICE_TYPE_INFO_ABS}
- PSERVICE_TYPE_INFO_ABS = PSERVICE_TYPE_INFO_ABSA;
- {$EXTERNALSYM PSERVICE_TYPE_INFO_ABS}
- LPSERVICE_TYPE_INFO_ABS = LPSERVICE_TYPE_INFO_ABSA;
- {$EXTERNALSYM LPSERVICE_TYPE_INFO_ABS}
- TServiceTypeInfoAbs = TServiceTypeInfoAbsA;
- PServiceTypeInfoAbs = PServiceTypeInfoAbsA;
- {$ENDIF UNICODE}
- //
- // A Single Address definition.
- //
- LPSERVICE_ADDRESS = ^SERVICE_ADDRESS;
- {$EXTERNALSYM LPSERVICE_ADDRESS}
- PSERVICE_ADDRESS = ^SERVICE_ADDRESS;
- {$EXTERNALSYM PSERVICE_ADDRESS}
- _SERVICE_ADDRESS = record
- dwAddressType: DWORD;
- dwAddressFlags: DWORD;
- dwAddressLength: DWORD;
- dwPrincipalLength: DWORD;
- lpAddress: LPBYTE;
- lpPrincipal: LPBYTE;
- end;
- {$EXTERNALSYM _SERVICE_ADDRESS}
- SERVICE_ADDRESS = _SERVICE_ADDRESS;
- {$EXTERNALSYM SERVICE_ADDRESS}
- TServiceAddress = SERVICE_ADDRESS;
- PServiceAddress = LPSERVICE_ADDRESS;
- //
- // Addresses used by the service. Contains array of SERVICE_ADDRESS.
- //
- LPSERVICE_ADDRESSES = ^SERVICE_ADDRESSES;
- {$EXTERNALSYM LPSERVICE_ADDRESSES}
- PSERVICE_ADDRESSES = ^SERVICE_ADDRESSES;
- {$EXTERNALSYM PSERVICE_ADDRESSES}
- _SERVICE_ADDRESSES = record
- dwAddressCount: DWORD;
- Addresses: array [0..0] of SERVICE_ADDRESS;
- end;
- {$EXTERNALSYM _SERVICE_ADDRESSES}
- SERVICE_ADDRESSES = _SERVICE_ADDRESSES;
- {$EXTERNALSYM SERVICE_ADDRESSES}
- TServiceAddresses = SERVICE_ADDRESSES;
- PServiceAddresses = PSERVICE_ADDRESSES;
- //
- // Service Information.
- //
- LPSERVICE_INFOA = ^SERVICE_INFOA;
- {$EXTERNALSYM LPSERVICE_INFOA}
- PSERVICE_INFOA = ^SERVICE_INFOA;
- {$EXTERNALSYM PSERVICE_INFOA}
- _SERVICE_INFOA = record
- lpServiceType: PGUID;
- lpServiceName: LPSTR;
- lpComment: LPSTR;
- lpLocale: LPSTR;
- dwDisplayHint: DWORD;
- dwVersion: DWORD;
- dwTime: DWORD;
- lpMachineName: LPSTR;
- lpServiceAddress: LPSERVICE_ADDRESSES;
- ServiceSpecificInfo: BLOB;
- end;
- {$EXTERNALSYM _SERVICE_INFOA}
- SERVICE_INFOA = _SERVICE_INFOA;
- {$EXTERNALSYM SERVICE_INFOA}
- TServiceInfoA = SERVICE_INFOA;
- PServiceInfoA = PSERVICE_INFOA;
- //
- // Service Information.
- //
- LPSERVICE_INFOW = ^SERVICE_INFOW;
- {$EXTERNALSYM LPSERVICE_INFOW}
- PSERVICE_INFOW = ^SERVICE_INFOW;
- {$EXTERNALSYM PSERVICE_INFOW}
- _SERVICE_INFOW = record
- lpServiceType: PGUID;
- lpServiceName: LPWSTR;
- lpComment: LPWSTR;
- lpLocale: LPWSTR;
- dwDisplayHint: DWORD;
- dwVersion: DWORD;
- dwTime: DWORD;
- lpMachineName: LPWSTR;
- lpServiceAddress: LPSERVICE_ADDRESSES;
- ServiceSpecificInfo: BLOB;
- end;
- {$EXTERNALSYM _SERVICE_INFOW}
- SERVICE_INFOW = _SERVICE_INFOW;
- {$EXTERNALSYM SERVICE_INFOW}
- TServiceInfoW = SERVICE_INFOW;
- PServiceInfoW = PSERVICE_INFOW;
- {$IFDEF UNICODE}
- SERVICE_INFO = SERVICE_INFOW;
- {$EXTERNALSYM SERVICE_INFO}
- PSERVICE_INFO = PSERVICE_INFOW;
- {$EXTERNALSYM PSERVICE_INFO}
- LPSERVICE_INFO = LPSERVICE_INFOW;
- {$EXTERNALSYM LPSERVICE_INFO}
- TServiceInfo = TServiceInfoW;
- PServiceInfo = PServiceInfoW;
- {$ELSE}
- SERVICE_INFO = SERVICE_INFOA;
- {$EXTERNALSYM SERVICE_INFO}
- PSERVICE_INFO = PSERVICE_INFOA;
- {$EXTERNALSYM PSERVICE_INFO}
- LPSERVICE_INFO = LPSERVICE_INFOA;
- {$EXTERNALSYM LPSERVICE_INFO}
- TServiceInfo = TServiceInfoA;
- PServiceInfo = PServiceInfoA;
- {$ENDIF UNICODE}
- //
- // Name Space & Service Information
- //
- LPNS_SERVICE_INFOA = ^NS_SERVICE_INFOA;
- {$EXTERNALSYM LPNS_SERVICE_INFOA}
- PNS_SERVICE_INFOA = ^NS_SERVICE_INFOA;
- {$EXTERNALSYM PNS_SERVICE_INFOA}
- _NS_SERVICE_INFOA = record
- dwNameSpace: DWORD;
- ServiceInfo: SERVICE_INFOA;
- end;
- {$EXTERNALSYM _NS_SERVICE_INFOA}
- NS_SERVICE_INFOA = _NS_SERVICE_INFOA;
- {$EXTERNALSYM NS_SERVICE_INFOA}
- TNsServiceInfoA = NS_SERVICE_INFOA;
- PNsServiceInfoA = LPNS_SERVICE_INFOA;
- //
- // Name Space & Service Information
- //
- LPNS_SERVICE_INFOW = ^NS_SERVICE_INFOW;
- {$EXTERNALSYM LPNS_SERVICE_INFOW}
- PNS_SERVICE_INFOW = ^NS_SERVICE_INFOW;
- {$EXTERNALSYM PNS_SERVICE_INFOW}
- _NS_SERVICE_INFOW = record
- dwNameSpace: DWORD;
- ServiceInfo: SERVICE_INFOW;
- end;
- {$EXTERNALSYM _NS_SERVICE_INFOW}
- NS_SERVICE_INFOW = _NS_SERVICE_INFOW;
- {$EXTERNALSYM NS_SERVICE_INFOW}
- TNsServiceInfoW = NS_SERVICE_INFOW;
- PNsServiceInfoW = LPNS_SERVICE_INFOW;
- {$IFDEF UNICODE}
- NS_SERVICE_INFO = NS_SERVICE_INFOW;
- {$EXTERNALSYM NS_SERVICE_INFO}
- PNS_SERVICE_INFO = PNS_SERVICE_INFOW;
- {$EXTERNALSYM PNS_SERVICE_INFO}
- LPNS_SERVICE_INFO = LPNS_SERVICE_INFOW;
- {$EXTERNALSYM LPNS_SERVICE_INFO}
- TNsServiceInfo = TNsServiceInfoW;
- PNsServiceInfo = PNsServiceInfoW;
- {$ELSE}
- NS_SERVICE_INFO = NS_SERVICE_INFOA;
- {$EXTERNALSYM NS_SERVICE_INFO}
- PNS_SERVICE_INFO = PNS_SERVICE_INFOA;
- {$EXTERNALSYM PNS_SERVICE_INFO}
- LPNS_SERVICE_INFO = LPNS_SERVICE_INFOA;
- {$EXTERNALSYM LPNS_SERVICE_INFO}
- TNsServiceInfo = TNsServiceInfoA;
- PNsServiceInfo = PNsServiceInfoA;
- {$ENDIF UNICODE}
- //
- // SockAddr Information
- //
- LPSOCKET_ADDRESS = ^SOCKET_ADDRESS;
- {$EXTERNALSYM LPSOCKET_ADDRESS}
- PSOCKET_ADDRESS = ^SOCKET_ADDRESS;
- {$EXTERNALSYM PSOCKET_ADDRESS}
- _SOCKET_ADDRESS = record
- lpSockaddr: LPSOCKADDR;
- iSockaddrLength: Integer;
- end;
- {$EXTERNALSYM _SOCKET_ADDRESS}
- SOCKET_ADDRESS = _SOCKET_ADDRESS;
- {$EXTERNALSYM SOCKET_ADDRESS}
- TSocketAddress = SOCKET_ADDRESS;
- PSocketAddress = PSOCKET_ADDRESS;
- //
- // CSAddr Information
- //
- LPCSADDR_INFO = ^CSADDR_INFO;
- {$EXTERNALSYM LPCSADDR_INFO}
- PCSADDR_INFO = ^CSADDR_INFO;
- {$EXTERNALSYM PCSADDR_INFO}
- _CSADDR_INFO = record
- LocalAddr: SOCKET_ADDRESS;
- RemoteAddr: SOCKET_ADDRESS;
- iSocketType: Integer;
- iProtocol: Integer;
- end;
- {$EXTERNALSYM _CSADDR_INFO}
- CSADDR_INFO = _CSADDR_INFO;
- {$EXTERNALSYM CSADDR_INFO}
- TCsAddrInfo = CSADDR_INFO;
- PCsAddrInfo = LPCSADDR_INFO;
- //
- // Protocol Information
- //
- LPPROTOCOL_INFOA = ^PROTOCOL_INFOA;
- {$EXTERNALSYM LPPROTOCOL_INFOA}
- PPROTOCOL_INFOA = ^PROTOCOL_INFOA;
- {$EXTERNALSYM PPROTOCOL_INFOA}
- _PROTOCOL_INFOA = record
- dwServiceFlags: DWORD;
- iAddressFamily: Integer;
- iMaxSockAddr: Integer;
- iMinSockAddr: Integer;
- iSocketType: Integer;
- iProtocol: Integer;
- dwMessageSize: DWORD;
- lpProtocol: LPSTR;
- end;
- {$EXTERNALSYM _PROTOCOL_INFOA}
- PROTOCOL_INFOA = _PROTOCOL_INFOA;
- {$EXTERNALSYM PROTOCOL_INFOA}
- TProtocolInfoA = PROTOCOL_INFOA;
- PProtocolInfoA = LPPROTOCOL_INFOA;
- //
- // Protocol Information
- //
- LPPROTOCOL_INFOW = ^PROTOCOL_INFOW;
- {$EXTERNALSYM LPPROTOCOL_INFOW}
- PPROTOCOL_INFOW = ^PROTOCOL_INFOW;
- {$EXTERNALSYM PPROTOCOL_INFOW}
- _PROTOCOL_INFOW = record
- dwServiceFlags: DWORD;
- iAddressFamily: Integer;
- iMaxSockAddr: Integer;
- iMinSockAddr: Integer;
- iSocketType: Integer;
- iProtocol: Integer;
- dwMessageSize: DWORD;
- lpProtocol: LPWSTR;
- end;
- {$EXTERNALSYM _PROTOCOL_INFOW}
- PROTOCOL_INFOW = _PROTOCOL_INFOW;
- {$EXTERNALSYM PROTOCOL_INFOW}
- TProtocolInfoW = PROTOCOL_INFOW;
- PProtocolInfoW = LPPROTOCOL_INFOW;
- {$IFDEF UNICODE}
- PROTOCOL_INFO = PROTOCOL_INFOW;
- {$EXTERNALSYM PROTOCOL_INFO}
- PPROTOCOL_INFO = PPROTOCOL_INFOW;
- {$EXTERNALSYM PPROTOCOL_INFO}
- LPPROTOCOL_INFO = LPPROTOCOL_INFOW;
- {$EXTERNALSYM LPPROTOCOL_INFO}
- TProtocolInfo = TProtocolInfoW;
- PProtocolInfo = PProtocolInfoW;
- {$ELSE}
- PROTOCOL_INFO = PROTOCOL_INFOA;
- {$EXTERNALSYM PROTOCOL_INFO}
- PPROTOCOL_INFO = PPROTOCOL_INFOA;
- {$EXTERNALSYM PPROTOCOL_INFO}
- LPPROTOCOL_INFO = LPPROTOCOL_INFOA;
- {$EXTERNALSYM LPPROTOCOL_INFO}
- TProtocolInfo = TProtocolInfoA;
- PProtocolInfo = PProtocolInfoA;
- {$ENDIF UNICODE}
- //
- // NETRESOURCE2 Structure
- //
- LPNETRESOURCE2A = ^NETRESOURCE2A;
- {$EXTERNALSYM LPNETRESOURCE2A}
- PNETRESOURCE2A = ^NETRESOURCE2A;
- {$EXTERNALSYM PNETRESOURCE2A}
- _NETRESOURCE2A = record
- dwScope: DWORD;
- dwType: DWORD;
- dwUsage: DWORD;
- dwDisplayType: DWORD;
- lpLocalName: LPSTR;
- lpRemoteName: LPSTR;
- lpComment: LPSTR;
- ns_info: NS_INFO;
- ServiceType: TGUID;
- dwProtocols: DWORD;
- lpiProtocols: PINT;
- end;
- {$EXTERNALSYM _NETRESOURCE2A}
- NETRESOURCE2A = _NETRESOURCE2A;
- {$EXTERNALSYM NETRESOURCE2A}
- TNetResource2A = NETRESOURCE2A;
- //
- // NETRESOURCE2 Structure
- //
- LPNETRESOURCE2W = ^NETRESOURCE2W;
- {$EXTERNALSYM LPNETRESOURCE2W}
- PNETRESOURCE2W = ^NETRESOURCE2W;
- {$EXTERNALSYM PNETRESOURCE2W}
- _NETRESOURCE2W = record
- dwScope: DWORD;
- dwType: DWORD;
- dwUsage: DWORD;
- dwDisplayType: DWORD;
- lpLocalName: LPWSTR;
- lpRemoteName: LPWSTR;
- lpComment: LPWSTR;
- ns_info: NS_INFO;
- ServiceType: TGUID;
- dwProtocols: DWORD;
- lpiProtocols: PINT;
- end;
- {$EXTERNALSYM _NETRESOURCE2W}
- NETRESOURCE2W = _NETRESOURCE2W;
- {$EXTERNALSYM NETRESOURCE2W}
- TNetResource2W = NETRESOURCE2W;
- {$IFDEF UNICODE}
- NETRESOURCE2 = NETRESOURCE2W;
- {$EXTERNALSYM NETRESOURCE2}
- PNETRESOURCE2 = PNETRESOURCE2W;
- {$EXTERNALSYM PNETRESOURCE2}
- LPNETRESOURCE2 = LPNETRESOURCE2W;
- {$EXTERNALSYM LPNETRESOURCE2}
- TNetResource2 = TNetResource2W;
- {$ELSE}
- NETRESOURCE2 = NETRESOURCE2A;
- {$EXTERNALSYM NETRESOURCE2}
- PNETRESOURCE2 = PNETRESOURCE2A;
- {$EXTERNALSYM PNETRESOURCE2}
- LPNETRESOURCE2 = LPNETRESOURCE2A;
- {$EXTERNALSYM LPNETRESOURCE2}
- TNetResource2 = TNetResource2A;
- {$ENDIF UNICODE}
- LPFN_NSPAPI = function: DWORD; stdcall;
- {$EXTERNALSYM LPFN_NSPAPI}
- TFnNspApi = LPFN_NSPAPI;
- //
- // Structures for using the service routines asynchronously.
- //
- type
- LPSERVICE_CALLBACK_PROC = procedure(lParam: LPARAM; hAsyncTaskHandle: HANDLE); stdcall;
- {$EXTERNALSYM LPSERVICE_CALLBACK_PROC}
- TServiceCallbackProc = LPSERVICE_CALLBACK_PROC;
- type
- LPSERVICE_ASYNC_INFO = ^SERVICE_ASYNC_INFO;
- {$EXTERNALSYM LPSERVICE_ASYNC_INFO}
- PSERVICE_ASYNC_INFO = ^SERVICE_ASYNC_INFO;
- {$EXTERNALSYM PSERVICE_ASYNC_INFO}
- _SERVICE_ASYNC_INFO = record
- lpServiceCallbackProc: LPSERVICE_CALLBACK_PROC;
- lParam: LPARAM;
- hAsyncTaskHandle: HANDLE;
- end;
- {$EXTERNALSYM _SERVICE_ASYNC_INFO}
- SERVICE_ASYNC_INFO = _SERVICE_ASYNC_INFO;
- {$EXTERNALSYM SERVICE_ASYNC_INFO}
- TServiceAsyncInfo = SERVICE_ASYNC_INFO;
- PServiceAsyncInfo = LPSERVICE_ASYNC_INFO;
- //
- // Public NSP API prototypes.
- //
- function EnumProtocolsA(lpiProtocols: PINT; lpProtocolBuffer: LPVOID; lpdwBufferLength: LPDWORD): Integer; stdcall;
- {$EXTERNALSYM EnumProtocolsA}
- function EnumProtocolsW(lpiProtocols: PINT; lpProtocolBuffer: LPVOID; lpdwBufferLength: LPDWORD): Integer; stdcall;
- {$EXTERNALSYM EnumProtocolsW}
- function EnumProtocols(lpiProtocols: PINT; lpProtocolBuffer: LPVOID; lpdwBufferLength: LPDWORD): Integer; stdcall;
- {$EXTERNALSYM EnumProtocols}
- function GetAddressByNameA(dwNameSpace: DWORD; const lpServiceType: TGUID;
- lpServiceName: LPSTR; lpiProtocols: PINT; dwResolution: DWORD;
- lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO; lpCsaddrBuffer: LPVOID;
- var lpdwBufferLength: DWORD; lpAliasBuffer: LPSTR; lpdwAliasBufferLength: LPDWORD): Integer; stdcall;
- {$EXTERNALSYM GetAddressByNameA}
- function GetAddressByNameW(dwNameSpace: DWORD; const lpServiceType: TGUID;
- lpServiceName: LPWSTR; lpiProtocols: PINT; dwResolution: DWORD;
- lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO; lpCsaddrBuffer: LPVOID;
- var lpdwBufferLength: DWORD; lpAliasBuffer: LPWSTR; lpdwAliasBufferLength: LPDWORD): Integer; stdcall;
- {$EXTERNALSYM GetAddressByNameW}
- function GetAddressByName(dwNameSpace: DWORD; const lpServiceType: TGUID;
- lpServiceName: LPTSTR; lpiProtocols: PINT; dwResolution: DWORD;
- lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO; lpCsaddrBuffer: LPVOID;
- var lpdwBufferLength: DWORD; lpAliasBuffer: LPTSTR; lpdwAliasBufferLength: LPDWORD): Integer; stdcall;
- {$EXTERNALSYM GetAddressByName}
- function GetTypeByNameA(lpServiceName: LPSTR; var lpServiceType: TGUID): Integer; stdcall;
- {$EXTERNALSYM GetTypeByNameA}
- function GetTypeByNameW(lpServiceName: LPWSTR; var lpServiceType: TGUID): Integer; stdcall;
- {$EXTERNALSYM GetTypeByNameW}
- function GetTypeByName(lpServiceName: LPTSTR; var lpServiceType: TGUID): Integer; stdcall;
- {$EXTERNALSYM GetTypeByName}
- function GetNameByTypeA(const lpServiceType: TGUID; lpServiceName: LPSTR; dwNameLength: DWORD): Integer; stdcall;
- {$EXTERNALSYM GetNameByTypeA}
- function GetNameByTypeW(const lpServiceType: TGUID; lpServiceName: LPWSTR; dwNameLength: DWORD): Integer; stdcall;
- {$EXTERNALSYM GetNameByTypeW}
- function GetNameByType(const lpServiceType: TGUID; lpServiceName: LPTSTR; dwNameLength: DWORD): Integer; stdcall;
- {$EXTERNALSYM GetNameByType}
- function SetServiceA(dwNameSpace, dwOperation, dwFlags: DWORD;
- const lpServiceInfo: SERVICE_INFOA; lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO;
- var lpdwStatusFlags: DWORD): Integer; stdcall;
- {$EXTERNALSYM SetServiceA}
- function SetServiceW(dwNameSpace, dwOperation, dwFlags: DWORD;
- const lpServiceInfo: SERVICE_INFOW; lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO;
- var lpdwStatusFlags: DWORD): Integer; stdcall;
- {$EXTERNALSYM SetServiceW}
- function SetService(dwNameSpace, dwOperation, dwFlags: DWORD;
- const lpServiceInfo: SERVICE_INFO; lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO;
- var lpdwStatusFlags: DWORD): Integer; stdcall;
- {$EXTERNALSYM SetService}
- function GetServiceA(dwNameSpace: DWORD; const lpGuid: TGUID; lpServiceName: LPSTR;
- dwProperties: DWORD; lpBuffer: LPVOID; var lpdwBufferSize: DWORD;
- lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO): Integer; stdcall;
- {$EXTERNALSYM GetServiceA}
- function GetServiceW(dwNameSpace: DWORD; const lpGuid: TGUID; lpServiceName: LPWSTR;
- dwProperties: DWORD; lpBuffer: LPVOID; var lpdwBufferSize: DWORD;
- lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO): Integer; stdcall;
- {$EXTERNALSYM GetServiceW}
- function GetService(dwNameSpace: DWORD; const lpGuid: TGUID; lpServiceName: LPTSTR;
- dwProperties: DWORD; lpBuffer: LPVOID; var lpdwBufferSize: DWORD;
- lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO): Integer; stdcall;
- {$EXTERNALSYM GetService}
- implementation
- uses
- JwaWinDLLNames;
- {$IFDEF DYNAMIC_LINK}
- var
- _EnumProtocolsA: Pointer;
- function EnumProtocolsA;
- begin
- GetProcedureAddress(_EnumProtocolsA, nsplib, 'EnumProtocolsA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_EnumProtocolsA]
- end;
- end;
- var
- _EnumProtocolsW: Pointer;
- function EnumProtocolsW;
- begin
- GetProcedureAddress(_EnumProtocolsW, nsplib, 'EnumProtocolsW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_EnumProtocolsW]
- end;
- end;
- var
- _EnumProtocols: Pointer;
- function EnumProtocols;
- begin
- GetProcedureAddress(_EnumProtocols, nsplib, 'EnumProtocols' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_EnumProtocols]
- end;
- end;
- var
- _GetAddressByNameA: Pointer;
- function GetAddressByNameA;
- begin
- GetProcedureAddress(_GetAddressByNameA, nsplib, 'GetAddressByNameA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_GetAddressByNameA]
- end;
- end;
- var
- _GetAddressByNameW: Pointer;
- function GetAddressByNameW;
- begin
- GetProcedureAddress(_GetAddressByNameW, nsplib, 'GetAddressByNameW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_GetAddressByNameW]
- end;
- end;
- var
- _GetAddressByName: Pointer;
- function GetAddressByName;
- begin
- GetProcedureAddress(_GetAddressByName, nsplib, 'GetAddressByName' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_GetAddressByName]
- end;
- end;
- var
- _GetTypeByNameA: Pointer;
- function GetTypeByNameA;
- begin
- GetProcedureAddress(_GetTypeByNameA, nsplib, 'GetTypeByNameA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_GetTypeByNameA]
- end;
- end;
- var
- _GetTypeByNameW: Pointer;
- function GetTypeByNameW;
- begin
- GetProcedureAddress(_GetTypeByNameW, nsplib, 'GetTypeByNameW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_GetTypeByNameW]
- end;
- end;
- var
- _GetTypeByName: Pointer;
- function GetTypeByName;
- begin
- GetProcedureAddress(_GetTypeByName, nsplib, 'GetTypeByName' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_GetTypeByName]
- end;
- end;
- var
- _GetNameByTypeA: Pointer;
- function GetNameByTypeA;
- begin
- GetProcedureAddress(_GetNameByTypeA, nsplib, 'GetNameByTypeA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_GetNameByTypeA]
- end;
- end;
- var
- _GetNameByTypeW: Pointer;
- function GetNameByTypeW;
- begin
- GetProcedureAddress(_GetNameByTypeW, nsplib, 'GetNameByTypeW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_GetNameByTypeW]
- end;
- end;
- var
- _GetNameByType: Pointer;
- function GetNameByType;
- begin
- GetProcedureAddress(_GetNameByType, nsplib, 'GetNameByType' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_GetNameByType]
- end;
- end;
- var
- _SetServiceA: Pointer;
- function SetServiceA;
- begin
- GetProcedureAddress(_SetServiceA, nsplib, 'SetServiceA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SetServiceA]
- end;
- end;
- var
- _SetServiceW: Pointer;
- function SetServiceW;
- begin
- GetProcedureAddress(_SetServiceW, nsplib, 'SetServiceW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SetServiceW]
- end;
- end;
- var
- _SetService: Pointer;
- function SetService;
- begin
- GetProcedureAddress(_SetService, nsplib, 'SetService' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SetService]
- end;
- end;
- var
- _GetServiceA: Pointer;
- function GetServiceA;
- begin
- GetProcedureAddress(_GetServiceA, nsplib, 'GetServiceA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_GetServiceA]
- end;
- end;
- var
- _GetServiceW: Pointer;
- function GetServiceW;
- begin
- GetProcedureAddress(_GetServiceW, nsplib, 'GetServiceW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_GetServiceW]
- end;
- end;
- var
- _GetService: Pointer;
- function GetService;
- begin
- GetProcedureAddress(_GetService, nsplib, 'GetService' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_GetService]
- end;
- end;
- {$ELSE}
- function EnumProtocolsA; external nsplib name 'EnumProtocolsA';
- function EnumProtocolsW; external nsplib name 'EnumProtocolsW';
- function EnumProtocols; external nsplib name 'EnumProtocols' + AWSuffix;
- function GetAddressByNameA; external nsplib name 'GetAddressByNameA';
- function GetAddressByNameW; external nsplib name 'GetAddressByNameW';
- function GetAddressByName; external nsplib name 'GetAddressByName' + AWSuffix;
- function GetTypeByNameA; external nsplib name 'GetTypeByNameA';
- function GetTypeByNameW; external nsplib name 'GetTypeByNameW';
- function GetTypeByName; external nsplib name 'GetTypeByName' + AWSuffix;
- function GetNameByTypeA; external nsplib name 'GetNameByTypeA';
- function GetNameByTypeW; external nsplib name 'GetNameByTypeW';
- function GetNameByType; external nsplib name 'GetNameByType' + AWSuffix;
- function SetServiceA; external nsplib name 'SetServiceA';
- function SetServiceW; external nsplib name 'SetServiceW';
- function SetService; external nsplib name 'SetService' + AWSuffix;
- function GetServiceA; external nsplib name 'GetServiceA';
- function GetServiceW; external nsplib name 'GetServiceW';
- function GetService; external nsplib name 'GetService' + AWSuffix;
- {$ENDIF DYNAMIC_LINK}
- end.
|