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

📄 idwinsock2.pas

📁 photo.163.com 相册下载器 多线程下载
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  end;

type
  {$NODEFINE TWSAProtocol_InfoA}
  TWSAProtocol_InfoA = record
    dwServiceFlags1: LongInt;
    dwServiceFlags2: LongInt;
    dwServiceFlags3: LongInt;
    dwServiceFlags4: LongInt;
    dwProviderFlags: LongInt;
    ProviderId: TGUID;
    dwCatalogEntryId: LongInt;
    ProtocolChain: TWSAProtocolChain;
    iVersion: Integer;
    iAddressFamily: Integer;
    iMaxSockAddr: Integer;
    iMinSockAddr: Integer;
    iSocketType: Integer;
    iProtocol: Integer;
    iProtocolMaxOffset: Integer;
    iNetworkByteOrder: Integer;
    iSecurityScheme: Integer;
    dwMessageSize: LongInt;
    dwProviderReserved: LongInt;
    szProtocol: Array[0..WSAPROTOCOL_LEN+1-1] of Char;
  end {TWSAProtocol_InfoA};
  {$NODEFINE PWSAProtocol_InfoA}
  PWSAProtocol_InfoA = ^TWSAProtocol_InfoA;
  {$NODEFINE LPWSAProtocol_InfoA}
  LPWSAProtocol_InfoA = PWSAProtocol_InfoA;

  {$NODEFINE TWSAProtocol_InfoW}
  TWSAProtocol_InfoW = record
    dwServiceFlags1: LongInt;
    dwServiceFlags2: LongInt;
    dwServiceFlags3: LongInt;
    dwServiceFlags4: LongInt;
    dwProviderFlags: LongInt;
    ProviderId: TGUID;
    dwCatalogEntryId: LongInt;
    ProtocolChain: TWSAProtocolChain;
    iVersion: Integer;
    iAddressFamily: Integer;
    iMaxSockAddr: Integer;
    iMinSockAddr: Integer;
    iSocketType: Integer;
    iProtocol: Integer;
    iProtocolMaxOffset: Integer;
    iNetworkByteOrder: Integer;
    iSecurityScheme: Integer;
    dwMessageSize: LongInt;
    dwProviderReserved: LongInt;
    szProtocol: Array[0..WSAPROTOCOL_LEN+1-1] of WideChar;
  end {TWSAProtocol_InfoW};
  {$NODEFINE PWSAProtocol_InfoW}
  PWSAProtocol_InfoW = ^TWSAProtocol_InfoW;
  {$NODEFINE PWSAProtocol_InfoA}
  LPWSAProtocol_InfoW = PWSAProtocol_InfoW;


{$IFDEF UNICODE}
  {$NODEFINE WSAProtocol_Info}
  WSAProtocol_Info = TWSAProtocol_InfoW;
  {$NODEFINE TWSAProtocol_Info}
  TWSAProtocol_Info = TWSAProtocol_InfoW;
  {$NODEFINE PWSAProtocol_Info}
  PWSAProtocol_Info = PWSAProtocol_InfoW;
  {$NODEFINE LPWSAProtocol_Info}
  LPWSAProtocol_Info = PWSAProtocol_InfoW;
{$ELSE}
  {$NODEFINE WSAProtocol_Info}
  WSAProtocol_Info = TWSAProtocol_InfoA;
  {$NODEFINE TWSAProtocol_Info}
  TWSAProtocol_Info = TWSAProtocol_InfoA;
  {$NODEFINE PWSAProtocol_Info}
  PWSAProtocol_Info = PWSAProtocol_InfoA;
  {$NODEFINE LPWSAProtocol_Info}
  LPWSAProtocol_Info = PWSAProtocol_InfoA;
{$ENDIF}

const
//  flag bit definitions for dwProviderFlags
  pfl_multiple_proto_entries   = $00000001;
  pfl_recommended_proto_entry  = $00000002;
  pfl_hidden                   = $00000004;
  pfl_matches_protocol_zero    = $00000008;

//  flag bit definitions for dwServiceFlags1
  xp1_connectionless           = $00000001;
  xp1_guaranteed_delivery      = $00000002;
  xp1_guaranteed_order         = $00000004;
  xp1_message_oriented         = $00000008;
  xp1_pseudo_stream            = $00000010;
  xp1_graceful_close           = $00000020;
  xp1_expedited_data           = $00000040;
  xp1_connect_data             = $00000080;
  xp1_disconnect_data          = $00000100;
  xp1_support_broadcast        = $00000200;
  xp1_support_multipoint       = $00000400;
  xp1_multipoint_control_plane = $00000800;
  xp1_multipoint_data_plane    = $00001000;
  xp1_qos_supported            = $00002000;
  xp1_interrupt                = $00004000;
  xp1_uni_send                 = $00008000;
  xp1_uni_recv                 = $00010000;
  xp1_ifs_handles              = $00020000;
  xp1_partial_message          = $00040000;

  bigendian    = $0000;
  littleendian = $0001;

  security_protocol_none = $0000;

//  WinSock 2 extension -- manifest constants for WSAJoinLeaf()
  jl_sender_only   = $01;
  jl_receiver_only = $02;
  jl_both          = $04;

//  WinSock 2 extension -- manifest constants for WSASocket()
  wsa_flag_overlapped        = $01;
  wsa_flag_multipoint_c_root = $02;
  wsa_flag_multipoint_c_leaf = $04;
  wsa_flag_multipoint_d_root = $08;
  wsa_flag_multipoint_d_leaf = $10;

//  WinSock 2 extension -- manifest constants for WSAIoctl()
  ioc_unix      = $00000000;
  ioc_ws2       = $08000000;
  ioc_protocol  = $10000000;
  ioc_vendor    = $18000000;

  sio_associate_handle                =  1 or ioc_ws2 or ioc_in;
  sio_enable_circular_queueing        =  2 or ioc_ws2 or ioc_void;
  sio_find_route                      =  3 or ioc_ws2 or ioc_out;
  sio_flush                           =  4 or ioc_ws2 or ioc_void;
  sio_get_broadcast_address           =  5 or ioc_ws2 or ioc_out;
  sio_get_extension_function_pointer  =  6 or ioc_ws2 or ioc_inout;
  sio_get_qos                         =  7 or ioc_ws2 or ioc_inout;
  sio_get_group_qos                   =  8 or ioc_ws2 or ioc_inout;
  sio_multipoint_loopback             =  9 or ioc_ws2 or ioc_in;
  sio_multicast_scope                 = 10 or ioc_ws2 or ioc_in;
  sio_set_qos                         = 11 or ioc_ws2 or ioc_in;
  sio_set_group_qos                   = 12 or ioc_ws2 or ioc_in;
  sio_translate_handle                = 13 or ioc_ws2 or ioc_inout;
  sio_routing_interface_query         = 20 or ioc_ws2 or ioc_inout;
  sio_routing_interface_change        = 21 or ioc_ws2 or ioc_in;
  sio_address_list_query              = 22 or ioc_ws2 or ioc_out; // see below SOCKET_ADDRESS_LIST
  sio_address_list_change             = 23 or ioc_ws2 or ioc_void;
  sio_query_target_pnp_handle         = 24 or ioc_ws2 or ioc_out;
  sio_address_list_sort               = 25 or ioc_ws2 or ioc_inout;

//  WinSock 2 extension -- manifest constants for SIO_TRANSLATE_HANDLE ioctl
  th_netdev = $00000001;
  th_tapi   = $00000002;

type


//  Manifest constants and type definitions related to name resolution and
//  registration (RNR) API

  {$IFDEF CIL}
  TBLOB = packed record
    cbSize : U_LONG;
    pBlobData : ^BYTE;
  end;
  PBLOB = ^TBLOB;
  {$ELSE}
  TBLOB = packed record
    cbSize : U_LONG;
    pBlobData : PBYTE;
  end;
  PBLOB = ^TBLOB;
  {$ENDIF}

//  Service Install Flags

const
  service_multiple = $00000001;

// & name spaces
  ns_all         =  0;

  ns_sap         =  1;
  ns_nds         =  2;
  ns_peer_browse =  3;

  ns_tcpip_local = 10;
  ns_tcpip_hosts = 11;
  ns_dns         = 12;
  ns_netbt       = 13;
  ns_wins        = 14;

  ns_nbp         = 20;

  ns_ms          = 30;
  ns_stda        = 31;
  ns_ntds        = 32;

  ns_x500        = 40;
  ns_nis         = 41;
  ns_nisplus     = 42;

  ns_wrq         = 50;

  ns_netdes      = 60;

{ Resolution flags for WSAGetAddressByName().
  Note these are also used by the 1.1 API GetAddressByName, so leave them around. }
  res_unused_1    = $00000001;
  res_flush_cache = $00000002;
  res_service     = $00000004;

{ Well known value names for Service Types }
  service_type_value_ipxporta              = 'IpxSocket';    {Do not Localize}
  service_type_value_sapida                = 'SapId';    {Do not Localize}
  service_type_value_tcpporta              = 'TcpPort';    {Do not Localize}
  service_type_value_udpporta              = 'UdpPort';    {Do not Localize}
  service_type_value_objectida             = 'ObjectId';    {Do not Localize}
  {$IFDEF CIL}
  service_type_value_ipxportw : WideString  = 'IpxSocket';    {Do not Localize}
  service_type_value_sapidw : WideString    = 'SapId';    {Do not Localize}
  service_type_value_tcpportw : WideString  = 'TcpPort';    {Do not Localize}
  service_type_value_udpportw : WideString  = 'UdpPort';    {Do not Localize}
  service_type_value_objectidw : WideString = 'ObjectId';    {Do not Localize}
  {$ELSE}
  service_type_value_ipxportw : PWideChar  = 'IpxSocket';    {Do not Localize}
  service_type_value_sapidw : PWideChar    = 'SapId';    {Do not Localize}
  service_type_value_tcpportw : PWideChar  = 'TcpPort';    {Do not Localize}
  service_type_value_udpportw : PWideChar  = 'UdpPort';    {Do not Localize}
  service_type_value_objectidw : PWideChar = 'ObjectId';    {Do not Localize}
  {$ENDIF}
  {service_type_value_sapid    = service_type_value_sapidw;}
  {service_type_value_tcpport  = service_type_value_tcpportw;}
  {service_type_value_udpport  = service_type_value_udpportw;}
  {service_type_value_objectid = service_type_value_objectidw;}


{$IFDEF UNICODE}
  service_type_value_sapid : PWideChar = 'SapId';         {Do not Localize}
  service_type_value_tcpport : PWideChar = 'TcpPort';     {Do not Localize}
  service_type_value_udpport : PWideChar = 'UdpPort';     {Do not Localize}
  service_type_value_objectid : PWideChar = 'ObjectId';   {Do not Localize}
{$ELSE}
  service_type_value_sapid    = service_type_value_sapida;
  service_type_value_tcpport  = service_type_value_tcpporta;
  service_type_value_udpport  = service_type_value_udpporta;
  service_type_value_objectid = service_type_value_objectida;
{$ENDIF}

// SockAddr Information
type
  SOCKET_ADDRESS = packed record
    lpSockaddr : PSockAddr;
    iSockaddrLength : Integer;
  end;
  PSOCKET_ADDRESS = ^SOCKET_ADDRESS;

// CSAddr Information
  CSADDR_INFO = packed record
    LocalAddr, RemoteAddr  : SOCKET_ADDRESS;
    iSocketType, iProtocol : LongInt;
  end;
  PCSADDR_INFO = ^CSADDR_INFO;
  LPCSADDR_INFO = ^CSADDR_INFO;

// Address list returned via WSAIoctl( SIO_ADDRESS_LIST_QUERY )
  SOCKET_ADDRESS_LIST = packed record
    iAddressCount : Integer;
    Address       : Array [0..0] of SOCKET_ADDRESS;
  end;
  lpsocket_ADDRESS_LIST = ^SOCKET_ADDRESS_LIST;

// Address Family/Protocol Tuples
  AFProtocols = record
    iAddressFamily : Integer;
    iProtocol      : Integer;
  end;
  TAFProtocols = AFProtocols;
  PAFProtocols = ^TAFProtocols;


//  Client Query API Typedefs

// The comparators
  TWSAEComparator = (COMP_EQUAL {= 0}, COMP_NOTLESS );

  TWSAVersion = record
    dwVersion : DWORD;
    ecHow     : TWSAEComparator;
  end;
  PWSAVersion = ^TWSAVersion;

  TWSAQuerySetA = packed record
    dwSize                  : DWORD;
    lpszServiceInstanceName : PChar;
    lpServiceClassId        : PGUID;
    lpVersion               : PWSAVERSION;
    lpszComment             : PChar;
    dwNameSpace             : DWORD;
    lpNSProviderId          : PGUID;
    lpszContext             : PChar;
    dwNumberOfProtocols     : DWORD;
    lpafpProtocols          : PAFProtocols;
    lpszQueryString         : PChar;
    dwNumberOfCsAddrs       : DWORD;
    lpcsaBuffer             : PCSADDR_INFO;
    dwOutputFlags           : DWORD;
    lpBlob                  : PBLOB;
  end;
  PWSAQuerySetA = ^TWSAQuerySetA;
  LPWSAQuerySetA = PWSAQuerySetA;

  TWSAQuerySetW = packed record
    dwSize                  : DWORD;
    lpszServiceInstanceName : PWideChar;
    lpServiceClassId        : PGUID;
    lpVersion               : PWSAVERSION;
    lpszComment             : PWideChar;
    dwNameSpace             : DWORD;
    lpNSProviderId          : PGUID;
    lpszContext             : PWideChar;
    dwNumberOfProtocols     : DWORD;
    lpafpProtocols          : PAFProtocols;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -