📄 idwinsock2.pas
字号:
wsaediscon = wsabaseerr+101;
wsaenomore = wsabaseerr+102;
wsaecancelled = wsabaseerr+103;
wsaeinvalidproctable = wsabaseerr+104;
wsaeinvalidprovider = wsabaseerr+105;
wsaeproviderfailedinit = wsabaseerr+106;
wsasyscallfailure = wsabaseerr+107;
wsaservice_not_found = wsabaseerr+108;
wsatype_not_found = wsabaseerr+109;
wsa_e_no_more = wsabaseerr+110;
wsa_e_cancelled = wsabaseerr+111;
wsaerefused = wsabaseerr+112;
{ Error return codes from gethostbyname() and gethostbyaddr()
(when using the resolver). Note that these errors are
retrieved via WSAGetLastError() and must therefore follow
the rules for avoiding clashes with error numbers from
specific implementations or language run-time systems.
For this reason the codes are based at WSABASEERR+1001.
Note also that [WSA]NO_ADDRESS is defined only for
compatibility purposes. }
// Authoritative Answer: Host not found
wsahost_not_found = wsabaseerr+1001;
host_not_found = wsahost_not_found;
// Non-Authoritative: Host not found, or SERVERFAIL
wsatry_again = wsabaseerr+1002;
try_again = wsatry_again;
// Non recoverable errors, FORMERR, REFUSED, NOTIMP
wsano_recovery = wsabaseerr+1003;
no_recovery = wsano_recovery;
// Valid name, no data record of requested type
wsano_data = wsabaseerr+1004;
no_data = wsano_data;
// no address, look for MX record
wsano_address = wsano_data;
no_address = wsano_address;
// Define QOS related error return codes
wsa_qos_receivers = wsabaseerr+1005; // at least one reserve has arrived
wsa_qos_senders = wsabaseerr+1006; // at least one path has arrived
wsa_qos_no_senders = wsabaseerr+1007; // there are no senders
wsa_qos_no_receivers = wsabaseerr+1008; // there are no receivers
wsa_qos_request_confirmed = wsabaseerr+1009; // reserve has been confirmed
wsa_qos_admission_failure = wsabaseerr+1010; // error due to lack of resources
wsa_qos_policy_failure = wsabaseerr+1011; // rejected for administrative reasons - bad credentials
wsa_qos_bad_style = wsabaseerr+1012; // unknown or conflicting style
wsa_qos_bad_object = wsabaseerr+1013; // problem with some part of the filterspec or providerspecific buffer in general
wsa_qos_traffic_ctrl_error = wsabaseerr+1014; // problem with some part of the flowspec
wsa_qos_generic_error = wsabaseerr+1015; // general error
wsa_qos_eservicetype = wsabaseerr+1016; // invalid service type in flowspec
wsa_qos_eflowspec = wsabaseerr+1017; // invalid flowspec
wsa_qos_eprovspecbuf = wsabaseerr+1018; // invalid provider specific buffer
wsa_qos_efilterstyle = wsabaseerr+1019; // invalid filter style
wsa_qos_efiltertype = wsabaseerr+1020; // invalid filter type
wsa_qos_efiltercount = wsabaseerr+1021; // incorrect number of filters
wsa_qos_eobjlength = wsabaseerr+1022; // invalid object length
wsa_qos_eflowcount = wsabaseerr+1023; // incorrect number of flows
wsa_qos_eunkownpsobj = wsabaseerr+1024; // unknown object in provider specific buffer
wsa_qos_epolicyobj = wsabaseerr+1025; // invalid policy object in provider specific buffer
wsa_qos_eflowdesc = wsabaseerr+1026; // invalid flow descriptor in the list
wsa_qos_epsflowspec = wsabaseerr+1027; // inconsistent flow spec in provider specific buffer
wsa_qos_epsfilterspec = wsabaseerr+1028; // invalid filter spec in provider specific buffer
wsa_qos_esdmodeobj = wsabaseerr+1029; // invalid shape discard mode object in provider specific buffer
wsa_qos_eshaperateobj = wsabaseerr+1030; // invalid shaping rate object in provider specific buffer
wsa_qos_reserved_petype = wsabaseerr+1031; // reserved policy element in provider specific buffer
{ WinSock 2 extension -- new error codes and type definition }
wsa_io_pending = error_io_pending;
wsa_io_incomplete = error_io_incomplete;
wsa_invalid_handle = error_invalid_handle;
wsa_invalid_parameter = error_invalid_parameter;
wsa_not_enough_memory = error_not_enough_memory;
wsa_operation_aborted = error_operation_aborted;
{$IFDEF CIL}
wsa_invalid_event = wsaevent(0);
{$ELSE}
wsa_invalid_event = wsaevent(nil);
{$ENDIF}
wsa_maximum_wait_events = maximum_wait_objects;
wsa_wait_failed = $ffffffff;
wsa_wait_event_0 = wait_object_0;
wsa_wait_io_completion = wait_io_completion;
wsa_wait_timeout = wait_timeout;
wsa_infinite = infinite;
{ Windows Sockets errors redefined as regular Berkeley error constants.
These are commented out in Windows NT to avoid conflicts with errno.h.
Use the WSA constants instead. }
ewouldblock = wsaewouldblock;
einprogress = wsaeinprogress;
ealready = wsaealready;
enotsock = wsaenotsock;
edestaddrreq = wsaedestaddrreq;
emsgsize = wsaemsgsize;
eprototype = wsaeprototype;
enoprotoopt = wsaenoprotoopt;
eprotonosupport = wsaeprotonosupport;
esocktnosupport = wsaesocktnosupport;
eopnotsupp = wsaeopnotsupp;
epfnosupport = wsaepfnosupport;
eafnosupport = wsaeafnosupport;
eaddrinuse = wsaeaddrinuse;
eaddrnotavail = wsaeaddrnotavail;
enetdown = wsaenetdown;
enetunreach = wsaenetunreach;
enetreset = wsaenetreset;
econnaborted = wsaeconnaborted;
econnreset = wsaeconnreset;
enobufs = wsaenobufs;
eisconn = wsaeisconn;
enotconn = wsaenotconn;
eshutdown = wsaeshutdown;
etoomanyrefs = wsaetoomanyrefs;
etimedout = wsaetimedout;
econnrefused = wsaeconnrefused;
eloop = wsaeloop;
enametoolong = wsaenametoolong;
ehostdown = wsaehostdown;
ehostunreach = wsaehostunreach;
enotempty = wsaenotempty;
eproclim = wsaeproclim;
eusers = wsaeusers;
edquot = wsaedquot;
estale = wsaestale;
eremote = wsaeremote;
wsadescription_len = 256;
wsasys_status_len = 128;
type
PWSAData = ^TWSAData;
TWSAData = packed record
wVersion : Word;
wHighVersion : Word;
szDescription : Array[0..wsadescription_len] of Char;
szSystemStatus : Array[0..wsasys_status_len] of Char;
iMaxSockets : Word;
iMaxUdpDg : Word;
lpVendorInfo : PChar;
end;
{ wsaoverlapped = Record
Internal: LongInt;
InternalHigh: LongInt;
Offset: LongInt;
OffsetHigh: LongInt;
hEvent: wsaevent;
end;}
wsaoverlapped = TOverlapped;
TWSAOverlapped = WSAOverlapped;
PWSAOverlapped = ^WSAOverlapped;
LPwsaoverlapped = PWSAOverlapped;
{ WinSock 2 extension -- WSABUF and QOS struct, include qos.h }
{ to pull in FLOWSPEC and related definitions }
WSABUF = packed record
len: U_LONG; { the length of the buffer }
buf: PChar; { the pointer to the buffer }
end {WSABUF};
PWSABUF = ^WSABUF;
LPWSABUF = PWSABUF;
TServiceType = LongInt;
TFlowSpec = packed record
TokenRate, // In Bytes/sec
TokenBucketSize, // In Bytes
PeakBandwidth, // In Bytes/sec
Latency, // In microseconds
DelayVariation : LongInt;// In microseconds
ServiceType : TServiceType;
MaxSduSize, MinimumPolicedSize : LongInt;// In Bytes
end;
PFlowSpec = ^TFLOWSPEC;
QOS = packed record
SendingFlowspec: TFlowSpec; { the flow spec for data sending }
ReceivingFlowspec: TFlowSpec; { the flow spec for data receiving }
ProviderSpecific: WSABUF; { additional provider specific stuff }
end;
TQualityOfService = QOS;
PQOS = ^QOS;
LPQOS = PQOS;
const
servicetype_notraffic = $00000000; // No data in this direction
servicetype_besteffort = $00000001; // Best Effort
servicetype_controlledload = $00000002; // Controlled Load
servicetype_guaranteed = $00000003; // Guaranteed
servicetype_network_unavailable = $00000004; // Used to notify change to user
servicetype_general_information = $00000005; // corresponds to "General Parameters" defined by IntServ
servicetype_nochange = $00000006; // used to indicate that the flow spec contains no change from any previous one
// to turn on immediate traffic control, OR this flag with the ServiceType field in teh FLOWSPEC
service_immediate_traffic_control = $80000000;
// WinSock 2 extension -- manifest constants for return values of the condition function
cf_accept = $0000;
cf_reject = $0001;
cf_defer = $0002;
// WinSock 2 extension -- manifest constants for shutdown()
sd_receive = $00;
sd_send = $01;
sd_both = $02;
// WinSock 2 extension -- data type and manifest constants for socket groups
sg_unconstrained_group = $01;
sg_constrained_group = $02;
type
GROUP = DWORD;
// WinSock 2 extension -- data type for WSAEnumNetworkEvents()
TWSANetworkEvents = record
lNetworkEvents: LongInt;
iErrorCode: Array[0..fd_max_eventS-1] of Integer;
end;
PWSANetworkEvents = ^TWSANetworkEvents;
LPWSANetworkEvents = PWSANetworkEvents;
//TransmitFile types used for the TransmitFile API function in WinNT/2000/XP
{$NODEFINE PTransmitFileBuffers}
PTransmitFileBuffers = ^TTransmitFileBuffers;
{$NODEFINE _TRANSMIT_FILE_BUFFERS}
_TRANSMIT_FILE_BUFFERS = record
Head: Pointer;
HeadLength: DWORD;
Tail: Pointer;
TailLength: DWORD;
end;
{$NODEFINE TTransmitFileBuffers}
TTransmitFileBuffers = _TRANSMIT_FILE_BUFFERS;
{$NODEFINE TRANSMIT_FILE_BUFFERS}
TRANSMIT_FILE_BUFFERS = _TRANSMIT_FILE_BUFFERS;
const
{$NODEFINE TP_ELEMENT_MEMORY}
TP_ELEMENT_MEMORY = 1;
{$NODEFINE TP_ELEMENT_FILE}
TP_ELEMENT_FILE = 2;
{$NODEFINE TP_ELEMENT_EOP}
TP_ELEMENT_EOP = 4;
{$NODEFINE TP_DISCONNECT}
TP_DISCONNECT = TF_DISCONNECT;
{$NODEFINE TP_REUSE_SOCKET}
TP_REUSE_SOCKET = TF_REUSE_SOCKET;
{$NODEFINE TP_USE_DEFAULT_WORKER}
TP_USE_DEFAULT_WORKER = TF_USE_DEFAULT_WORKER;
{$NODEFINE TP_USE_SYSTEM_THREAD}
TP_USE_SYSTEM_THREAD = TF_USE_SYSTEM_THREAD;
{$NODEFINE TP_USE_KERNEL_APC}
TP_USE_KERNEL_APC = TF_USE_KERNEL_APC;
type
{$NODEFINE PTransmitPacketsElement}
PTransmitPacketsElement = ^TTransmitPacketsElement;
{$NODEFINE _TRANSMIT_PACKETS_ELEMENT}
_TRANSMIT_PACKETS_ELEMENT = record
dwElFlags: ULONG;
cLength: ULONG;
case Integer of
1: (nFileOffset: TLargeInteger;
hFile: THandle);
2: (pBuffer: Pointer);
end;
{$NODEFINE TTransmitPacketsElement}
TTransmitPacketsElement = _TRANSMIT_PACKETS_ELEMENT;
{$NODEFINE LPTransmitPacketsElement}
LPTransmitPacketsElement = PTransmitPacketsElement;
{$NODEFINE TRANSMIT_PACKETS_ELEMENT}
TRANSMIT_PACKETS_ELEMENT = _TRANSMIT_PACKETS_ELEMENT;
{$NODEFINE PTRANSMIT_PACKETS_ELEMENT}
PTRANSMIT_PACKETS_ELEMENT = ^_TRANSMIT_PACKETS_ELEMENT;
{$NODEFINE LPTRANSMIT_PACKETS_ELEMENT}
LPTRANSMIT_PACKETS_ELEMENT = ^_TRANSMIT_PACKETS_ELEMENT;
// WinSock 2 extension -- WSAPROTOCOL_INFO structure
{$ifndef ver130}
{ TGUID = packed record
D1: LongInt;
D2: Word;
D3: Word;
D4: Array[0..7] of Byte;
end; }
{$NODEFINE PGUID}
PGUID = ^TGUID;
{$endif}
{$NODEFINE LPGUID}
LPGUID = PGUID;
// WinSock 2 extension -- WSAPROTOCOL_INFO manifest constants
const
{$NODEFINE max_protocol_chain}
max_protocol_chain = 7;
{$NODEFINE base_protocol}
base_protocol = 1;
{$NODEFINE layered_protocol}
layered_protocol = 0;
{$NODEFINE wsaprotocol_len}
wsaprotocol_len = 255;
type
{$NODEFINE TWSAProtocolChain}
TWSAProtocolChain = record
ChainLen: Integer; // the length of the chain,
// length = 0 means layered protocol,
// length = 1 means base protocol,
// length > 1 means protocol chain
ChainEntries: Array[0..MAX_PROTOCOL_CHAIN-1] of LongInt; // a list of dwCatalogEntryIds
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -