⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jwanspapi.pas

📁 比较全面的win32api开发包
💻 PAS
📖 第 1 页 / 共 3 页
字号:
{******************************************************************************}
{                                                       	               }
{ 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 + -