1
{******************************************************************************}
3
{ Winsock2 Namespace API interface Unit for Object Pascal }
5
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
6
{ Corporation. All Rights Reserved. }
8
{ The original file is: nspapi.h, released June 2000. The original Pascal }
9
{ code is: NspApi.pas, released December 2000. The initial developer of the }
10
{ Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
12
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
13
{ Marcel van Brakel. All Rights Reserved. }
15
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
17
{ You may retrieve the latest version of this file at the Project JEDI }
18
{ APILIB home page, located at http://jedi-apilib.sourceforge.net }
20
{ The contents of this file are used with permission, subject to the Mozilla }
21
{ Public License Version 1.1 (the "License"); you may not use this file except }
22
{ in compliance with the License. You may obtain a copy of the License at }
23
{ http://www.mozilla.org/MPL/MPL-1.1.html }
25
{ Software distributed under the License is distributed on an "AS IS" basis, }
26
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
27
{ the specific language governing rights and limitations under the License. }
29
{ Alternatively, the contents of this file may be used under the terms of the }
30
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
31
{ provisions of the LGPL License are applicable instead of those above. }
32
{ If you wish to allow use of your version of this file only under the terms }
33
{ of the LGPL License and not to allow others to use your version of this file }
34
{ under the MPL, indicate your decision by deleting the provisions above and }
35
{ replace them with the notice and other provisions required by the LGPL }
36
{ License. If you do not delete the provisions above, a recipient may use }
37
{ your version of this file under either the MPL or the LGPL License. }
39
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
41
{******************************************************************************}
43
// $Id: jwanspapi.pas,v 1.1 2005/04/04 07:56:10 marco Exp $
50
{$HPPEMIT '#include "nspapi.h"'}
58
JwaWinType, JwaWinSock2;
65
SERVICE_RESOURCE = $00000001;
66
{$EXTERNALSYM SERVICE_RESOURCE}
67
SERVICE_SERVICE = $00000002;
68
{$EXTERNALSYM SERVICE_SERVICE}
69
SERVICE_LOCAL = $00000004;
70
{$EXTERNALSYM SERVICE_LOCAL}
73
// Operation used when calling SetService()
76
SERVICE_REGISTER = $00000001;
77
{$EXTERNALSYM SERVICE_REGISTER}
78
SERVICE_DEREGISTER = $00000002;
79
{$EXTERNALSYM SERVICE_DEREGISTER}
80
SERVICE_FLUSH = $00000003;
81
{$EXTERNALSYM SERVICE_FLUSH}
82
SERVICE_ADD_TYPE = $00000004;
83
{$EXTERNALSYM SERVICE_ADD_TYPE}
84
SERVICE_DELETE_TYPE = $00000005;
85
{$EXTERNALSYM SERVICE_DELETE_TYPE}
88
// Flags that affect the operations above
91
SERVICE_FLAG_DEFER = $00000001;
92
{$EXTERNALSYM SERVICE_FLAG_DEFER}
93
SERVICE_FLAG_HARD = $00000002;
94
{$EXTERNALSYM SERVICE_FLAG_HARD}
97
// Used as input to GetService() for setting the dwProps parameter
100
PROP_COMMENT = $00000001;
101
{$EXTERNALSYM PROP_COMMENT}
102
PROP_LOCALE = $00000002;
103
{$EXTERNALSYM PROP_LOCALE}
104
PROP_DISPLAY_HINT = $00000004;
105
{$EXTERNALSYM PROP_DISPLAY_HINT}
106
PROP_VERSION = $00000008;
107
{$EXTERNALSYM PROP_VERSION}
108
PROP_START_TIME = $00000010;
109
{$EXTERNALSYM PROP_START_TIME}
110
PROP_MACHINE = $00000020;
111
{$EXTERNALSYM PROP_MACHINE}
112
PROP_ADDRESSES = $00000100;
113
{$EXTERNALSYM PROP_ADDRESSES}
115
{$EXTERNALSYM PROP_SD}
116
PROP_ALL = DWORD($80000000);
117
{$EXTERNALSYM PROP_ALL}
120
// Flags that describe attributes of Service Addresses
123
SERVICE_ADDRESS_FLAG_RPC_CN = $00000001;
124
{$EXTERNALSYM SERVICE_ADDRESS_FLAG_RPC_CN}
125
SERVICE_ADDRESS_FLAG_RPC_DG = $00000002;
126
{$EXTERNALSYM SERVICE_ADDRESS_FLAG_RPC_DG}
127
SERVICE_ADDRESS_FLAG_RPC_NB = $00000004;
128
{$EXTERNALSYM SERVICE_ADDRESS_FLAG_RPC_NB}
135
{$EXTERNALSYM NS_DEFAULT}
138
{$EXTERNALSYM NS_SAP}
140
{$EXTERNALSYM NS_NDS}
142
{$EXTERNALSYM NS_PEER_BROWSE}
145
{$EXTERNALSYM NS_TCPIP_LOCAL}
147
{$EXTERNALSYM NS_TCPIP_HOSTS}
149
{$EXTERNALSYM NS_DNS}
151
{$EXTERNALSYM NS_NETBT}
153
{$EXTERNALSYM NS_WINS}
156
{$EXTERNALSYM NS_NBP}
161
{$EXTERNALSYM NS_STDA}
163
{$EXTERNALSYM NS_NTDS}
166
{$EXTERNALSYM NS_X500}
168
{$EXTERNALSYM NS_NIS}
171
{$EXTERNALSYM NS_VNS}
174
// Name space attributes.
177
NSTYPE_HIERARCHICAL = $00000001;
178
{$EXTERNALSYM NSTYPE_HIERARCHICAL}
179
NSTYPE_DYNAMIC = $00000002;
180
{$EXTERNALSYM NSTYPE_DYNAMIC}
181
NSTYPE_ENUMERABLE = $00000004;
182
{$EXTERNALSYM NSTYPE_ENUMERABLE}
183
NSTYPE_WORKGROUP = $00000008;
184
{$EXTERNALSYM NSTYPE_WORKGROUP}
187
// Transport attributes.
190
XP_CONNECTIONLESS = $00000001;
191
{$EXTERNALSYM XP_CONNECTIONLESS}
192
XP_GUARANTEED_DELIVERY = $00000002;
193
{$EXTERNALSYM XP_GUARANTEED_DELIVERY}
194
XP_GUARANTEED_ORDER = $00000004;
195
{$EXTERNALSYM XP_GUARANTEED_ORDER}
196
XP_MESSAGE_ORIENTED = $00000008;
197
{$EXTERNALSYM XP_MESSAGE_ORIENTED}
198
XP_PSEUDO_STREAM = $00000010;
199
{$EXTERNALSYM XP_PSEUDO_STREAM}
200
XP_GRACEFUL_CLOSE = $00000020;
201
{$EXTERNALSYM XP_GRACEFUL_CLOSE}
202
XP_EXPEDITED_DATA = $00000040;
203
{$EXTERNALSYM XP_EXPEDITED_DATA}
204
XP_CONNECT_DATA = $00000080;
205
{$EXTERNALSYM XP_CONNECT_DATA}
206
XP_DISCONNECT_DATA = $00000100;
207
{$EXTERNALSYM XP_DISCONNECT_DATA}
208
XP_SUPPORTS_BROADCAST = $00000200;
209
{$EXTERNALSYM XP_SUPPORTS_BROADCAST}
210
XP_SUPPORTS_MULTICAST = $00000400;
211
{$EXTERNALSYM XP_SUPPORTS_MULTICAST}
212
XP_BANDWIDTH_ALLOCATION = $00000800;
213
{$EXTERNALSYM XP_BANDWIDTH_ALLOCATION}
214
XP_FRAGMENTATION = $00001000;
215
{$EXTERNALSYM XP_FRAGMENTATION}
216
XP_ENCRYPTS = $00002000;
217
{$EXTERNALSYM XP_ENCRYPTS}
220
// Resolution flags for GetAddressByName().
223
RES_SOFT_SEARCH = $00000001;
224
{$EXTERNALSYM RES_SOFT_SEARCH}
225
RES_FIND_MULTIPLE = $00000002;
226
{$EXTERNALSYM RES_FIND_MULTIPLE}
227
RES_SERVICE = $00000004;
228
{$EXTERNALSYM RES_SERVICE}
231
// Well known value names for Service Types
234
SERVICE_TYPE_VALUE_SAPIDA = 'SapId';
235
{$EXTERNALSYM SERVICE_TYPE_VALUE_SAPIDA}
236
SERVICE_TYPE_VALUE_SAPIDW = WideString('SapId');
237
{$EXTERNALSYM SERVICE_TYPE_VALUE_SAPIDW}
239
SERVICE_TYPE_VALUE_CONNA = 'ConnectionOriented';
240
{$EXTERNALSYM SERVICE_TYPE_VALUE_CONNA}
241
SERVICE_TYPE_VALUE_CONNW = WideString('ConnectionOriented');
242
{$EXTERNALSYM SERVICE_TYPE_VALUE_CONNW}
244
SERVICE_TYPE_VALUE_TCPPORTA = 'TcpPort';
245
{$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORTA}
246
SERVICE_TYPE_VALUE_TCPPORTW = WideString('TcpPort');
247
{$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORTW}
249
SERVICE_TYPE_VALUE_UDPPORTA = 'UdpPort';
250
{$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORTA}
251
SERVICE_TYPE_VALUE_UDPPORTW = WideString('UdpPort');
252
{$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORTW}
255
SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDW;
256
{$EXTERNALSYM SERVICE_TYPE_VALUE_SAPID}
257
SERVICE_TYPE_VALUE_CONN = SERVICE_TYPE_VALUE_CONNW;
258
{$EXTERNALSYM SERVICE_TYPE_VALUE_CONN}
259
SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTW;
260
{$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORT}
261
SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTW;
262
{$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORT}
264
SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDA;
265
{$EXTERNALSYM SERVICE_TYPE_VALUE_SAPID}
266
SERVICE_TYPE_VALUE_CONN = SERVICE_TYPE_VALUE_CONNA;
267
{$EXTERNALSYM SERVICE_TYPE_VALUE_CONN}
268
SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTA;
269
{$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORT}
270
SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTA;
271
{$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORT}
275
// status flags returned by SetService
278
SET_SERVICE_PARTIAL_SUCCESS = $00000001;
279
{$EXTERNALSYM SET_SERVICE_PARTIAL_SUCCESS}
282
// Name Space Information
288
dwNameSpaceFlags: DWORD;
291
{$EXTERNALSYM _NS_INFOA}
292
NS_INFOA = _NS_INFOA;
293
{$EXTERNALSYM NS_INFOA}
294
PNS_INFOA = ^NS_INFOA;
295
{$EXTERNALSYM PNS_INFOA}
296
LPNS_INFOA = ^NS_INFOA;
297
{$EXTERNALSYM LPNS_INFOA}
299
PNsInfoA = LPNS_INFOA;
302
// Name Space Information
307
dwNameSpaceFlags: DWORD;
310
{$EXTERNALSYM _NS_INFOW}
311
NS_INFOW = _NS_INFOW;
312
{$EXTERNALSYM NS_INFOW}
313
PNS_INFOW = ^NS_INFOW;
314
{$EXTERNALSYM PNS_INFOW}
315
LPNS_INFOW = ^NS_INFOW;
316
{$EXTERNALSYM LPNS_INFOW}
318
PNsInfoW = LPNS_INFOW;
322
{$EXTERNALSYM NS_INFO}
323
PNS_INFO = PNS_INFOW;
324
{$EXTERNALSYM PNS_INFO}
325
LPNS_INFO = LPNS_INFOW;
326
{$EXTERNALSYM LPNS_INFO}
331
{$EXTERNALSYM NS_INFO}
332
PNS_INFO = PNS_INFOA;
333
{$EXTERNALSYM PNS_INFO}
334
LPNS_INFO = LPNS_INFOA;
335
{$EXTERNALSYM LPNS_INFO}
341
// Service Type Values. The structures are used to define named Service
342
// Type specific values. This structure is self relative and has no pointers.
345
LPSERVICE_TYPE_VALUE = ^SERVICE_TYPE_VALUE;
346
{$EXTERNALSYM LPSERVICE_TYPE_VALUE}
347
PSERVICE_TYPE_VALUE = ^SERVICE_TYPE_VALUE;
348
{$EXTERNALSYM PSERVICE_TYPE_VALUE}
349
_SERVICE_TYPE_VALUE = record
353
dwValueNameOffset: DWORD;
354
dwValueOffset: DWORD;
356
{$EXTERNALSYM _SERVICE_TYPE_VALUE}
357
SERVICE_TYPE_VALUE = _SERVICE_TYPE_VALUE;
358
{$EXTERNALSYM SERVICE_TYPE_VALUE}
359
TServiceTypeValue = SERVICE_TYPE_VALUE;
360
PServiceTypeValue = LPSERVICE_TYPE_VALUE;
363
// An absolute version of above. This structure does contain pointers.
366
LPSERVICE_TYPE_VALUE_ABSA = ^SERVICE_TYPE_VALUE_ABSA;
367
{$EXTERNALSYM LPSERVICE_TYPE_VALUE_ABSA}
368
PSERVICE_TYPE_VALUE_ABSA = ^SERVICE_TYPE_VALUE_ABSA;
369
{$EXTERNALSYM PSERVICE_TYPE_VALUE_ABSA}
370
_SERVICE_TYPE_VALUE_ABSA = record
377
{$EXTERNALSYM _SERVICE_TYPE_VALUE_ABSA}
378
SERVICE_TYPE_VALUE_ABSA = _SERVICE_TYPE_VALUE_ABSA;
379
{$EXTERNALSYM SERVICE_TYPE_VALUE_ABSA}
380
TServiceTypeValueAbsA = SERVICE_TYPE_VALUE_ABSA;
381
PServiceTypeValueAbsA = LPSERVICE_TYPE_VALUE_ABSA;
384
// An absolute version of above. This structure does contain pointers.
387
LPSERVICE_TYPE_VALUE_ABSW = ^SERVICE_TYPE_VALUE_ABSW;
388
{$EXTERNALSYM LPSERVICE_TYPE_VALUE_ABSW}
389
PSERVICE_TYPE_VALUE_ABSW = ^SERVICE_TYPE_VALUE_ABSW;
390
{$EXTERNALSYM PSERVICE_TYPE_VALUE_ABSW}
391
_SERVICE_TYPE_VALUE_ABSW = record
398
{$EXTERNALSYM _SERVICE_TYPE_VALUE_ABSW}
399
SERVICE_TYPE_VALUE_ABSW = _SERVICE_TYPE_VALUE_ABSW;
400
{$EXTERNALSYM SERVICE_TYPE_VALUE_ABSW}
401
TServiceTypeValueAbsW = SERVICE_TYPE_VALUE_ABSW;
402
PServiceTypeValueAbsW = LPSERVICE_TYPE_VALUE_ABSW;
405
SERVICE_TYPE_VALUE_ABS = SERVICE_TYPE_VALUE_ABSW;
406
{$EXTERNALSYM SERVICE_TYPE_VALUE_ABS}
407
PSERVICE_TYPE_VALUE_ABS = PSERVICE_TYPE_VALUE_ABSW;
408
{$EXTERNALSYM PSERVICE_TYPE_VALUE_ABS}
409
LPSERVICE_TYPE_VALUE_ABS = LPSERVICE_TYPE_VALUE_ABSW;
410
{$EXTERNALSYM LPSERVICE_TYPE_VALUE_ABS}
411
TServiceTypeValueAbs = TServiceTypeValueAbsW;
412
PServiceTypeValueAbs = PServiceTypeValueAbsW;
414
SERVICE_TYPE_VALUE_ABS = SERVICE_TYPE_VALUE_ABSA;
415
{$EXTERNALSYM SERVICE_TYPE_VALUE_ABS}
416
PSERVICE_TYPE_VALUE_ABS = PSERVICE_TYPE_VALUE_ABSA;
417
{$EXTERNALSYM PSERVICE_TYPE_VALUE_ABS}
418
LPSERVICE_TYPE_VALUE_ABS = LPSERVICE_TYPE_VALUE_ABSA;
419
{$EXTERNALSYM LPSERVICE_TYPE_VALUE_ABS}
420
TServiceTypeValueAbs = TServiceTypeValueAbsA;
421
PServiceTypeValueAbs = PServiceTypeValueAbsA;
425
// Service Type Information. Contains the name of the Service Type and
426
// and an array of SERVICE_NS_TYPE_VALUE structures. This structure is self
427
// relative and has no pointers in it.
430
LPSERVICE_TYPE_INFO = ^SERVICE_TYPE_INFO;
431
{$EXTERNALSYM LPSERVICE_TYPE_INFO}
432
PSERVICE_TYPE_INFO = ^SERVICE_TYPE_INFO;
433
{$EXTERNALSYM PSERVICE_TYPE_INFO}
434
_SERVICE_TYPE_INFO = record
435
dwTypeNameOffset: DWORD;
437
Values: array [0..0] of SERVICE_TYPE_VALUE;
439
{$EXTERNALSYM _SERVICE_TYPE_INFO}
440
SERVICE_TYPE_INFO = _SERVICE_TYPE_INFO;
441
{$EXTERNALSYM SERVICE_TYPE_INFO}
442
TServiceTypeInfo = SERVICE_TYPE_INFO;
443
PServiceTypeInfo = LPSERVICE_TYPE_INFO;
445
LPSERVICE_TYPE_INFO_ABSA = ^SERVICE_TYPE_INFO_ABSA;
446
{$EXTERNALSYM LPSERVICE_TYPE_INFO_ABSA}
447
PSERVICE_TYPE_INFO_ABSA = ^SERVICE_TYPE_INFO_ABSA;
448
{$EXTERNALSYM PSERVICE_TYPE_INFO_ABSA}
449
_SERVICE_TYPE_INFO_ABSA = record
452
Values: array [0..0] of SERVICE_TYPE_VALUE_ABSA;
454
{$EXTERNALSYM _SERVICE_TYPE_INFO_ABSA}
455
SERVICE_TYPE_INFO_ABSA = _SERVICE_TYPE_INFO_ABSA;
456
{$EXTERNALSYM SERVICE_TYPE_INFO_ABSA}
457
TServiceTypeInfoAbsA = SERVICE_TYPE_INFO_ABSA;
458
PServiceTypeInfoAbsA = PSERVICE_TYPE_INFO_ABSA;
460
LPSERVICE_TYPE_INFO_ABSW = ^SERVICE_TYPE_INFO_ABSW;
461
{$EXTERNALSYM LPSERVICE_TYPE_INFO_ABSW}
462
PSERVICE_TYPE_INFO_ABSW = ^SERVICE_TYPE_INFO_ABSW;
463
{$EXTERNALSYM PSERVICE_TYPE_INFO_ABSW}
464
_SERVICE_TYPE_INFO_ABSW = record
467
Values: array [0..0] of SERVICE_TYPE_VALUE_ABSW;
469
{$EXTERNALSYM _SERVICE_TYPE_INFO_ABSW}
470
SERVICE_TYPE_INFO_ABSW = _SERVICE_TYPE_INFO_ABSW;
471
{$EXTERNALSYM SERVICE_TYPE_INFO_ABSW}
472
TServiceTypeInfoAbsW = SERVICE_TYPE_INFO_ABSW;
473
PServiceTypeInfoAbsW = LPSERVICE_TYPE_INFO_ABSW;
476
SERVICE_TYPE_INFO_ABS = SERVICE_TYPE_INFO_ABSW;
477
{$EXTERNALSYM SERVICE_TYPE_INFO_ABS}
478
PSERVICE_TYPE_INFO_ABS = PSERVICE_TYPE_INFO_ABSW;
479
{$EXTERNALSYM PSERVICE_TYPE_INFO_ABS}
480
LPSERVICE_TYPE_INFO_ABS = LPSERVICE_TYPE_INFO_ABSW;
481
{$EXTERNALSYM LPSERVICE_TYPE_INFO_ABS}
482
TServiceTypeInfoAbs = TServiceTypeInfoAbsW;
483
PServiceTypeInfoAbs = PServiceTypeInfoAbsW;
485
SERVICE_TYPE_INFO_ABS = SERVICE_TYPE_INFO_ABSA;
486
{$EXTERNALSYM SERVICE_TYPE_INFO_ABS}
487
PSERVICE_TYPE_INFO_ABS = PSERVICE_TYPE_INFO_ABSA;
488
{$EXTERNALSYM PSERVICE_TYPE_INFO_ABS}
489
LPSERVICE_TYPE_INFO_ABS = LPSERVICE_TYPE_INFO_ABSA;
490
{$EXTERNALSYM LPSERVICE_TYPE_INFO_ABS}
491
TServiceTypeInfoAbs = TServiceTypeInfoAbsA;
492
PServiceTypeInfoAbs = PServiceTypeInfoAbsA;
496
// A Single Address definition.
499
LPSERVICE_ADDRESS = ^SERVICE_ADDRESS;
500
{$EXTERNALSYM LPSERVICE_ADDRESS}
501
PSERVICE_ADDRESS = ^SERVICE_ADDRESS;
502
{$EXTERNALSYM PSERVICE_ADDRESS}
503
_SERVICE_ADDRESS = record
504
dwAddressType: DWORD;
505
dwAddressFlags: DWORD;
506
dwAddressLength: DWORD;
507
dwPrincipalLength: DWORD;
511
{$EXTERNALSYM _SERVICE_ADDRESS}
512
SERVICE_ADDRESS = _SERVICE_ADDRESS;
513
{$EXTERNALSYM SERVICE_ADDRESS}
514
TServiceAddress = SERVICE_ADDRESS;
515
PServiceAddress = LPSERVICE_ADDRESS;
518
// Addresses used by the service. Contains array of SERVICE_ADDRESS.
521
LPSERVICE_ADDRESSES = ^SERVICE_ADDRESSES;
522
{$EXTERNALSYM LPSERVICE_ADDRESSES}
523
PSERVICE_ADDRESSES = ^SERVICE_ADDRESSES;
524
{$EXTERNALSYM PSERVICE_ADDRESSES}
525
_SERVICE_ADDRESSES = record
526
dwAddressCount: DWORD;
527
Addresses: array [0..0] of SERVICE_ADDRESS;
529
{$EXTERNALSYM _SERVICE_ADDRESSES}
530
SERVICE_ADDRESSES = _SERVICE_ADDRESSES;
531
{$EXTERNALSYM SERVICE_ADDRESSES}
532
TServiceAddresses = SERVICE_ADDRESSES;
533
PServiceAddresses = PSERVICE_ADDRESSES;
536
// Service Information.
539
LPSERVICE_INFOA = ^SERVICE_INFOA;
540
{$EXTERNALSYM LPSERVICE_INFOA}
541
PSERVICE_INFOA = ^SERVICE_INFOA;
542
{$EXTERNALSYM PSERVICE_INFOA}
543
_SERVICE_INFOA = record
544
lpServiceType: PGUID;
545
lpServiceName: LPSTR;
548
dwDisplayHint: DWORD;
551
lpMachineName: LPSTR;
552
lpServiceAddress: LPSERVICE_ADDRESSES;
553
ServiceSpecificInfo: BLOB;
555
{$EXTERNALSYM _SERVICE_INFOA}
556
SERVICE_INFOA = _SERVICE_INFOA;
557
{$EXTERNALSYM SERVICE_INFOA}
558
TServiceInfoA = SERVICE_INFOA;
559
PServiceInfoA = PSERVICE_INFOA;
562
// Service Information.
565
LPSERVICE_INFOW = ^SERVICE_INFOW;
566
{$EXTERNALSYM LPSERVICE_INFOW}
567
PSERVICE_INFOW = ^SERVICE_INFOW;
568
{$EXTERNALSYM PSERVICE_INFOW}
569
_SERVICE_INFOW = record
570
lpServiceType: PGUID;
571
lpServiceName: LPWSTR;
574
dwDisplayHint: DWORD;
577
lpMachineName: LPWSTR;
578
lpServiceAddress: LPSERVICE_ADDRESSES;
579
ServiceSpecificInfo: BLOB;
581
{$EXTERNALSYM _SERVICE_INFOW}
582
SERVICE_INFOW = _SERVICE_INFOW;
583
{$EXTERNALSYM SERVICE_INFOW}
584
TServiceInfoW = SERVICE_INFOW;
585
PServiceInfoW = PSERVICE_INFOW;
588
SERVICE_INFO = SERVICE_INFOW;
589
{$EXTERNALSYM SERVICE_INFO}
590
PSERVICE_INFO = PSERVICE_INFOW;
591
{$EXTERNALSYM PSERVICE_INFO}
592
LPSERVICE_INFO = LPSERVICE_INFOW;
593
{$EXTERNALSYM LPSERVICE_INFO}
594
TServiceInfo = TServiceInfoW;
595
PServiceInfo = PServiceInfoW;
597
SERVICE_INFO = SERVICE_INFOA;
598
{$EXTERNALSYM SERVICE_INFO}
599
PSERVICE_INFO = PSERVICE_INFOA;
600
{$EXTERNALSYM PSERVICE_INFO}
601
LPSERVICE_INFO = LPSERVICE_INFOA;
602
{$EXTERNALSYM LPSERVICE_INFO}
603
TServiceInfo = TServiceInfoA;
604
PServiceInfo = PServiceInfoA;
608
// Name Space & Service Information
611
LPNS_SERVICE_INFOA = ^NS_SERVICE_INFOA;
612
{$EXTERNALSYM LPNS_SERVICE_INFOA}
613
PNS_SERVICE_INFOA = ^NS_SERVICE_INFOA;
614
{$EXTERNALSYM PNS_SERVICE_INFOA}
615
_NS_SERVICE_INFOA = record
617
ServiceInfo: SERVICE_INFOA;
619
{$EXTERNALSYM _NS_SERVICE_INFOA}
620
NS_SERVICE_INFOA = _NS_SERVICE_INFOA;
621
{$EXTERNALSYM NS_SERVICE_INFOA}
622
TNsServiceInfoA = NS_SERVICE_INFOA;
623
PNsServiceInfoA = LPNS_SERVICE_INFOA;
626
// Name Space & Service Information
629
LPNS_SERVICE_INFOW = ^NS_SERVICE_INFOW;
630
{$EXTERNALSYM LPNS_SERVICE_INFOW}
631
PNS_SERVICE_INFOW = ^NS_SERVICE_INFOW;
632
{$EXTERNALSYM PNS_SERVICE_INFOW}
633
_NS_SERVICE_INFOW = record
635
ServiceInfo: SERVICE_INFOW;
637
{$EXTERNALSYM _NS_SERVICE_INFOW}
638
NS_SERVICE_INFOW = _NS_SERVICE_INFOW;
639
{$EXTERNALSYM NS_SERVICE_INFOW}
640
TNsServiceInfoW = NS_SERVICE_INFOW;
641
PNsServiceInfoW = LPNS_SERVICE_INFOW;
644
NS_SERVICE_INFO = NS_SERVICE_INFOW;
645
{$EXTERNALSYM NS_SERVICE_INFO}
646
PNS_SERVICE_INFO = PNS_SERVICE_INFOW;
647
{$EXTERNALSYM PNS_SERVICE_INFO}
648
LPNS_SERVICE_INFO = LPNS_SERVICE_INFOW;
649
{$EXTERNALSYM LPNS_SERVICE_INFO}
650
TNsServiceInfo = TNsServiceInfoW;
651
PNsServiceInfo = PNsServiceInfoW;
653
NS_SERVICE_INFO = NS_SERVICE_INFOA;
654
{$EXTERNALSYM NS_SERVICE_INFO}
655
PNS_SERVICE_INFO = PNS_SERVICE_INFOA;
656
{$EXTERNALSYM PNS_SERVICE_INFO}
657
LPNS_SERVICE_INFO = LPNS_SERVICE_INFOA;
658
{$EXTERNALSYM LPNS_SERVICE_INFO}
659
TNsServiceInfo = TNsServiceInfoA;
660
PNsServiceInfo = PNsServiceInfoA;
664
// SockAddr Information
667
LPSOCKET_ADDRESS = ^SOCKET_ADDRESS;
668
{$EXTERNALSYM LPSOCKET_ADDRESS}
669
PSOCKET_ADDRESS = ^SOCKET_ADDRESS;
670
{$EXTERNALSYM PSOCKET_ADDRESS}
671
_SOCKET_ADDRESS = record
672
lpSockaddr: LPSOCKADDR;
673
iSockaddrLength: Integer;
675
{$EXTERNALSYM _SOCKET_ADDRESS}
676
SOCKET_ADDRESS = _SOCKET_ADDRESS;
677
{$EXTERNALSYM SOCKET_ADDRESS}
678
TSocketAddress = SOCKET_ADDRESS;
679
PSocketAddress = PSOCKET_ADDRESS;
682
// CSAddr Information
685
LPCSADDR_INFO = ^CSADDR_INFO;
686
{$EXTERNALSYM LPCSADDR_INFO}
687
PCSADDR_INFO = ^CSADDR_INFO;
688
{$EXTERNALSYM PCSADDR_INFO}
689
_CSADDR_INFO = record
690
LocalAddr: SOCKET_ADDRESS;
691
RemoteAddr: SOCKET_ADDRESS;
692
iSocketType: Integer;
695
{$EXTERNALSYM _CSADDR_INFO}
696
CSADDR_INFO = _CSADDR_INFO;
697
{$EXTERNALSYM CSADDR_INFO}
698
TCsAddrInfo = CSADDR_INFO;
699
PCsAddrInfo = LPCSADDR_INFO;
702
// Protocol Information
705
LPPROTOCOL_INFOA = ^PROTOCOL_INFOA;
706
{$EXTERNALSYM LPPROTOCOL_INFOA}
707
PPROTOCOL_INFOA = ^PROTOCOL_INFOA;
708
{$EXTERNALSYM PPROTOCOL_INFOA}
709
_PROTOCOL_INFOA = record
710
dwServiceFlags: DWORD;
711
iAddressFamily: Integer;
712
iMaxSockAddr: Integer;
713
iMinSockAddr: Integer;
714
iSocketType: Integer;
716
dwMessageSize: DWORD;
719
{$EXTERNALSYM _PROTOCOL_INFOA}
720
PROTOCOL_INFOA = _PROTOCOL_INFOA;
721
{$EXTERNALSYM PROTOCOL_INFOA}
722
TProtocolInfoA = PROTOCOL_INFOA;
723
PProtocolInfoA = LPPROTOCOL_INFOA;
726
// Protocol Information
729
LPPROTOCOL_INFOW = ^PROTOCOL_INFOW;
730
{$EXTERNALSYM LPPROTOCOL_INFOW}
731
PPROTOCOL_INFOW = ^PROTOCOL_INFOW;
732
{$EXTERNALSYM PPROTOCOL_INFOW}
733
_PROTOCOL_INFOW = record
734
dwServiceFlags: DWORD;
735
iAddressFamily: Integer;
736
iMaxSockAddr: Integer;
737
iMinSockAddr: Integer;
738
iSocketType: Integer;
740
dwMessageSize: DWORD;
743
{$EXTERNALSYM _PROTOCOL_INFOW}
744
PROTOCOL_INFOW = _PROTOCOL_INFOW;
745
{$EXTERNALSYM PROTOCOL_INFOW}
746
TProtocolInfoW = PROTOCOL_INFOW;
747
PProtocolInfoW = LPPROTOCOL_INFOW;
750
PROTOCOL_INFO = PROTOCOL_INFOW;
751
{$EXTERNALSYM PROTOCOL_INFO}
752
PPROTOCOL_INFO = PPROTOCOL_INFOW;
753
{$EXTERNALSYM PPROTOCOL_INFO}
754
LPPROTOCOL_INFO = LPPROTOCOL_INFOW;
755
{$EXTERNALSYM LPPROTOCOL_INFO}
756
TProtocolInfo = TProtocolInfoW;
757
PProtocolInfo = PProtocolInfoW;
759
PROTOCOL_INFO = PROTOCOL_INFOA;
760
{$EXTERNALSYM PROTOCOL_INFO}
761
PPROTOCOL_INFO = PPROTOCOL_INFOA;
762
{$EXTERNALSYM PPROTOCOL_INFO}
763
LPPROTOCOL_INFO = LPPROTOCOL_INFOA;
764
{$EXTERNALSYM LPPROTOCOL_INFO}
765
TProtocolInfo = TProtocolInfoA;
766
PProtocolInfo = PProtocolInfoA;
770
// NETRESOURCE2 Structure
773
LPNETRESOURCE2A = ^NETRESOURCE2A;
774
{$EXTERNALSYM LPNETRESOURCE2A}
775
PNETRESOURCE2A = ^NETRESOURCE2A;
776
{$EXTERNALSYM PNETRESOURCE2A}
777
_NETRESOURCE2A = record
781
dwDisplayType: DWORD;
790
{$EXTERNALSYM _NETRESOURCE2A}
791
NETRESOURCE2A = _NETRESOURCE2A;
792
{$EXTERNALSYM NETRESOURCE2A}
793
TNetResource2A = NETRESOURCE2A;
796
// NETRESOURCE2 Structure
799
LPNETRESOURCE2W = ^NETRESOURCE2W;
800
{$EXTERNALSYM LPNETRESOURCE2W}
801
PNETRESOURCE2W = ^NETRESOURCE2W;
802
{$EXTERNALSYM PNETRESOURCE2W}
803
_NETRESOURCE2W = record
807
dwDisplayType: DWORD;
809
lpRemoteName: LPWSTR;
816
{$EXTERNALSYM _NETRESOURCE2W}
817
NETRESOURCE2W = _NETRESOURCE2W;
818
{$EXTERNALSYM NETRESOURCE2W}
819
TNetResource2W = NETRESOURCE2W;
822
NETRESOURCE2 = NETRESOURCE2W;
823
{$EXTERNALSYM NETRESOURCE2}
824
PNETRESOURCE2 = PNETRESOURCE2W;
825
{$EXTERNALSYM PNETRESOURCE2}
826
LPNETRESOURCE2 = LPNETRESOURCE2W;
827
{$EXTERNALSYM LPNETRESOURCE2}
828
TNetResource2 = TNetResource2W;
830
NETRESOURCE2 = NETRESOURCE2A;
831
{$EXTERNALSYM NETRESOURCE2}
832
PNETRESOURCE2 = PNETRESOURCE2A;
833
{$EXTERNALSYM PNETRESOURCE2}
834
LPNETRESOURCE2 = LPNETRESOURCE2A;
835
{$EXTERNALSYM LPNETRESOURCE2}
836
TNetResource2 = TNetResource2A;
839
LPFN_NSPAPI = function: DWORD; stdcall;
840
{$EXTERNALSYM LPFN_NSPAPI}
841
TFnNspApi = LPFN_NSPAPI;
844
// Structures for using the service routines asynchronously.
848
LPSERVICE_CALLBACK_PROC = procedure(lParam: LPARAM; hAsyncTaskHandle: HANDLE); stdcall;
849
{$EXTERNALSYM LPSERVICE_CALLBACK_PROC}
850
TServiceCallbackProc = LPSERVICE_CALLBACK_PROC;
853
LPSERVICE_ASYNC_INFO = ^SERVICE_ASYNC_INFO;
854
{$EXTERNALSYM LPSERVICE_ASYNC_INFO}
855
PSERVICE_ASYNC_INFO = ^SERVICE_ASYNC_INFO;
856
{$EXTERNALSYM PSERVICE_ASYNC_INFO}
857
_SERVICE_ASYNC_INFO = record
858
lpServiceCallbackProc: LPSERVICE_CALLBACK_PROC;
860
hAsyncTaskHandle: HANDLE;
862
{$EXTERNALSYM _SERVICE_ASYNC_INFO}
863
SERVICE_ASYNC_INFO = _SERVICE_ASYNC_INFO;
864
{$EXTERNALSYM SERVICE_ASYNC_INFO}
865
TServiceAsyncInfo = SERVICE_ASYNC_INFO;
866
PServiceAsyncInfo = LPSERVICE_ASYNC_INFO;
869
// Public NSP API prototypes.
872
function EnumProtocolsA(lpiProtocols: PINT; lpProtocolBuffer: LPVOID; lpdwBufferLength: LPDWORD): Integer; stdcall;
873
{$EXTERNALSYM EnumProtocolsA}
874
function EnumProtocolsW(lpiProtocols: PINT; lpProtocolBuffer: LPVOID; lpdwBufferLength: LPDWORD): Integer; stdcall;
875
{$EXTERNALSYM EnumProtocolsW}
876
function EnumProtocols(lpiProtocols: PINT; lpProtocolBuffer: LPVOID; lpdwBufferLength: LPDWORD): Integer; stdcall;
877
{$EXTERNALSYM EnumProtocols}
879
function GetAddressByNameA(dwNameSpace: DWORD; const lpServiceType: TGUID;
880
lpServiceName: LPSTR; lpiProtocols: PINT; dwResolution: DWORD;
881
lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO; lpCsaddrBuffer: LPVOID;
882
var lpdwBufferLength: DWORD; lpAliasBuffer: LPSTR; lpdwAliasBufferLength: LPDWORD): Integer; stdcall;
883
{$EXTERNALSYM GetAddressByNameA}
884
function GetAddressByNameW(dwNameSpace: DWORD; const lpServiceType: TGUID;
885
lpServiceName: LPWSTR; lpiProtocols: PINT; dwResolution: DWORD;
886
lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO; lpCsaddrBuffer: LPVOID;
887
var lpdwBufferLength: DWORD; lpAliasBuffer: LPWSTR; lpdwAliasBufferLength: LPDWORD): Integer; stdcall;
888
{$EXTERNALSYM GetAddressByNameW}
889
function GetAddressByName(dwNameSpace: DWORD; const lpServiceType: TGUID;
890
lpServiceName: LPTSTR; lpiProtocols: PINT; dwResolution: DWORD;
891
lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO; lpCsaddrBuffer: LPVOID;
892
var lpdwBufferLength: DWORD; lpAliasBuffer: LPTSTR; lpdwAliasBufferLength: LPDWORD): Integer; stdcall;
893
{$EXTERNALSYM GetAddressByName}
895
function GetTypeByNameA(lpServiceName: LPSTR; var lpServiceType: TGUID): Integer; stdcall;
896
{$EXTERNALSYM GetTypeByNameA}
897
function GetTypeByNameW(lpServiceName: LPWSTR; var lpServiceType: TGUID): Integer; stdcall;
898
{$EXTERNALSYM GetTypeByNameW}
899
function GetTypeByName(lpServiceName: LPTSTR; var lpServiceType: TGUID): Integer; stdcall;
900
{$EXTERNALSYM GetTypeByName}
902
function GetNameByTypeA(const lpServiceType: TGUID; lpServiceName: LPSTR; dwNameLength: DWORD): Integer; stdcall;
903
{$EXTERNALSYM GetNameByTypeA}
904
function GetNameByTypeW(const lpServiceType: TGUID; lpServiceName: LPWSTR; dwNameLength: DWORD): Integer; stdcall;
905
{$EXTERNALSYM GetNameByTypeW}
906
function GetNameByType(const lpServiceType: TGUID; lpServiceName: LPTSTR; dwNameLength: DWORD): Integer; stdcall;
907
{$EXTERNALSYM GetNameByType}
909
function SetServiceA(dwNameSpace, dwOperation, dwFlags: DWORD;
910
const lpServiceInfo: SERVICE_INFOA; lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO;
911
var lpdwStatusFlags: DWORD): Integer; stdcall;
912
{$EXTERNALSYM SetServiceA}
913
function SetServiceW(dwNameSpace, dwOperation, dwFlags: DWORD;
914
const lpServiceInfo: SERVICE_INFOW; lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO;
915
var lpdwStatusFlags: DWORD): Integer; stdcall;
916
{$EXTERNALSYM SetServiceW}
917
function SetService(dwNameSpace, dwOperation, dwFlags: DWORD;
918
const lpServiceInfo: SERVICE_INFO; lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO;
919
var lpdwStatusFlags: DWORD): Integer; stdcall;
920
{$EXTERNALSYM SetService}
922
function GetServiceA(dwNameSpace: DWORD; const lpGuid: TGUID; lpServiceName: LPSTR;
923
dwProperties: DWORD; lpBuffer: LPVOID; var lpdwBufferSize: DWORD;
924
lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO): Integer; stdcall;
925
{$EXTERNALSYM GetServiceA}
926
function GetServiceW(dwNameSpace: DWORD; const lpGuid: TGUID; lpServiceName: LPWSTR;
927
dwProperties: DWORD; lpBuffer: LPVOID; var lpdwBufferSize: DWORD;
928
lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO): Integer; stdcall;
929
{$EXTERNALSYM GetServiceW}
930
function GetService(dwNameSpace: DWORD; const lpGuid: TGUID; lpServiceName: LPTSTR;
931
dwProperties: DWORD; lpBuffer: LPVOID; var lpdwBufferSize: DWORD;
932
lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO): Integer; stdcall;
933
{$EXTERNALSYM GetService}
938
nsplib = 'wsock32.dll';
945
{$IFDEF DYNAMIC_LINK}
948
_EnumProtocolsA: Pointer;
950
function EnumProtocolsA;
952
GetProcedureAddress(_EnumProtocolsA, nsplib, 'EnumProtocolsA');
956
JMP [_EnumProtocolsA]
961
_EnumProtocolsW: Pointer;
963
function EnumProtocolsW;
965
GetProcedureAddress(_EnumProtocolsW, nsplib, 'EnumProtocolsW');
969
JMP [_EnumProtocolsW]
974
_EnumProtocols: Pointer;
976
function EnumProtocols;
978
GetProcedureAddress(_EnumProtocols, nsplib, 'EnumProtocols' + AWSuffix);
987
_GetAddressByNameA: Pointer;
989
function GetAddressByNameA;
991
GetProcedureAddress(_GetAddressByNameA, nsplib, 'GetAddressByNameA');
995
JMP [_GetAddressByNameA]
1000
_GetAddressByNameW: Pointer;
1002
function GetAddressByNameW;
1004
GetProcedureAddress(_GetAddressByNameW, nsplib, 'GetAddressByNameW');
1008
JMP [_GetAddressByNameW]
1013
_GetAddressByName: Pointer;
1015
function GetAddressByName;
1017
GetProcedureAddress(_GetAddressByName, nsplib, 'GetAddressByName' + AWSuffix);
1021
JMP [_GetAddressByName]
1026
_GetTypeByNameA: Pointer;
1028
function GetTypeByNameA;
1030
GetProcedureAddress(_GetTypeByNameA, nsplib, 'GetTypeByNameA');
1034
JMP [_GetTypeByNameA]
1039
_GetTypeByNameW: Pointer;
1041
function GetTypeByNameW;
1043
GetProcedureAddress(_GetTypeByNameW, nsplib, 'GetTypeByNameW');
1047
JMP [_GetTypeByNameW]
1052
_GetTypeByName: Pointer;
1054
function GetTypeByName;
1056
GetProcedureAddress(_GetTypeByName, nsplib, 'GetTypeByName' + AWSuffix);
1060
JMP [_GetTypeByName]
1065
_GetNameByTypeA: Pointer;
1067
function GetNameByTypeA;
1069
GetProcedureAddress(_GetNameByTypeA, nsplib, 'GetNameByTypeA');
1073
JMP [_GetNameByTypeA]
1078
_GetNameByTypeW: Pointer;
1080
function GetNameByTypeW;
1082
GetProcedureAddress(_GetNameByTypeW, nsplib, 'GetNameByTypeW');
1086
JMP [_GetNameByTypeW]
1091
_GetNameByType: Pointer;
1093
function GetNameByType;
1095
GetProcedureAddress(_GetNameByType, nsplib, 'GetNameByType' + AWSuffix);
1099
JMP [_GetNameByType]
1104
_SetServiceA: Pointer;
1106
function SetServiceA;
1108
GetProcedureAddress(_SetServiceA, nsplib, 'SetServiceA');
1117
_SetServiceW: Pointer;
1119
function SetServiceW;
1121
GetProcedureAddress(_SetServiceW, nsplib, 'SetServiceW');
1130
_SetService: Pointer;
1132
function SetService;
1134
GetProcedureAddress(_SetService, nsplib, 'SetService' + AWSuffix);
1143
_GetServiceA: Pointer;
1145
function GetServiceA;
1147
GetProcedureAddress(_GetServiceA, nsplib, 'GetServiceA');
1156
_GetServiceW: Pointer;
1158
function GetServiceW;
1160
GetProcedureAddress(_GetServiceW, nsplib, 'GetServiceW');
1169
_GetService: Pointer;
1171
function GetService;
1173
GetProcedureAddress(_GetService, nsplib, 'GetService' + AWSuffix);
1183
function EnumProtocolsA; external nsplib name 'EnumProtocolsA';
1184
function EnumProtocolsW; external nsplib name 'EnumProtocolsW';
1185
function EnumProtocols; external nsplib name 'EnumProtocols' + AWSuffix;
1186
function GetAddressByNameA; external nsplib name 'GetAddressByNameA';
1187
function GetAddressByNameW; external nsplib name 'GetAddressByNameW';
1188
function GetAddressByName; external nsplib name 'GetAddressByName' + AWSuffix;
1189
function GetTypeByNameA; external nsplib name 'GetTypeByNameA';
1190
function GetTypeByNameW; external nsplib name 'GetTypeByNameW';
1191
function GetTypeByName; external nsplib name 'GetTypeByName' + AWSuffix;
1192
function GetNameByTypeA; external nsplib name 'GetNameByTypeA';
1193
function GetNameByTypeW; external nsplib name 'GetNameByTypeW';
1194
function GetNameByType; external nsplib name 'GetNameByType' + AWSuffix;
1195
function SetServiceA; external nsplib name 'SetServiceA';
1196
function SetServiceW; external nsplib name 'SetServiceW';
1197
function SetService; external nsplib name 'SetService' + AWSuffix;
1198
function GetServiceA; external nsplib name 'GetServiceA';
1199
function GetServiceW; external nsplib name 'GetServiceW';
1200
function GetService; external nsplib name 'GetService' + AWSuffix;
1202
{$ENDIF DYNAMIC_LINK}