📄 jwanspapi.pas
字号:
{******************************************************************************}
{ }
{ 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@chello.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 home }
{ page, located at http://delphi-jedi.org or my personal homepage located at }
{ http://members.chello.nl/m.vanbrakel2 }
{ }
{ 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 }
{ }
{******************************************************************************}
unit JwaNspAPI;
{$WEAKPACKAGEUNIT}
{$HPPEMIT ''}
{$HPPEMIT '#include "nspapi.h"'}
{$HPPEMIT ''}
{$I WINDEFINES.INC}
interface
uses
JwaWinType, 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}
//
// 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}
//
// 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}
//
// 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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -