You are on page 1of 537

WINDOWS

API

1 NetBIOS 1

1.1 Microsoft NetBIOS 2


1.1.1 LANA 2
1.1.2 NetBIOS 4
1.1.3 NetBIOS 6
1.2 NetBIOS 7
1.3 NetBIOS 8
1.3.1 15
1.3.2 20
1.3.3 NetBIOS 24
1.4 28
1.5 NetBIOS 40
1.5.1 40
1.5.2 42
1.5.3 LANA 43
1.6 43
1.6.1 Windows CE 44
1.6.2 Windows 9x 44
1.6.3 44
1.7 44

2 45

2.1 45
2.2 UNC 47
2.3 47
2.4 48
2.5 48
2.6 49
2.6.1 49
2.6.2 51
2.7 51
2.8 52
2.9 53

3 54

3.1 54
3.1.1 54
3.1.2 55
3.1.3 56
3.1.4 57
3.2 / 57
3.2.1 57
3.2.2 59
3.3 API 61
3.4 62
3.4.1 8.3 62
3.4.2 I/O 62
3.4.3 64
3.5 65

4 66

4.1 66
4.1.1 67
4.1.2 67
4.1.3 67
4.1.4 68
4.2 68
4.2.1 68
4.2.2 74
4.2.3 81
4.3 API 83
4.4 86
4.5 87
Winsock API

5 89

5.1 89
5.1.1 89
5.1.2 91
5.1.3 91
5.1.4 92
5.1.5 92
5.1.6 92
5.1.7 92
5.1.8 93
5.1.9 93
5.1.10 93
5.2 93
5.2.1 Win32 93
5.2.2 Windows CE 94
5.3 Winsock 2 94
5.4 Windows 97
5.5 99
5.6 100
5.7 100

6 102

6.1 IP 102
6.1.1 TCP 102
6.1.2 UDP 102
6.1.3 102
6.1.4 105
6.1.5 105
6.2 107
6.2.1 107
6.2.2 108
6.2.3 108
6.2.4 IAS 110
6.2.5 111
6.2.6 112
6.3 IPX/SPX 112
6.3.1 112
6.3.2 112
6.4 NetBIOS 115
6.4.1 115
6.4.2 116
6.5 AppleTalk 117
6.5.1 117
6.5.2 AppleTalk 118
6.5.3 AppleTalk 119
6.5.4 124
6.6 ATM 124
6.6.1 125
6.6.2 128
6.6.3 SAP 129
6.6.4 130
6.7 Winsock 2 130
6.8 131

7 Winsock 132

7.1 Winsock 132


7.2 134
7.3 134
7.3.1 API 134
7.3.2 API 138
7.3.3 140
7.3.4 144
7.3.5 146
7.3.6 147
7.4 155
7.4.1 155
7.4.2 156
7.4.3 157
7.4.4 158
7.4.5 158
7.5 API 165
7.6 Windows CE 168
7.7 169
7.7.1 AppleTalk 169
7.7.2 IrDA 169
7.7.3 NetBIOS 170
7.7.4 IPX/SPX 170
7.7.5 ATM 171
7.8 171

8 Winsock I/O 172

8.1 172
8.1.1 173
8.1.2 175
8.2 I/O 176
8.2.1 select 176
8.2.2 WSAAsyncSelect 179
8.2.3 WSAEventSelect 183
8.2.4 188
8.2.5 198
8.3 I/O 206
8.4 206

9 I/O 207

9.1 207
9.1.1 SOL_SOCKET 208
9.1.2 SOL_APPLETALK 215
9.1.3 SOL_IRLMP 218
9.1.4 IPPROTO_IP 222
9.1.5 IPPROTO_TCP 227
9.1.6 NSPROTO_IPX 227
9.2 IOCTLSOCKET WSAIOCTL 231
9.2.1 I/O 232
9.2.2 I/O 233
9.2.3 I/O 239
9.2.4 ATM I/O 241
9.3 242
10 243

10.1 243
10.2 243
10.3 245
10.3.1 245
10.3.2 248
10.3.3 251
10.4 254
10.4.1 255
10.4.2 DNS 257
10.5 260

11 261

11.1 261
11.2 IP 264
11.2.1 Internet 264
11.2.2 IP 265
11.2.3 IP 266
11.3 ATM 266
11.3.1 ATM 267
11.3.2 ATM 267
11.4 Winsock 268
11.4.1 Winsock 1 268
11.4.2 Winsock 2 274
11.4.3 Winsock 288
11.4.4 290
11.5 291

12 292

12.1 292
12.1.1 292
12.1.2 293
12.1.3 294
12.1.4 296
12.2 QoS Winsock 296
12.2.1 QoS 297
12.2.2 QoS 299
12.3 QoS 303
12.4 QoS 311
12.4.1 RSVP 312
12.4.2 QoS 314
12.4.3 QoS 316
12.5 318
12.5.1 TCP 318
12.5.2 UDP 336
12.5.3 UDP 337
12.6 ATM QoS 338
12.7 339

13 340

13.1 340
13.2 Internet 341
13.2.1 Ping 342
13.2.2 Traceroute 351
13.3 Internet 352
13.4 IP_HDRINCL 354
13.5 362

14 Winsock 2 363

14.1 SPI 363


14.1.1 SPI 364
14.1.2 Winsock 2 API SPI 364
14.2 364
14.2.1 WSPStartup 365
14.2.2 366
14.2.3 369
14.2.4 369
14.2.5 Winsock I/O 371
14.2.6 380
14.2.7 381
14.3 386
14.3.1 386
14.3.2 387
14.3.3 392
14.4 Winsock SPI 396
14.5 396

15 Visual Basic Winsock 397

15.1 397
15.2 398
15.3 399
15.4 UDP 400
15.4.1 UDP 403
15.4.2 UDP 404
15.4.3 Winsock 404
15.4.4 UDP 405
15.4.5 UDP 405
15.5 TCP 406
15.5.1 TCP 412
15.5.2 TCP 413
15.5.3 Winsock 414
15.5.4 TCP 414
15.5.5 TCP 415
15.6 415
15.7 416
15.8 Windows CE Winsock 417
15.8.1 Windows CE Winsock 417
15.8.2 421
15.9 422

16 RAS 423

16.1 424
16.2 424
16.3 DUN 1.3 Windows 95 425
16.4 RASDIAL 425
16.4.1 427
16.4.2 428
16.4.3 432
16.4.4 432
16.5 433
16.5.1 440
16.5.2 442
16.5.3 442
16.5.4 443
16.5.5 443
16.5.6 445
16.6 446
16.7 450

A NetBIOS 451
B IP 464
C Winsock 481

API

NetBIOS
Wi n s o c k A P IWi n s o c k
1 N e t B I O S Wi n s o c k
APINetBIOS OS/2
D O S 2 3
4
Wi n d o w s
Windows

1 NetBIOS

Network Basic Input/Output System, NetBIOS


A P I1 9 8 3S y t e k I B M N e t B I O S
1 9 8 5I B M
NetBIOS NetBIOS Extended User Interface, NetBEUINetBIOS
N e t B I O S
TCP/IPIPX/SPXNetBIOS
NetBIOS Windows NTWindows 2000Windows 95
Windows 98

Windows CENetBIOS APITCP/IP


NetBIOS

Win32 NetBIOS NetBIOS


N e t B I O S N e t B I O S L A N A
N e t B I O S

A N e t B I O S

OSI

O S I O S I

1-1 OSI
2 API






/


1-1 OSI

OSINetBIOS

1.1 Microsoft NetBIOS

NetBIOS API
N e t B I O S T C P / I PN e t B I O S
I P X / S P X N e t B I O S

N e t B I O S

TCP/IP NetBEUI NetBIOS

N e t B I O S Microsoft TCP/IPN e t B E U I
N e t B I O S I P X / S P X
I P X / S P X
N e t B I O S I P X / S P X Windows 2000
NWLink IPX/SPX/NetBIOS Windows 95
Windows 98 I P X / S P X
IPX/SPXNetBIOS
N e t B E U I

T C P / I PI P X / S P X
N e t B I O S

1.1.1 LANA

NetBIOS
L A N LAN adapter, LANA N e t B I O S
N e t B I O S L A N A
Win32


1NetBIOS 3
LANA
N e t B I O S T C P / I PN e t B E U I L A N A

0. TCP/IP1
1. NetBEUI1
2. TCP/IP2
3. NetBEUI2
LANA09LANA 0
LANA 0LANA 0LANANetBIOS
LANA 0
LANALANA 0
Windows 95Windows 98

N e t B I O S

LANA 0
Windows 95Windows 98

Windows NT 4 N e t B I O S
N e t B I O S
N e t B I O S
L A N A
1 - 2 N e t B I O S E d i t
L A N A Windows 2000
L A N A
LANA

1-2 NetBIOS
TCP/IPNetBTNetBEUINbfIPX/SPXNwlnkNb
4 API

N e t B I O S L A N A
N e t B I O S LANA 2
LANA 2 TCP/IP
LANA 2
LANA 2NetBEUI
T C P / I PN e t B E U I
L A N A
L A N A

L A N A

1.1.2 NetBIOS

L A N A N e t B I O S
L A N A
N e t B I O S 1 6 1 6
Wi n 3 2 L A N A
N e t B I O S LANA 0
LANA 0 LANA 254
12 5 402 5 5 2 5 4
LANA
N e t B I O S

NetBIOS Windows
W I N S W I N S
W I N S N e t B I O S
T C P / I P W I N SN e t B I O S
IP WINS

N e t B I O S 1 6
W I N S W I N S
WINS Nbtstat
N e t B I O S
1 - 1 N b t s t a t - n D a v e m a c N e t B I O S
D a v e m a c

1NetBIOS 5
Windows NT Server InternetIIS
1-1 NetBIOS

16
DAVEMAC1 <00>
DAVEMAC1 <20>
DAVEMACD <00>
DAVEMACD <1C>
DAVEMACD <1B>
DAVEMAC1 <03>
Inet~Services <1C> Internet
IS~DAVEMAC1 <00> Internet
DAVEMAC1+++++++ <BF>

T C P / I P N b t s t a t
-a IP
-A
1 - 2 M i c r o s o f t N e t B I O S
16
1-2

16
<00> NetBIOS
<03> WINS WINS

<1B>

<06> RAS
<1F> NetDDE
<20>
<21> RAS
<BE>
<BF>

1-3 NetBIOS 16

N e t B I O S
N e t B I O S

1-3

16
<1C>
W I N S
2 5 1 C
WINS1C
IP
6 API

()
16
<1D>
W I N S
W I N S
W I N S
h m
b
NetBIOSp WINS
m bp b
p h
p
bWindowsh
<1E>

<20> Internet WINS
p r i n t e r s g

_MSBROWSE_ 16 _MSBROWSE_

1.1.3 NetBIOS

NetBIOS

N e t B I O S
L A N A

N e t B I O S


1NetBIOS7

1.2 NetBIOS

N e t B I O S NetBIOS API

UCHAR Netbios(PNCB pNCB);

N e t B I O S N b 3 0 . h
NetBIOS Netapi32.lib pNCB
N C B N C B
NetBIOSNetbios

NetBIOS
Netbios
Netbios NCB
1-4 A NetBIOS
NCB
1-4 NCB


ncb_command NetBIOS ASYNCH(0X80)
OR
ncb_retcodef
NRC_PENDING
ncb_lsn
NCBCALLNCBLISTEN
ncb_num NCBADDNAMENCBADDGRNAME

ncb_buffer
N e t b i o s
8 API

()

NCBENUM LANA_ENUM
ncb_length Netbios
Netbios NRC_BUFLEN
ncb_callname
ncb_name
ncb_rto 500 1
N C B C A L LN C B L I S T E N
NCBRECV
ncb_sto 500 1
N C B C A L LN C B L I S T E N
NCBSENDNCBCHAINSEND
ncb_post
void CALLBACK PostRoutine(PNCB pncb);
pncb
ncb_lana_num LANA
ncb_cmd_cpl NetbiosNRC_PENDING
ncb_reserve 0
ncb_event N o n s i g n a l e d Wi n d o w s
S i g n a l e d
n c b _ c o m m a n d A S Y N C H n c b _ p o s t0
0 NetbiosNRC_ILLCMD

N e t b i o s N e t B I O S
N e t b i o s N C B L I S T E N
N e t b i o s
N e t B I O S A S Y N C H O R
ASYNCHncb_postPost Routinencb_
event Netbios NRC_GOODRET
( 0 x 0 0 )n c b _ c m d _ c p l t N R C _ P E N D I N G ( 0 x F F ) N e t b i o s
NCBncb_cmd_cpltNRC_PENDING
n c b _ c m d _ c p l t N e t b i o s n c b _ r e t c o d e

1.3 NetBIOS

NetBIOS

N e t B I O S
C a l l B a c k N e t B I O S
1 - 1 N b c o m m o n . c

1NetBIOS 9
\ E x a m p l e s \ C h a p t e r 0 1 \ C o m m o n

1-1 NetBIOS(Nbcommon.c)
10API


1NetBIOS11
12API


1NetBIOS 13

Nbcommon.c LanaEnum NetBIOS


L A N A
N C B 0n c b _ c o m m a n d N C B E N U Mn c b _ b u ff e r
L A N A _ E N U M n c b _ l e n g t h L A N A _ E N U M N C B
NCBENUMLanaEnum Netbios
N e t B I O S N e t b i o s
NRC_GOODRET
L A N A L A N A
NetBIOS LANA_ENUMLANA_ENUM

l e n g t h L A N A l a n a L A N A
lengthlana LANA
R e s e t A l l N e t B I O S
NetBIOS LANA
LANA_ENUMLanaEnumLANA LANA
N C B R E S E T R e s e t A l l
LANA_ENUM ncb_commandNCBRESETncb_lana_num
L A N A Windows 95
L A N A Windows NT
L A N A N e t b i o s 5 2 N R C _
ENVNOTDEF
L A N A n c b _ c a l l n a m e
N e t B I O S R e s e t A l l u c M a x S e s s i o n
n c b _ c a l l n a m e0
14 API

Windows NT 4 6 4
ResetAllncb_callname2 LANA NetBIOS
u c M a x N a m e R e s e t A l l
3 N e t B I O S b F i r s t N a m e T R U E
N e t B I O S

NetBIOS
A d d N a m e
L A N A L A N A
LANA LANA
N C B A D D N A M E
L A N A n c b _ n a m e A d d N a m e
n c b _ n a m e n a m e
N e t b i o sn c b _ n u m N e t B I O S
N e t B I O S
NRC_DUPNAME

AddGroupNameAddNameNCBADDGRNAME
NRC_DUPNAME
DelName NetBIOS
LANA
1 - 1 S e n dR e c v
n c b _ c o m m a n d
N C B S E N DN C B R E C V L A N A
N C B C A L LN C B L I S T E N
N C B C A L L
N C B L I S T E N N e t B I O S
S e n dR e c v n c b _ b u ff e r
n c b _ l e n g t h n c b _ b u ff e r
l e n g t h b u ff e r
N e t b i o s

Send Recv
S e n d

N C B S E N D N C B C H A I N S E N D N e t b i o s
NCBSENDNANCBCHAINSENDNA

1 - 1 H a n g u pC a n c e l

1NetBIOS 15
N e t B I O SN C B H A N G U P

N R C _ S C L O S E D ( 0 x 0 A )
H a n g u p

1.3.1

NetBIOS

1 - 2
C b n b s v r. c / E x a m p l e s /
C h a p t e r 0 1 / S e r v e r m a i n L a n a E n u m
L A N A R e s e t A l l L A N A N e t B I O S

1-2 Cbnbsvr.c
16API


1NetBIOS17
18 API

m a i n L A N A
T E S T- S E RV E R - 1 L A N A
N e t B I O S
N e t B I O S

N C B L I S T E N L i s t e n
N C B N e t B I O S N C B
N C B
NCB NCBLISTEN
L A N A 1 - 1

1NetBIOS 19
N C B L I S T E N A S Y N C H O R A S Y N C H
n c b _ p o s tn c b _ e v e n t N e t b i o s
N R C _ I L L C M D 1 - 2L i s t e n n c b _ p o s t
L i s t e n C a l l b a c k L i s t e n n c b _ n a m e
ncb_callname
*
ncb_callname
L i s t e n N e t b i o s N e t b i o s
N C Bn c b _ c m d _ c p l t N R C _ P E N D I N G ( 0 x F F )

m a i n L A N A N C B L I S T E N


N e t B I O S
LANANCBLISTEN
L A N A N C B L I S T E N
n c b _ p o s t N C B
n c b _ r e t c o d e
ncb_retcode NRC_GOODRET(0x00)
L A N A N C B L I S T E N
L A N A
N C B L I S T E N
L A N AN C B L I S T E N

N C B R E C V
N C B S E N D

N C B H A N G U P
NCB

N e t b i o s

A S Y N C H
n c b _ s t o
n c b _ r t o n c b _ s t o
5 0 0
20 API

n c b _ r t o

1.3.2

1 - 3 1 - 2 Wi n 3 2

W i n 3 2
Wa i t F o r S i n g l e E v e n tWa i t F o r M u l t i p l e E v e n t s


1) LANA
2) LANA
3) LANA
4) LANA

N C B 1 - 3 N C B
N C B L A N A
NCBLISTEN NCB
Listen NCB
1-3 Evnbsvr.c

1NetBIOS21
22API


1NetBIOS23
24 API

main LANA
NCBLISTEN
WaitForMultipleObjects
WaitForMultipleObjects

N C B
NCB NCBLISTEN
Listen
ncb_lsnLANAncb_lana_num
N C B

GlobalFree


NCBLISTEN
NCBLISTENLANA
2 LANANCBLISTEN
NRC_NOCALL(0x14)
NCBLISTEN
LANANCBLISTEN
A S Y N C H
N e t B I O S N e t b i o sN C B

1.3.3 NetBIOS

N e t B I O S 1 - 4


1NetBIOS 25
L A N A
N C B L A N A
ncb_cmd_cplt NRC_PENDING
NCB NCB
Wa i t F o r M u l t i p l e O b j e c t s
LANA LANA
N C B H A N G U P

1-4 Nbclient.c
26API


1NetBIOS27
28 API

1.4

D a t a g r a m
N e t B I O S

N C B D G S E N D
NCBDGSENDBC
ncb_numNCBADDNAME
N C B A D D G R N A M E
n c b _ b u ff e r
n c b _ l a n a _ n u m L A N A L A N A
n c b _ c a l l n a m e N e t B I O S

ncb_callname

N C B D G R E C V

N e t B I O S
NCBDGRECVBC



1NetBIOS 29

ncb_numNCBADDNAMENCBADDGRNAME

0 x F F N e t B I O S
n c b _ b u ff e r n c b _ l e n g t h
n c b _ l a n a _ n u m L A N A
NCBDGRECVNCBDGRECVBCNetbios ncb_length
ncb_callname NetBIOS
1 - 5

L A N A
L A N A
N C B D G R E C VN C B D G R E C V B C

1-5 NetBIOS Nbdgram.c


30API


1NetBIOS31
32API


1NetBIOS33
34API


1NetBIOS35
36API


1NetBIOS37
38API


1NetBIOS39

L A N A 1 - 5
1 - 6

40 API

1-5 Nbdgram.c


Nbdgram /n:CLIENT01 Nbdgram /s /n:SERVER01 /r:CLIENT01
Nbdgram /n:CLIENT01 /b Nbdgram /s /n:SERVER01 /b
Nbdgram /g:CLIENTGROUP Nbdgram /s /r:CLIENTGROUP

1-6 Nbdgram.c


/n:my-name my-name
/g:group-name group-name
/s
/c:n n
/r:receiver NetBIOS
/b
/a NetBIOS ncb_num0xFF
/l:n LANA n LANA
/d:n n


/ l : x
x L A N A
LANA LANA
Nbdgram /n:CLIENT01 /l:0 LANA 0
LANA /a
N e t B I O S

/ n :
N C B D G R E C V

1.5 NetBIOS

N C B A S TAT N C B F I N D N A M E

LANA NetBIOS
NetBIOS

1.5.1

N C B A S TAT L A N A
Windows 95Windows NT 4MAC
Windows 2000Windows 98 IP HelperIP

1NetBIOS 41
MAC Win32


A D A P T E R _ S TAT U S N A M E _ B U F F E R

M A C a d a p t e r _ a d d r e s s m a x _
d g r a m _ s i z e m a x _ s e s s n a m e _ c o u n t
N A M E _ B U F F E R L A N A N e t B I O S2 5 4
n c b _ l e n g t h0
Netbios
N C B A S TAT n c b _ c o m m a n dn c b _ b u ff e rn c b _ l e n g t h
ncb_lana_numncb_callnamencb_callname *
N e t B I O S
N e t b i o s
n c b _ c a l l n a m e N e t B I O S
42 API

ncb_callname

Microsoft160
Astat.c LANA
/l:LOCALNAME
/r:REMOTENAME

M A C N e t B I O S L A N A

R A S L A N A R A S
LANA MAC RAS
MAC RAS MAC

N b t s t a tN C B A S TAT T C P / I P
TCP/IP

1.5.2

N C B F I N D N A M E Windows NTWindows 2000


N e t B I O S
L A N A
F I N D _ N A M E _ H E A D E R F I N D _ N A M E _
BUFFER

N C B F I N D N A M E 0
Netbios NRC_BUFLEN
F I N D _ N A M E _ H E A D E R
unique_group0
1node_count FIND_NAME_BUFFER

1NetBIOS 43
F I N D _ N A M E _ B U F F E R
d e s t i n a t i o n _ a d d r s o u r c e _ a d d r
s o u r c e _ a d d r M A C
destination_addr MAC
LANA
L A N A R A S
Windows NT 4.0
T C P / I P N e t b i o s
Windows NT 4.0 LANA
TCP/IP

1.5.3 LANA

TCP/IPNetBEUI LANA

N e t B I O S
Windows NT 4Windows 2000 Winsock 2WSAEnumProtocols
Winsock 2 56WSAEnumProtocols
Winsock 2Windows 95 Windows 98

NetBIOS
Winsock 2
W S A S t a r t u p Winsock 2 W S A E n u m P r o t o c o l s
W S A P R O TO C O L _ I N F O C D N b p r o t o . c

WSAEnumProtocols
0

WSAEnumProtocolsWSAPROTOCOL_INFO
szProtocoliAddressFamily
i P r o t o c o l i A d d r e s s F a m i l yA F _ N E T B I O Si P r o t o c o l
szProtocol ProvidedId GUID
GUID
Windows NT Windows 2000
LANA 0 i P r o t o c o l 0 x 8 0 0 0 0 0 0 0 0
LANA 0 0x80000000

1.6

NetBIOS
44 API

1.6.1 Windows CE

N e t B I O S Windows CE N e t B I O S

1.6.2 Windows 9x

Windows 95Windows 98
LANA NetBIOS
L A N A L A N A L A N A

Windows 95 T C P / I P L A N A
N C B R E S E T L A N A
N C B R E S E T
NetBIOS TCP/IP V X D

1.6.3

N C B S E N D N AN C B C H A I N S E N D N AN e t B I O S

T C P / I P

1.7

NetBIOS
T C P / I P
N e t B E U IS P X / I P X N e t B I O S Wi n s o c k
N e t B I O S
NetBIOS NetBIOS Winsock

2
34


2
Wi n d o w s
NOS Windows 95Windows 98Windows
N TWindows 2000Windows CE Wi n d o w s

34
I / O
I / O
I / O
I / O
I/OI/O RedirectionWindows
E :
E : I / O
R e d i r e c t o r
A P I R e a d F i l e
WriteFile
I / O

UNC Multiple UNC Provider, MUP


Universal Naming Convention, UNC
M U P
Server Message Block, SMB
I / O

2.1

U N C

U N C

UNC
\\[]\[]\[]
\ \ []
46 API

U N C
\ []

\[]
M y s e r v e r
D : \ D : \ M y f i l e s \ C o o l M u s i c
M y s h a r e S a m p l e . m p 3
M P 3
UNC
\\Myserver\Myshare\Sample.mp3
Myshare UNC
UNC
U N C
U N C

34
UNC
2 - 1 Wi n d o w s U N C
N O S
U N C\ \ M y s e r v e r \ M y s h a r e \ S a m p l e . m p 3

MUP I/O

2-1

2 47
2.2 UNC

MUP2-1 UNC
Network Provider
M U P U N C
I/O
Windows NTWindows 2000Windows 95Windows 98
W i n d o w s M i c r o s o f tClient for Microsoft
N e t w o r k N o v e l l
Novell Client v3.01 for Windows 95/98
U N C Windows CEM i c r o s o f t

MUP UNC
M U P U N C
U N C M U P
U N CM U P

Windows NTWindows 2000Windows 95Windows 98


RegistryProviderOrder
\HKEY_LOCAL_MACHINE
\SYETEM
\CurrentControlSet
\Control
\NetworkProvider
\Order
Windows CE
M U PU N C U N C

2.3

E :
U N C Wi n d o w s

Wi n d o w s M i c r o s o f t M i c r o s o f t
M S N P M S N P 3 2
MSNPWindows NT 4Windows 2000Windows 95Windows 98Windows CE
Windows CE M S N P
48 API

2.4

I / O

I/O
M U PI / O

M S N P N e t B I O S
1 NetBIOS API
M S N P L A N
LAN Manager Redirector
Microsoft LAN Manager M S - D O S
N e t B I O S 1N e t B I O S
MSNP
MSNP TCP/IPNetBEUI
I P X / S P X

A T C P / I P B
I P X M S N P

M S N P
S M B
Server Message Block File Sharing SMB

2.5

S M B I n t e l8 0
M S - D O S
S M B Windows MSNP M S N P
S M B

S M B M S N P
S M B
S M B S M B
T C P / I P
SMB

2 49
MSNP
\ \ M y s e r v e r \ M y s h a r e \ S a m p l e . m p 3

1) C r e a t e F i l e A P I
\\Myserver\Myshare\Sample.mp3
2) U N C I / O
\\Myserver MUP
3) MUP I / O M S N P \ \ M y s e r v e r
NetBIOS
4) I/O MSNP
5) S M B \ M y s h a r e
Sample.mp3
6) SMB
7) \\Myserver SMB MSNP

8) I / O \ M y s h a r e
Sample.mp3
9) SMB I/O

10) SMB
11) MSNP S M P

12) CreateFile API


MSNP
MSNP

2.6

Windows NTWindows 2000

Windows NTWindows 2000

2.6.1

Security Descriptor
SECURITY_DESCRIPTOR
50 API

Security IdentifierSID
SID
Discretionary Access Control ListDACL

System Access Control ListSACL


Wi n 3 2A P I A P I

1.
DACLSACL access control list, ACL
access control entities, ACE
A C E A C E

SID ACE

ACE
A C ES A C L A C E D A C L
2-2 DACL

SID

SID

DACL

ACE ACE ACE


SACL

2-2 DACL

D A C L D A C L A P IS e t S e c u r i t y D e s c r i p t o r
D a c l
D A C L D A C LA C E D A C L
ACE DACL
ACE ACE

2 51
A C E
A C E
A C E
A C E A C E A C E
A C E A C E
A C E

2 - 2 D A C L

2 - A C E
A C L
API
2.
A C E S I D
SID
Windows NT
S I D S I D
Windows NT
SID

2.6.2

Windows NT

SID
S I D
DACLSID

2.7


MSNP
MSNP

UNC
52 API

Windows NTWindows 2000

MSNP

B
\ H a c k\ S l a s h A \ H a c k G
\ S l a s h H

M S N P M S N P

2 - 3 M S N P
Windows NT
1. Windows NT 5.


A
2.
Windows NT

A B
4. M S N P
3. UNC 1 6. UNC
B
Windows NT Wi n d o w s
2000

2-3

2.8

M S N P Wi n 3 2 C r e a t e F i l eR e a d F i l e
WriteFileAPI Windows NTWindows 2000
Win32 2-1
UNC \Examples\Chapter02

2-1

2 53

2.9

Wi n d o w s
Wi n d o w s
Windows NTWindows 2000

3
Microsoft Windows NTWindows 2000Windows 95Windows 98
Windows CEinterprocess communication,
I P CM a i l s l o t

TCP/IPIPX

3.1

Wi n d o w s
Win32I/O ReadFileWriteFile
Win32 Windows
Mailslot File System, MSFS 2Windows

3.1.1



3 55
\\server\Mailslot\[path]name
\ \ s e r v e r\ M a i l s l o t\ [ p a t h ] n a m e \ \ s e r v e r
\Mailslot
MSFS \[path]name
path
M a i l s l o t

\\Oreo\Mailslot\Mymailslot
\\Testserver\Mailslot\Cooldirectory\Funtest\Anothermailslot
\\.\Mailslot\Easymailslot
\\*\Mailslot\Myslot
.*

Wi n d o w s

Wi n d o w s
Wi n d o w sS M B
Wi n d o w s
Windows NTWindows 2000

3.1.2

D a t a g r a m

Windows NTWindows 2000


424
Windows NTWindows 2000 4 2 6 S M B

Windows NTWindows 2000

Windows NTWindows 2000


Windows NTWindows 2000 Windows 95
56 API

Windows 98
Windows 95Windows 98
Windows 95 Windows 98 4 2 4 Windows NT
Windows 2000Windows NTWindows 2000424
Windows NTWindows 2000
SMB
Windows NTWindows 2000Windows 95Windows 98
Windows 95Windows 98
4 2 6 Windows NTWindows 2000
Windows 95Windows 98 3-1

Windows CE3-1
Windows NTWindows 2000425426

3-1


Windows 95Windows 98 64KB
->Windows 95Windows 98
Windows NTWindows 2000 424 426
->Windows NTWindows 2000
Windows NTWindows 2000 424
->Windows 95Windows 98
Windows 95Windows 98 424
->Windows NTWindows 2000

Windows NTWindows 2000


Windows NT Windows 2000
4 2 5 4 2 6 Windows NT
Windows 2000 Windows 95Windows 98Windows NTWindows 2000
Windows NT
4 2 4
Wi n d o w s 4 2 4

3.1.3

Microsoft Visual C++


Wi n b a s e . h Wi n d o w s . h
Wi n b a s e . h K e r n e l 3 2 . l i b
Visual C++

3 57
3.1.4

Win32 APICreateFileCreateMailslot
0 C r e a t e F i l eC r e a t e M a i l s l o t A P I
INVALID_HANDLE_VALUEAPI
G e t L a s t E r r o r
C Wi n d o w s Wi n e r r o r. h

3.2

3.2.1

1) CreateMailslot API
2) ReadFile API
3) CloseHandleAPI
A P I
CreateMailslotAPI

lpName
\\.\Mailslot\[path]name

l p N a m e

n M a x M e s s a g e S i z e
nMaxMessageSize
0
l R e a d Ti m e o u t

M A I L S L O T _ WA I T _ F O R E V E R
0
58 API

l p S e c u r i t y A t t r i b u t e s Windows NTWindows 2000
n u l l
I / O .

. I / O Windows NTWindows 2000


I/OlpSecurityAttributes

Windows NTWindows 2000


R e a d F i l eWi n 3 2 R e a d F i l e

C r e a t e M a i l s l o t h F i l el p B u ff e rn N u m b e r O f B y t e s To R e a d
CreateMailslot API
nMaxMessageSize
R e a d F i l e E R R O R _ I N S U F F I C I E N T _ B U F F E R
lpNumberOfBytesRead ReadFile
l p O v e r l a p p e d
Wi n 3 2I / O 4 R e a d F i l e
I / O Windows NTWindows 2000
Windows 95Windows 98 N U L L
3-1
3-1

3 59

3.2.2

1) C r e a t e F i l eA P I

2) WriteFileAPI
3) CloseHandleAPI

CreateFileAPI

l p F i l e N a m e
3-2 dwDesiredAccess
G E N E R I C _ W R I T E d w S h a r e M o d e
FILE_SHARE_READ lpSecurityAttributes
NULLdwCreationDispositionOPEN_EXISTING

APICreateFiledwCreationDisposition
3-2


\\.\mailslot\name
\\servername\mailslot\name servername
\\domainname\mailslot\name domain name
\\*\mailslot\name name
60 API

d w F l a g s A n d A t t r i b u t e s F I L E _ AT T R I B U T E _ N O R M A L
hTemplateFileNULL

Win32WriteFile

hFile CreateFile lpBuffernNumberOfBytesToWrite


64KB
* Windows NTWindows 2000
424 Windows 95Windows 986 4 K B
Wr i t e F i l e G e t L a s t E r r o r
E R R O R _ B A D _ N E T PAT H
lpNumberOfBytesWritten WriteFile

l p O v e r l a p p e d
Wr i t e F i l e I / O
N U L L 3 - 2

3-2

3 61

3.3 API

A P I G e t M a i l s l o t I n f o
S e t M a i l s l o t I n f o G e t M a i l s l o t I n f o

GetMailslotInfoGetMailslotInfo

h M a i l s l o t CreateMailslot API l p M a x M e s s a g e S i z e
l p N e x t S i z e
G e t M a i l s l o t I n f o M A I L S L O T _ N O _ M E S S A G E

R e a d F i l e

C P U
ReadFile
Wi n 3 2 I / Ol p M e s s a g e C o u n t
l p R e a d Ti m e o u t

S e t M a i l s l o t I n f o

SetMailslotInfo
62 API

b M a i l s l o t CreateMailslot API l R e a d Ti m e o u t
0
M A I L S L O T _ WA I T _ F O R E V E R

3.4

Windows 95OSR2Windows 98
8.3 I/O

3.4.1 8.3

Windows 95Windows 98 8.3


Windows 95/98Windows NT/2000
\\.\Mailslot\MymailslotWindows 95\\.\Mailslot\
M y m a i l s l C r e a t e M a i l s l o t
CreateFile Windows 2000Windows 95

Windows 95
8

3.4.2 I/O

Windows 95Windows 98 I/O


R e a d F i l e M A I L S L O T _ WA I T _ P O R E V E R
ReadFile

Wi n d o w s
3-3

3-3

3 63
64 API

3.4.3

Windows 95Windows 98

CreateMailslot 0
R e a d F i l e
FA L S ER e a d F i l e R e a d F i l e
T R U E M S - D O S
0M A I L S L O T _ WA I T _ F O R E V E R


http: //support.microsoft.com/support/search
Q139715ReadFile

3 65
C r e a t e M a i l s l o t R e a d F i l e
ReadFile GetLastError
5
Q192276GetMailslotInfo lpNextSize
Windows 95 OEM Service Release 2 O S R 2 Windows 98 A P I
G e t M a i l s l o t I n f o l p N e x t S i z e

Q170581Win95 4093
WriteFileAPI4093 Windows 95

Q131493CreateFile
A P IC r e a t e F i l e
CreateFile

3.5

M a i l s l o t Wi n d o w s

Wi n d o w s

4
Named Pipes I P C
Microsoft Windows NTWindows 2000Windows 95Windows 98
Windows CE

TCP/IPIPX
MSNP

Windows NTWindows 2000

Windows NTWindows 2000

4.1

Wi n d o w sN a m e d
Pipe File System, NPFS Win32API
R e a d F i l eWr i t e F i l e A P I
Wi n 3 2 Windows NT/Windows 2000 N P F S
MSNP

T C PI P X N P F S
U N C 2 U N CWi n d o w s


4 67
4.1.1

UNC
\\server\Pipe\[path]name
\ \ s e r v e r\ P i p e\ [ p a t h ] n a m e \ \ s e r v e r

\ P i p e
N P F S \ [ p a t h ] n a m e

\\myserver\PIPE\mypipe
\\Testserver\pipe\cooldirectory\funtest\jim
\\.\Pipe\Easynamedpipe
.

4.1.2

4-1

1 2 3

4-1

4.1.3

Microsoft Visual C++


Wi n b a s e . h Wi n d o w s . h
68 API

Wi n b a s e . h K e r n e l 3 2 . l i b
Visual C++

4.1.4

Win32 APICreateFileCreateNamedPipe
0 C r e a t e F i l e C r e a t e N a m e d P i p e
I N VA L I D _ H A N D L E _ VA L U E
G e t L a s t E r r o r Wi n e r r o r. h
C

4.2

Wi n 3 2 R e a d F i l eWr i t e F i l e
Windows NTWindows 2000 Windows 95
Windows 98
Windows 95Windows 98 Windows 95Windows 98
Windows NTWindows 2000

4.2.1

1) APICreateNamedPipe
2) APIConnectNamedPipe
3) R e a d F i l eWr i t e F i l eA P I

4) APIDisconnectNamedPipe
5) APICloseHandle
C r e a t e N a m e d P i p eA P I


4 69

l p N a m e U N C


[path]name

dwOpenMode I/O
4 - 1
OR
P I P E _ A C C E S S _
P I P E _ A C C E S S _ D U P L E X
P I P E _ A C C E S S _ I N B O U N D
P I P E _ A C C E S S _ O U T B O U N D
4 - 2

4-1


PIPE_ACCESS_DUPLEX

PIPE_ACCESS_OUTBOUND
PIPE_ACCESS_INBOUND
I/O FILE_FLAG_WRITE_THROUGH



FILE_FLAG_OVERLAPPED I/O
WRITE_DAC DACL
ACCESS_SYSTEM_SECURITY SACL
WRITE_OWNER S I D

d w O p e n M o d e I / O
F I L E _ F L A G _ W R I T E _ T H R O U G H

F I L E _ F L A G _ O V E R L A P P E D

I/O
70 API

GENERIC_READI
PIPE_ACCESS_DUPLEX
GENERIC_WRITE

PIPE_ACCESS_OUTBOUND GENERIC_READ

PIPE_ACCESS_INBOUND GENERIC_WRITE

4-2

4-1dwOpenMode

WRITE_DAC
DACLACCESS_SYSTEM_SECURITY
SACLWRITE_OWNER ID
SID
APIDACL2DACLSACLSID
CreateNamedPipeAPIdwPipeMode
4-2
ORPIPE_READMODE_
BYTE | PIPE_TYPE_BYTE

500 100

PIPE_READMODE_MESSAGE | PIPE_TYPE_MESSAGE
5 0 0
ReadFile500
ReadFile ERROR_MORE_DATA
PIPE_TYPE_MESSAGEPIPE_READMORE_BYTE

PIPE_TYPE_BYTEPIPE_READMORE_MESSAGE
C r e a t e N a m e d P i p e E R R O R _ I N VA L I D _
PARAMETER I/O
P I P E _ WA I TP I P E _ N O WA I T
PIPE_WAIT PIPE_NOWAIT
ReadFileI/O

4 71
I/O
PIPE_NOWAITI/O Win32
I/O Microsoft LAN Manager 2.0
ReadFileWriteFile Win32I/O
I/O
4-2


PIPE_TYPE_BYTE
PIPE_TYPE_MESSAGE
PIPE_READMODE_BYTE
PIPE_READMODE_MESSAGE
PIPE_WAIT
PIPE_NOWAIT

PIPE_NOWAITWin32I/O
Microsoft LAN Manager 2.0

n M a x I n s t a n c e s

1P I P E _ U N L I M I T E D _ I N S TA N C E S

5 P I P E _ U N L I M I T E D _ I N S TA N C E S

CreateNamedPipenOutBufferSizenInBufferSize

I / O

ReadFileWriteFile
n D e f a u l t Ti m e O u t

Wa i t N a m e P i p e

l p S e c u r i t y A t t r i b u t e s
N U L L

2 Windows NTWindows 2000


A P I S E C U R I T Y _ D E S C R I P TO R
72 API

SECURITY_DESCRIPTOR DACL
C r e a t e N a m e d P i p e
C o n n e c t N a m e d P i p eA P I

h N a m e d P i p e C r e a t e N a m e d P i p e
l p O v e r l a p p e d A P I
F I L E _ F L A G _ O V E R L A P P E D Wi n 3 2
I / O N U L LC o n n e c t N a m e d P i p e
I / O

ConnectNamedPipeAPI
WriteFileReadFile
DisconnctNamedPipe
4 - 1

4-1

4 73

NULL DACL

Windows NTWindows 2000Win32 API

SECURITY_ATTRIBUTES

l p S e c u r i t y D e s c r i p t o r S E C U R I T Y _ D E S C R I P TO R
S E C U R I T Y _ D E S C R I P TO R
D A C L N U L L

S E C U R I T Y _ D E S C R I P TO R
Win32API SECURITY_DESCRIPTOR
DACL
1) SECURITY_DESCRIPTORAPIInitializeSecurity
Descriptor
2) S E C U R I T Y _ D E S C R I P TO R D A C L A P I
SetSecurityDescriptorDacl
S E C U R I T Y _ D E S C R I P TO R
S E C U R I T Y _ AT T R I B U T E S
CreateNamedPipeWin32SECURITY_ATTRIBUTES
DACLAPI
74 API

4.2.2

4 - 1
API
I / O
C r e a t e N a m e d P i p e A P I
n M a x I n s t a n c e s
Win32 I/O I / O
I / O
I / O
Windows 8
1.

4 - 2

Echo
4-2 Win32

4 75
76 API

A P IC r e a t e T h r e a d
CreateThread PipeInstanceProc
PipeInstanceProc 4-1
DisconnectNamedPipeAPI
D i s c o n n e c t N a m e d P i p e
ConnectNamePipe
2. I/O
I/OWin32 APIReadFileWriteFile
I/OAPIOVERLAPPED
A P IG e t O v e r l a p p e d R e s u l t O V E R L A P P E D
I / O Win32 API

I / O
C r e a t e N a m e d P i p e n M a x I n s t a n c e s 1
dwOpenModeFILE_FLAG_OVERLAPPED4-3

4 77

4-3 Win32I/O
78API


4 79
80 API

C r e a t e N a m e d P i p e

I / O C o n n e c t N a m e d P i p e
I / O
DisconnectNamedPipe ConnectNamedPipe

3.

Windows NTWindows 2000
Windows NTWindows 2000

Windows NTWindows 2000


C r e a t e N a m e d P i p e S E C U R I T Y _ D E S C R I P TO R

C o n n e c t N a m e d P i p e A P I
I m p e r s o n a t e N a m e d P i p e C l i e n t

hNamedPipe CreateNamedPipe


Anonymous Identification Impersonation
D e l e g a t i o n


4 81

RevertToSelf RevertToSelfAPI

4.2.3

1) APIWaitNamedPipe
2) APICreateFile
3) APIWriteFileReadFile
4) APICloseHandle
WaitNamedPipe

l p N a m e d P i p e N a m e n Ti m e O u t

ConnectNamedPipe
WaitNamedPipe CreateFileAPI
CreateFile

l p F i l e N a m e
4
d w D e s i r e d A c c e s s G E N E R I C _ R E A D
G E N E R I C _ W R I T E
O R
C r e a t e N a m e d P i p ed w O p e n M o d e
PIPE_ACCESS_INBOUND
GENERIC_WRITE
d w S h a r e M o d e 0
82 API

l p S e c u r i t y A t t r i b u t e s N U L L
C r e a t e F i l e
dwCreationDisposition OPEN_EXISTINGCreateFile

dwFlagsAndAttributes FILE_ATTRIBUTE_NORMAL
F I L E _ F L A G _ W R I T E _ T H R O U G H F I L E _ F L A G _ O V E R L A P P E D
SECURITY_SQOS_PRESENTFILE_ATTRIBUTE_NORMALOR
FILE_FLAG_WRITE_THROUGHFILE_FLAG_OVERLAPPED
4-1SECURITY_SQOS_PRESENT

SECURITY_SQOS_PRESENT

SECURITY_ANONYMOUS
A n o n y m o u s

SECURITY_IDENTIFICATION
I d e n t i f i c a t i o n

SECURITY_IMPERSONATION
I m p e r s o n a t i o n

SECURITY_DELEGATION
D e l e g a t i o n

Windows 2000SECURITY_DELEGATION
Windows NT 4SP6
SECURITY_CONTEXT_TRACKING

S E C U R I T Y _ E F F E C T I V E _ O N LY

4.2.1
C r e a t e F i l e h Te m p l a t e F i l e N U L L
C r e a t e F i l e R e a d F i l eWr i t e F i l e

4 83
C l o s e H a n d l e

4 - 4
A P I
This is a test
4-4

4.3 API

C a l l N a m e d P i p e
84 API

Tr a n s a c t N a m e d P i p e A P I
C a l l N a m e d P i p e

CallNamedPipe

l p N a m e d P i p e N a m e U N C
l p I n B u ff e rn I n B u ff e r S i z e
l p O u t B u ff e rn O u t B u ff e r S i z e
l p B y t e s R e a d
n Ti m e O u t

Tr a n s a c t N a m e d P i p e
API MSNP
I/O TransactNamedPipe

hNamedPipe CreateNamedPipeCreateFileAPI
l p I n B u ff e rn I n B u ff e r S i z e
lpOutBuffernOutBufferSize
l p B y t e s R e a d
lpOverlappedTransactNamedPipe I/O
G e t N a m e d P i p e H a n d l e S t a t e S e t N a m e d P i p e H a n d l e S t a t e
G e t N a m e d P i p e I n f o

G e t N a m e d P i p e H a n d l e S t a t e


4 85
G e t N a m e d P i p e H a n d l e S t a t e
GetNamedPipeHandleState

hNamedPipeCreateNamedPipeCreateFileAPI
lpStatelpState
PIPE_NOWAITPIPE_READMODE_MESSAGElpCurInstances
lpMaxCollectionCount
l p C o l l e c t D a t a Ti m e o u t

l p U s e r N a m en M a x U e r N a m e S i z e

S e t N a m e d P i p e H a n d l e S t a t e G e t N a m e d P i p e H a n d l e S t a t e
SetNamedPipeHandleState

hNamedPipe CreateNamedPipeCreateFileAPI
lpMode lpMaxCollectionCount
l p C o l l e c t D a t a Ti m e o u t

GetNamedPipeInfoAPI

hNamedPipe CreateNamedPipeCreateFileAPI
l p F l a g s
l p O u t B u ff e r S i z e
86 API

l p I n B u ff e r S i z e
lpMaxInstance
A P IP e e k N a m e d P i p e

R e a d F i l eA P I


PeekNamedPipe

hNamedPipe CreateNamedPipeCreateFileAPI
l p B u ff e rn B u ff e r S i z e
l p B y t e s R e a d
lpTotalBytesAvail lpBytesLeftThisMessage

l p B u ff e r
0

4.4


http://support.microsoft.com/support
Q 1 0 0 2 9 1
\ \ . \ P i p e \ M y p i p e s \ \ . P i p e \ M y p i p e s \ P i p e 1
\\.\Pipe\Mypipes
Q 11 9 2 1 8 6 4 K
A P IWr i t e F i l e 6 4 K B
FALSEGetLastError ERROR_MORE_DATA
Q 11 0 1 4 8Wr i t e F i l eR e a d F i l eERROR_INVALID_PARAMETER
I / O Wr i t e F i l eR e a d F i l e
E R R O R _ I N VA L I D _ PA R A M E T E R
OVERLAPPEDO ff s e tOffsetHigh 0
Q 1 8 0 2 2 2Windows 95WaitNamedPipe253
Windows 95 Wa i t N a m e d P i p e
G e t L a s t E r r o r 2 5 3 2 5 3
Windows NT 4

4 87
161ERROR_BAD_PATHNAME 253
161ERROR_BAD_PATHNAME
Q 1 4 1 7 0 9 4 9
4 9
49
Q 1 2 6 6 4 5
Windows NT
5

4.5


Wi n d o w s
Windows NTWi n d o w s
2 0 0 0
Winsock


Winsock API

Wi n 3 2 Wi n s o c k
Wi n s o c k Wi n 3 2 Wi n s o c k
Wi n s o c k U n i xB e r k e l e yB S D
Wi n 3 2 Wi n s o c k
Winsock 2
Wi n s o c k
Wi n s o c k Winsock 2
Q o S
Winsock 2
Winsock 2Win32Windows CE

Wi n s o c kB S D
Winsock

5
Winsock 2

Winsock

5.1

5.1.1

5-1
1286432
2 5 6 1 2 8 6 4 3 2
90 Winsock API

preserving message boundaries

32 128

Win32 Win32
64 64

128 32

5-1

5 - 2
1 2 86 43 2
2
N a g l e
T C P / I P N a g l e

N a g l e

5-2
2 5 6 2 2 4
20 20

p s e u d o - s t r e a m

5-1 5-2


5 91

32
Win32 Win32
64 224
------------
128

5-2

5.1.2

5.1.3

92 Winsock API

5.1.4

T C P
F I N
A C K F I N F I N
FIN
ACK

5.1.5


L A N
L A N

L A N

5.1.6


I P
I P

11 Winsock

5.1.7

QoS

Q o S
Q o S
12 QoS

5 93
5.1.8

5.1.9

AB
A B A
B

NetBEUIWin32

5.1.10

Win32

Wi n s o c k Winsock 2
5 . 3

5.2

Win32
2 Wi n d o w s
Wi n s o c k 6
Winsock

5.2.1 Win32

Wi n 3 2
94 Winsock API

I P 5 - 1

5-1


()
IP MSAFD TCP
MSAFD UDP 65467
RSVP TCP
RSVP UDP 65467
IPX/SPX MSAFD 576
nwlnkipx[IPX]
MSAFD
nwlnkspx[SPX]
MSAFD
nwlnkspx[SPX][]
MSAFD
nwlnkspx[SPXII]
MSAFD
nwlnkspx[SPXII][]
NetBIOS 64KB
(65535)
64KB
(SP25) (65535)
AppleTalk MSAFD 64KB
AppleTalk[ADSP] (65535)
MSAFD
AppleTalk[ADSP][]
MSAFD 4096
AppleTalk[PAP]
MSAFD
AppleTalk[RTMP]
MSAFD
AppleTalk[ZIP]
ATM MSAFD ATM AAL5
ATM(AAL5)
MSAFD lrda[lrDA]

NetBIOSNetBIOS

5.2.2 Windows CE

Windows CE Wi n 3 2 T C P / I P
Windows CEWinsock 1.1 Winsock 2
Windows CE TCP/IP NetBIOS
NetBIOS APIWinsockNetBIOS

5.3 Winsock 2

Winsock 2

5 95

T C P / I P I P T C P
IP
W S A E n u m P r o t o c o l s

Winsock 1.1EnumProtocolsEnumProtocols Windows CE


WSAEnumProtocols WSAPROTOCOLS_INFO
EnumProtocols PROTOCOL_INFO
WSAPROTOCOLS_INFOWSAPROTOCOL_INFO

Winsock

Wi n s o c k Wi n s o c kWi n s o c k
WSAStartup
int WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData)
Wi n s o c k Wi n 3 2Winsock 2
2 . 2 Windows CE Winsock 1.1
Winsock 2.2 0 x 0 2 0 2 M A K E W O R D ( 2 , 2 )

W S A D ATA W S A D ATA
96 Winsock API

W S A S t a r t u p Wi n s o c k 5 - 2 W S A D ATA
WSADATA

WSADATA wVersionwHighVersion
U D P

5-2 WSADATA


wVersion Winsock
wHighVersion Winsock Winsock wVersion
szDescription Winsock
szSystemStatus
iMaxSockets Winsock 2
iMaxUdpDg UDP Winsock 2
lpVendorInfo Winsock 2

Wi n s o c k Wi n s o c k

int WSACleanup (void);
W S A S t a r t u p W S A C l e a n u p
Winsock DLL W S A C l e a n u p

Winsock 2Winsock 1.1 Wi n s o c k
1 . 1 Winsock 2
Winsock 1.1Winsock 2

W S A E n u m P r o t o c o l s N U L Ll p d w B u ff e r L e n g t h
l p P r o t o c o l B u ff e r 0 W S A E N O B U F S
l p d w B u ff e r L e n g t h

W S A P R O TO C O L _ I N F O
CD-ROM Enum.c
W S A P R O TO C O L _ I N F O d w S e r v i c e F l a g s 1
5-3
d w S e r v i c e F l a g s 1

5 97

5-3


XPl_CONNECTIONLESS

XPl_GUARANTEED_DELIVERY
XPl_GUARANTEED_ORDER

XPl_MESSAGE_ORIENTED
XPl_PSEUDO_STREAM
XPl_GRACEFUL_CLOSE

XPl_EXPEDITED_DATA
XPl_CONNECT_DATA
XPl_DISCONNECT_DATA
XPl_SUPPORT_BROADCAST
XPl_SUPPORT_MULTIPOINT
XPl_MULTIPOINT_CONTROL_PLANE
XPl_MULTIPOINT_DATA_PLANE
XPl_QOS_SUPPORTED QoS
XPl_UNI_SEND
XPl_UNI_RECV
XPl_IFS_HANDLES Installable File System
ReadFile WriteFileAPI
XPl_PARTIAL_MESSAGE WSASendWSASendToMSG_PARTIAL


i P r o t o c o liSocketTypei A d d r e s s F a m i l yi P r o t o c o l

iSocketTypeiAddressFamily

5.4 Windows

Winsock
Wi n s o c k A P I
Wi n 3 2S O C K E T

98 Winsock API

af UDPTCP
A F _ I N E T I P t y p e
SOCK_STREAMSOCK_DGRAMSOCK_SEQPACKETSOCK_RAW
S O C K _ R D M p r o t o c o l
5 - 4

5-4


Internet AF_INET TCP SOCK_STREAM IPPROTO_IP
Protocol
(IP)
UDP SOCK_DGRAM IPPROTO_UDP
Raw sockets SOCK_RAW IPPROTO_RAW
IPPROTO_ICMP
IPX/SPX AF/NS MSAFD SOCK_DGRAM NSPROTO_IPX
nwlnkipx[IPX]
AF_IPX MSAFD SOCK_SEQPACKET NSPROTO_SPX
nwlnkspx[SPX]
MSAFD SOCK_STREAM NSPROTO_SPX
nwlnkspx[SPX]
[Pseudo-stream]
MSAFD SOCK_STREAM NSPROTO_SPXII
nwlnkspx[SPXII]
MSAFD SOCK_STREAM NSPROTO_SPXII
nwlnkspx[SPXII]
[Pseudo-stream]
NetBIOS AF_NETBIOS Sequential SOCK_SEQPACKET LANA number
Packets
Datagrams SOCK_DGRAM LANA number
AppleTalk AF_APPLETALK MSAFD SOCK_RDM ATPROTO_ADSP
AppleTalk[ADSP]
MSAFD SOCK_STREAM ATPROTO_ADSP
AppleTalk[ADSP]
[Pseudo-stream]
MSAFD SOCK_RDM ATPROTO_PAP
AppleTalk[PAP]
MSAFD SOCK_DGRAM DDPPROTO_RTMP
AppleTalk[RTMP]
MSAFD SOCK_DGRAM DDPPROTO_ZIP
AppleTalk[ZIP]
ATM AF_ATM MSAFD ATM AAL5 SOCK_RAW ATMPROTO_AAL5
Native ATM(AAL5) SOCK_RAW ATMPROTO_AAL5
Infrared AF_IRDA MSAFD Irda[IrDA] SOCK_STREAM IRDA_PROTO
Sockets _SOCK_STREAM

5 99

AT M
A F _ AT M
S O C K _ R AW
0a ft y p e
W S A P R O TO C O L _ I N F Od w P r o v i d e r F l a g s
socketWSASocket 0
WSASocket WSAEnumProtocols
W S A P R O TO C O L _ I N F O l p P r o t o c o l I n f o W S A S o c k e t
aftypeprotocol FROM_PROTOCOL_INFO
W S A P R O TO C O L _ I N F O

W S A S o c k e t 0
Winsock dwFlags
WSA_FLAG_OVERLAPPED
WSA_FLAG_MULTIPOINT_C_ROOT
WSA_FLAG_MULTIPOINT_C_LEAF
WSA_FLAG_MULTIPOINT_D_ROOF
WSA_FLAG_MULTIPOINT_D_LEAF
W S A _ F L A G _ O V E R L A P P E D I / O
Wi n s o c k 8 s o c k e t
WSA_FLAG_OVERLAPPED WSASocket

W S A S o c k e t W S A P R O TO C O L _ I N F O

I P
U D PI C M PI C M P
I C M P
U D PT C P I P 1 3

5.5

Windows 95Winsock 1.1 Wi n s o c k


Webhttp://www.microsoft.com/Windows 95/downloads/ Winsock
2 SDK Winsock 2 Windows 98
Windows NT 4Windows 2000Wi n s o c k 2 Windows CE
Winsock 1.1
100 Winsock API

Windows CETCP/IP
Windows 95Windows 98Winsock API NetBIOS
A F _ N E T B I O S W S A E n u m P r o t o c o l s
N e t B I O S N e t B I O S
NetBIOS NetBIOS1 RSVP
QoSATM Windows 98Windows 2000

Winsock APIOSI

O S I 4 1 - 1
Wi n s o c k W S A E n u m P r o t o c o l s O S I

UDPTCP IP
Winsock API Wi n s o c k
Wi n d o w s
Wi n s o c k Wi n s o c k

5.6

T C P / I P
A p p l e Ta l kN e t B I O SI P X / S P X

Windows 95 NetBEUIIPX/SPX
T C P / I P
Windows 2000 T C P / I P
N e t B I O S T C P / I P

T C P / I P
AT M AT M
Wi n s o c k AT M T C P / I P
AT M T C P / I P T C P / I P

5.7



5 101

W S A S o c k e ts o c k e t
W S A E n u m P r o t o c o l s W S A P R O TO C O L _ I N F O
WSASocket


6
Wi n s o c k
Wi n s o c k
Winsock 2

g e t s o c k o p t 1 0

10

6.1 IP

Internet Protocol, IP
L A N
WAN IP
TCPUDP IP

6.1.1 TCP


Transmission Control Protocol, TCP
TCP TCP

6.1.2 UDP

User Datagram Protocol, UDP U D P

T C PU D P I P T C P / I PU D P / I PWi n s o c k
AF_INET IP Winsock 1.hWinsock 2.h

6.1.3

I P I P 3 2 I P v 4
T C PU D P I P

6 103
I P Wi n s o c k
SOCKADDR_IN IP

sin_familyAF_INETWinsock IP

IP6

I P 6 I P I P 1 6 I P v 4
I P v 6 Wi n s o c k
I P v 6 Wi n 3 2 I P v 6 Wi n d o w s
2 0 0 0 I P v 6 h t t p : / / r e s e a r c h .
m i c r o s o f t . c o m / m s t r i p v 6 / 6

T C PU D P s i n _ p o r t

F T PH T T P
I A N A RFC 1700

0 ~ 1 0 2 3I A N A
1 0 2 4 ~ 4 9 1 5 1I A N A

4 9 1 5 2 ~ 6 5 5 3 5
1 0 2 4 ~ 4 9 1 5 1
49152~65535 IANA
bind API
WinsockWSAEADDRINUSE7Winsock
S O C K A D D R _ I Ns i n _ a d d r I P 4
I P I P
a . b . c . d
4 sin_ zero
SOCKADDR_INSOCKADDR
i n e t _ a d d r I P 3 2

unsigned long inet_addr(


const char FAR *cp
);
104 Winsock API

cp IP IP
3 2

1.
I P
INADDR_ANY

I N A D D R _ B R O A D C A S T I P U D P
SO_BROADCAST9
2.
b i g - e n d i a nl i t t l e - e n d i a n
Intel 86
I P
h o s t - b y t e
I P
network-byte

API

h t o n lW S A H t o n lh o s t l o n g 4 h t o n l
W S A H t o n l l p n e t l o n g
h t o n sW S A H t o n sh o s t s h o r t 2 h t o n s
2 WSAHtonslpnetshort


6 105

i n e t _ a d d r h t o n s
SOCKADDR_IN

6.1.4

I P T C PU D PI P T C P
I P A F _ I N E T S O C K _ S T R E A M
socketWSASocket 0

U D P I P
s o c k e t S O C K _ S T R E A M W S A S o c k e t I P
S O C K _ R AW 1 3 S O C K _ R AW

6.1.5

Wi n s o c k I P I P I P
I P
Winsock IP
WindowsgethostbynameWSAAsynGetHostByName API
HOSTENT
106 Winsock API

h _ n a m eD N S
FQDN
I P h _ a l i a s e s
h _ a d d r t y p e h _ l e n g t h h _ a d d r _ l i s t
h_addr_list IP
I P

gethostbyname API

n a m e
H O S T E N T H O S T E N T

WSAAsyncGetHostByName API g e t h o s t b y n a m e
Windows WSAAsynGetHostByName

b W n d w M s g
name buf
H O S T E N T H O S T E N T
MAXGETHOSTSTRUCT
g e t h o s t b y a d d rWSAAsynGetHostByName API
I P I P
gethostbyaddr

addr IP lenaddr
t y p e A F _ I N E T I P
WSAAsyncGetHostByAddr APIgethostbyaddr


6 107
I P
T C PU D P
T C P
T C PS P X 2 1F T P 8 0F T T P
1 ~ 1 0 2 3
T C P 1 0 2 3
g e t s e r v b y n a m eW S A A s y n c G e t S e r v B y N a m e
s e r v i c e s Windows 95Windows 98
W I N D O W S Windows NT Windows 2000 W I N D O W S
\System32\Drivers\Etcgetservbyname

n a m e F T P
n a m e f t pp r o t o n a m e
W S A A s y n c G e t S e r v B y N a m eg e t s e r v b y n a m e

Windows 2000 T C PU D P
WSASetServiceIP API
WSALookupServiceBeginWSALookupServiceNext
WSALookupServiceEnd10

6.2

IrSock Windows

Windows 98Windows 2000

6.2.1

Infrared Data Association, IrDA

I r D A
IrDA Winsock
I P
IrSock

TCP/IPIP IrSock
108 Winsock API

i r d a A d d r e s s F a m i l y A F _ I R D Ai r d a D e v i c e I D4
IrSock
IrDA
i r d a S e r v i c e N a m e

6.2.2

I r D A L S A P - S E LI A S
I A S L S A P - S E L
I P
L S A P - S E L
L S A P - S E L I r D A Wi n 3 2
L S A P - S E L 11 2 7 I A S
WINS LSAP-SEL
I A S
MyServer SOCKADDR_IRDA
I A S
M y S e r v e r I r D A : Ti n y T P : L s a p - S E L 3 L S A P - S E L
L S A P - S E L
S O C K A D D R _ I R D A I A S M y S e r v e r
I r D A : Ti n y T P : L s a p - S E L I A S3 g e t s o c k e t o p t
IRLMP_IAS_QUERYIAS
I A S
L A S P - S E LI A S I A S I r D A
S O C K A D D R _ I R D A L S A P - S E L - x x x
I A S x x x 11 2 7
L S A P - S E L L S A P - S E L
I A S L S A P - S E L

6.2.3


Windows CE Windows 98Wi n d o w s
2000 Windows CE IrSock
Windows 98Windows 2000 IrSock


6 109
Windows CEAF_irda.h
IrSock
Af_irda.h
g e t s o c k o p t I R L M P _ E N U M _ D E V I C E
DEVICELISToptval Windows 98Windows
2000Windows CE

Windows 98 Windows 2000 Windows CE Windows 98


Windows 2000 W I N D O W S _ I R D A _ D E V I C E _ I N F O W C E _
I R D A _ D E V I C E _ I N F O # d e f i n e
DEVICELIST IRDA_DEVICE_INFO

#define IRDA_DEVICE_INFO
I R L M P _ E N U M _ D E V I C E S
getsockopt ID
110 Winsock API

g e t s o c k o p t D E V I C E L I S T n u m D e v i c e 0
numDevice 0 DeviceIRDA_DEVICE_INFO

getsockopt
Sleep

IrSock
1) AF_IRDA SOCK_STREAM
2) SOCKADDR_IRDA
3) SOCKADDR_IRDAbind
4) backloglisten
5) accept
I r S o c k

1) AF_IRDA SOCK-STREAM
2) IRLMP_ENUM_DEVICESgetsockopt
3) I D SOCKADDR_ IRDA

4) S O C K A D D R _ I R D A c o n n e c t 3
4

6.2.4 IAS


IAS
I R L M P _ I A S _ Q U E RY
g e t s o c k o p t I A S _ Q U E RY
Windows 98Windows 2000Windows CE

6 111


LSAP-SEL irdaClassName LSAP-
S E L I r D A : I r L M P : L s a p S e li r d a A t t r i b u t e N a m e
irdaDeviceID

6.2.5

IrSock
s o c k e tW S A S o c k e t
Winsock 1.1 Windows CEsocket

IRDA_PROTO_SICK_STREAM
AF_IRDA
112 Winsock API

AF_IRDA

6.2.6

I r D A S O _ s o c k e t S O _ L I N G E R
I r S o c k A F _ I R D A
9 9

6.3 IPX/SPX

I P X Novell NetWa r e
IPX

IPX IPX
S P X SPX II S P X I P X Wi n s o c k
Windows IPX Windows 95Windows 98Windows NT
Windows 2000Windows CE IPX

6.3.1

IPX IPX 4
I P X
6
IPXIPX
I P XWi n s o c k S O C K A D D R _ I P X
Wsipx.hWinsock 2.hSOCKADDR_
IPX

sa_familyAF_IPXsa_netnum4 IPX
sa_nodenum6 sa_socket
IPX

6.3.2

I P X I P X A F _ I P X
NSPROTO_IPXsocketWSASocket

6 113
0
IPX
IPX
I P X S P XSPX II s o c k e t
W S A S o c k e t S O C K _ S E Q PA C K E T
SOCK_STREAM NSPROTO_SPXNSPROTO_SPX II
S O C K _ S T R E A M
T C P / I P 2 0 0 0
2000 SPXSPX II
S P X SOCK_ STREAM
Winsock recvW S A R e c v S O C K _ S T R E A M
r e c v
SOCK_SEQPACKET

1.
I P X b i n d S O C K A D D R _ I P X
b i n d I P X
Windows 95
Windows 98Windows NTWindows 2000

g e t s o c k n a m e

114 Winsock API


2.
I P X I P X
Windows 95Windows 98Windows NTWindows 2000

Windows 95Windows 98
Windows NTWindows 2000 NetWare I P X


SOCKADDR_IPXsa_netnumsa_nodenum
0IPX
A
B
3. WinsockIPX
N S P R O TO _ I P X Winsock IPX IPX
I P X N o v e l l I P X

0 1 h R I P
0 4 h S A P
0 5 h S P X
11 hN e t Ware CoreNCP
1 4 hNovell NetBIOS
IPX NSPROTO_IPX + Nsocket API n
0 4 hS A P I P X
socket

4.
Wi n s o c kI P X
I P X S A P I P X
1 0 Winsock 2
WSASetService API S A P I P X
W S A A e t S e r v i c e

6 115
Winsock 2 A P I
WSALookupServiceBeginWSAlookupServiceNextWSAlookupServiceEnd
I P X S A P
I P X S A P
SAP IPX SAP

6.4 NetBIOS

N e t B I O S Wi n s o c k 1N e t B I O S
Wi n s o c kN e t B I O S
N e t B I O SL A N A 1
WinsockNetBIOS
NetBIOSWinsockWindows NTWindows 2000
Windows 95Windows 98Windows CE

6.4.1

N e t B I O S N e t B I O S 1 N e t B I O S1 6
N e t B I O S

F O O F O O

WinsockNetBIOSWsanetbs.h

s n b _ f a m i l y A F _ N E T B I O Ss n b _ t y p e
snb_type

snb_name NetBIOS

116 Winsock API


_ s n b S O C K A D D R _ N B
s n b _ f a m i l y A F _ N E T B I O S _ t y p e
N E T B I O S _ U N I Q U E _ N A M EN E T B I O S _ G R O U P _ N A M E_ n a m eN e t B I O S
N E T B I O S _ N A M E _ L E N G T H1
s n b _ n a m e s n b _ n a m e 1 6
_port
Wi n s o c kN e t B I O S
T C PI r D A
N e t B I O S
Wi n s o c kN e t B I O S

6.4.2

LANA NetBIOS API


LANA NetBIOS
N e t B I O S
socketWSASocket

WSASockettype
SOCK_DGRAMSOCK_SEQPACKETprotocol
LANA
W S A P R O TO C O L _ I N F O
dwFlagsWSA_FLAG_OVERLAPPEDWSASocket
WSA_FLAG_OVERLAPPED
L A N A
WinsockLANAWinsockWSAEnumProtocols
N C B E N U M N e t b i o s
L A N A 5 W S A E n u m P r o t o c o l s
NetBIOS

6 117

AF_NETBIOS
SOCK_SEQPACKET
SOCK_DGRAM
NetBIOSLANAWSAPROTOCOLS_I N F O
iProtocol LANAiProtocol0x800000000Winsock
j

6.5 AppleTalk

Wi n s o c k A p p l e Ta l k
MAC AppleTalkAppleTalkNetBIOS

AppleTalkN e t B I O S AppleTalk

6.5.1

A p p l e Ta l k
3 2
A p p l e Ta l k
A p p l e Ta l k Wi n d o w s

A p p l e Ta l kN B P

AppleTalkRT M P AppleTalk

WinsockAppleTalk
118 Winsock API

S O C K A D D R _ AT
b i n dc o n n e c tW S A c o n n e c tWi n s o c k
g e t s o c k o p ts e t s o c k o p t

6.5.2 AppleTalk


S O _ R E G I S T E R _ N A M E s e t s o c k o p t A p l p l e Ta l k
WSH_NBP_NAME

W S H _ R E G I S T E R _ N A M E W S H _ D E R E G I S T E R _ N A M E
WSH_REMOVE_NAMEWSH_NBP_NAME

AppleTalk

6 119

M Y _ Z O N E M Y _ T Y P E M Y _ O B J E C T
AppleTalk *
AppleTalkADSPSOCK_STREAM
b i n d
s a t _ s o c k e t
b i n d

AppleTalkSOL_APPLETALKlevelSO_REGISTER_NAME
o p t n a m e s e t s o c k o p t
WSH_REGISTER_NAMEsetsockopt
W i n s o c k
WSAEADDRINUSE100480x02740h AppleTalk

6.5.3 AppleTalk


Wi n s o c k SO_LOOKUP_ NAME
g e t s o c k o p t A p p l e Ta l k W S A _ L O O K U P _ N A M E

120 Winsock API



S O _ L O O K U P _ N A M E g e t s o c k o p t W S H _
L O O K U P _ N A M E L o o k u p Tu p l eW S H _ N B P _ N A M E
g e t s o c k o p t W S H _ N B P _ T U P L E A p p l e Ta l k
6 - 1 A t a l k n m , c A p p l e Ta l k
6-1 AppleTalk
g e t s o c k o p tSO_LOOKUP _ZONESS O _ L O O K U P _
MYZONE
6-1 AppleTalk

6121
122Winsock API


6123
124 Winsock API

A p p l e Ta l kS O _ L O O K U P _ M Y Z O N ES O _ L O O K U P _
Z O N E SS O _ L O O K U P _ N A M Eg e t s o c k o p t
g e t s o c k o p t
6 - 1
S O _ L O O K U P _ N A M E c L o o k u p B u ff e r g e t s o c k o p t
P W S H _ L O O K U P _ N A M E
g e t s o c k o p t p Tu p l e B u ff e r
W S H _ L O O K U P _ N A M E
PWSH_NBP_TUPLE WSH A p p l e Ta l k
W S H _ N B P _ T U P L E
AppleTalk 9

6.5.4

AppleTalkWinsock 1.1
AppleTalk Atalkwh.h
W S A E n u m P r o t o c o l s W S A P R O TO C O L _ I N F O
s o c k e tW S A S o c k e t A p p l e Ta l k
6-1
6-1 AppleTalk


MSAFD AppleTalk[ADSP] SOCK_RDM ATPROTO_ADSP
MSAFD AppleTalk SOCK_STREAM ATPROTO_ADSP
[ADSP][Pseudo-Stream]
AF_APPLETALK
MSAFD AppleTalk[PAP] SOCK_RDM ATPROTO_PAP
MSAFD AppleTalk[RTMP] SOCK_DGRAM DDPPROTO_RTMP
MSAFD AppleTalk [ZIP] SOCK_DGRAM DDPPROTO_ZIP

6.6 ATM

ATM Windows 98Windows 2000


Winsock 2 AT M L A NWA N
AT M
VC QOS Winsock ATM
AT M AT M 6 - 1
ATM
AT M AT M
AT M AT M


6 125

AT M I P AT M I P
I P AT M I P
1 2

ATM

ATM
ATM

ATM
ATM

ATM

6-1 ATM

6.6.1

AT M U N I N N IU N I
AT M N N I

U N I ATM
AT M AT M
ATM
N N I ATM
WinsockATM UNI
Windows 2000Windows 98SP1WinsockUNI3.1
Wi n s o c kS A P AT M
ATM UNI AT M
AT M AT M
SAPWinsock SOCKADDR_ATM
SAPWinsockUNIATM
S A P AT M W i n s o c k
SOCKADDR_ATM
126 Winsock API

satm_family AF_ATMsatm_number ATM


NSAPATM ATM_ADDRESS
E.164
NSAPNASPATMAESAATM_ADDRESS

AddressTypeE.164ATM_E164
N S A P AT M _ N S A P
SAP AddressType6-2
N u m o f D i g i t s AT M _ A D D R _ S I Z EA d d r AT M
20E.164NASP
S O C K A D D R _ AT M s a t m _ b l l is a t m _ b h l i AT M
BLLIBLLI ATM
B L L IB H I L ATM FormI E T F
ATM LAN
ATM IP ATM UNI 3.1
ATM Form IETF http://www.ietf.org
6-2 ATM

ATM_ADDRESS AddressType
ATM_E164 E.164SAP
ATM_NSAP NSAPATM AESASAP

SAP_FIELD_ANY_AESA_SEL NSAPATM
SAP
SAP_FIELD_ANY_AESA_REST N S A P
SAP

BHLIBLLI

6 127

AT M
Winsock BHLIBLLI SAP_FIELD_ABSENT
AT M _ B L L I
AT M _ B L L I
AT M _ B H L I HighLayerInfoType

SOCKADDR_ATMNSAPSAP

AT M A S C I I 4 0
ATM_ADDRESSNSAPE.16420 ATM_NSAP

20 Winsock
APIWSAStringToAddress 40 ATM ASCII
AT M _ A D D R E S S A P I
A S C I I 6 - 2 A t o H
Wi n s o c k 7

6-2 ATM
128 Winsock API

6.6.2

AT M AT M
ATM
AF_ATM S O C K _ R AWs o c k e t W S A S o c k e t
ATMPROTO_AAL5

ATMWindows
AT M
WSASATMWSAPROTOCOL_INFO
5 socketWSASocket
Winsock

6 129
ATM Winsock

ATM

6.6.3 SAP

AT M 2 0
Wi n s o c k N S A P
E . 1 6 4
SAP WinsockSAPATM
Winsock ATM SAP
S A P AT M _ E 1 6 4
AT M _ N S A P SOCKADDR_ATM S A P AT M
AF_ATM
6 - 2 S A P _ F I E L D _ A N Y _
A E S A _ S E LS A P _ F I E L D _ A N Y _ A E S A _ R E S TAT M _ E 1 6 4AT M _ N S A P
SOCKADDR_ATMATM Winsockbind API
7 S A P Wi n s o c k S A P

SAP_FIELD_ANY_AESA_SEL Winsock ATMWinsock


S A P AT M

Wi n s o c kW S A E A D D R I N U S E
S A P
S A P _ F I E L D _ A N Y _ A E S A _ R E S T AT M
b i n d
W S A E A D D R I N U S E S A P _ F E I L D _ A N Y _ A E S A _ S E L
AT M _ A D D R E S S AT M S A P _ F I E L D _
A N Y _ A E S A _ R E S T AT M 1 9 0
130 Winsock API

S A P _ F I E L D _ A N Y _ A E S A _ R E S T
S A P _ F I E L D _ A N Y _ A E S A _ S E L
S A P _ F I E L D _ A N Y _ A E S A _ R E S T AT M _ N S A PAT M _ E 1 6 4

7 SAP
Atmadm.exe ATM
AT M 6 - 3

6-3


-c VC
-a ATM
-s ILMI

6.6.4

WinsockATM
2 0 AT M AT M 1 0
Windows 2000 ATM

6.7 Winsock 2

Winsock 2WSAAddressToStringWSAStringToAddress
S O C K A D D R

A F _ I N E TAF_ATM W S A A d d r e s s To S t r i n g

lpsaAddressSOCKADDR
SOCKADDR dwAddressLength
lpProtocolInfo WSAEnumProtocols API
5 N U L L
lpsaAddresslpszAddressString
lpdwAddressStringLengthlpszAddressString

6 131
lpszAddressString
WSAEFAULTlpdwAddressStringLength
W S A S t r i n g ToAddress API
SOCKADDRWSAStringToAddress

AddressString 6-4
6-4

IP XXX.XXX.XXX.XXX:YXIP Y
ATM N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N4 0N
20 ATM

A d d r e s s f a m i l y A d d r e s s S t r i n g l p P r o t o c o l I n f o
N U L LWi n s o c k
A d d r e s s f a m i l y
WSAEnumProtocol API
A d d r e s s S O C K A D D R
lpAddressLength SOCKADDR

6.8

Wi n s o c k

Winsock

7 Winsock
A P I
Wi n s o c k

T C P / I P 6

Wi n s o c k
6

Wi n s o c k
Winsock
Winsock8 Winsock I/O
APIWinsock 1Winsock 2
W S A Winsock 2 A P I
WSA Winsock 1 socket
Winsock 2 W S A S o c k e t Winsock 2

7.1 Winsock

Winsock Winsock DLL Winsock


Winsock SOCKET_ERROR WSANOTINITIALISED
WinsockWSAStartup

w Ve r s i o n R e q u e s t e d Wi n s o c k
Winsock MAKEWORD(X,Y)x
y wVersionRequested
l p W S A D a t a L P W S A D ATA W S A S t a r t u p


7Winsock 133

W S A S t a r t u p wVersion Wi n s o c k w H i g h Ve r s i o n
Wi n s o c k Wi n s o c k
WinsockszDescriptionszSystemStatus
Wi n s o c k iMaxSockets
i M a x U d p D g
WSAEnumProtocols
lpVendorInfo Wi n s o c k
Win32
7 - 1 Wi n d o w s Wi n s o c k
Winsock 1.x Wi n s o c k
Winsock 1 Wi n s o c k . h Winsock 2
Winsock 2.h
7-1 Windows Winsock

Winsock
Windows 95 1.12.2
Windows 98 2.2
Windows NT 4.0 2.2
Windows 2000 2.2
Windows CE 1.1

Windows 95Winsock 2 h t t p : / / w w w. m i c r o s o f t . c o m / Wi n d o w s
95/downloads/
Winsock 2 Wi n s o c k
Winsock 1.1
Windows NT 4.0 Winsock1.1 Winsock 2 DLL
Winsock

Winsock

Windows NT 4.0
s e n dW S A S e n d F D _ W R I T E F D _ W R I T E
F D _ W R I T E
W S A E W O U L D B L O C K
send WSAsend FD_WRITE
Q 1 8 6 2 4 5
Windows NT 4.0Service Pack4Windows 2000
Winsock
Winsock 3 2 . 2
134 Winsock API

Winsock WSAStartup WSADATA
wHighVersion

7.2

Wi n s o c k
Wi n s o c k

Wi n s o c k S O C K E T _ E R R O R
A P I S O C K E T _ E R R O R - 1
Winsock WSAGetLastError

WSAGetLastError
Wi n s o c k
Winsock 1.h Winsock 2.h Winsock 2.h
Winsock 2 A P I
# WSAE

7.3

Wi n s o c k

7.3.1 API


T C P / I P
I P
Winsock
A P Ib i n d A P Il i s t e n
a c c e p tW S A A c c e p t
API
A P I 7 - 1

1. bind
bind


7Winsock 135
Winsock Winsock
socket/WSASocket socket/WSASocket

accept/WSAAccept connect/WSAConnect

7-1 Winsock

s
struct sockaddr
b i n d s t r u c t
sockaddr
TCP

s o c k a d d r _ i n 6T C P / I P
T C P / I P
5 1 5 0 I P b i n d
IP
b i n d S O C K E T _ E R R O R b i n d
W S A E A D D R I N U S E T C P / I PW S A E A D D R I N U S E
I P I P TIME_WAIT
bind WSAEFFAULT
2. listen
b i n d
APIlisten
136 Winsock API

b a c k l o g
backlog2

W S A E C O N N R E F U S E D

b a c k l o g
b a c k l o g

l i s t e n W S A E I N VA L
l i s t e n b i n d b i n d l i s t e n
WSAEADDRINUSE bind
3. acceptWSAAccept
a c c e p tW S A A c c e p t
accept

s
S O C K A D D R _ I N a d d r l e nS O C K A D D R _ I N
S O C K A D D R S O C K A D D R _ I N
a c c p e t a c c e p t
a d d r I P a d d r l e n
accept

Winsock 2 WSAAccept

acceptWinsock 1 lpfnCondition


7Winsock 137

lpCallerId WSABUF Winsock 2

l e n b u f
buf
l p C a l l e r I db u f
b u f S O C K A D D R T C P / I P
S O C K A D D R _ I N I P
ID
l p C a l l e r D a t a
NULL TCP

W S A E n u m P r o t o c o l s Wi n s o c k
5
l p S Q O Sl p G Q O S Q O S
Q O S
Q O S N U L L l p S Q O S
lpGQOS Winsock 12
QOS 12
lpClalleeId WSABUF
b u f S O C K A D D R
INADDR_ANY

lpClalleeDatalpCallerData lpCalleeData WSABUF

l e n
WSABUFbuf
l e n
l e n 0 l e n 0
Win32


138 Winsock API

C F _ A C C E P T
CF_REJECT CF_DEFER
WSAAcccept
W S A A c c e p t
Win32

C F _ R E J E C T
12
INVALID_SOCKET W S A E W O U L D B L O C K

C F _ D E F E RW S A A c c e p t W S AT RY _ A G A I N
CF_REJECTWSAAcceptWSAECONNREFUSED

7.3.2 API


1) socketWSASocket
2)
3) connectWSAConnect
6 I P
6

TCP

Winsock TCP TCP


Winsock API
TCP
C L O S E D
S Y N S Y N _ S E N T S Y N
S Y N - A C K A C K
E S TA B L I S H E D S Y N - A C K
CLOSED

L I S T E N S Y N
S Y N - A C K S Y N _ R C V D
ACK ESTABLISHED
E S TA B L I S H E D
7 - 2
F I N c l o s e s o c k e t
s h u t d o w nS D _ S E N D F I N

7Winsock 139
FIN_WAIT_1 A C K
F I N _ WA I T _ 2 F I N
ACK TIME_WAIT

: FIN
: FIN : ACK

: FIN
FIN_WAIT_1 CLOSING CLOSE_WAIT
: ACK

:ACK : FIN ACK : ACK


: ACK : FIN
: FIN TIME_WAIT
FIN_WAIT_2 LAST_ACK
: ACK (2MSL)
CLOSED

7-2 TCP

T I M E _ WA I T 2 M S L M S L
Maximum Segment Lifetime
I PT T L 0
T T L 1
TIME_WAIT M S L T C P
A C K F I N M S L
CLOSED
T I M E _ WA I T
F I N A C K
( )
F I N
F I N A C K F I N
C L O S I N G A C K
TIME_WAIT
FIN_WAIT_1
T I M E _ WA I T F I N
F I N - A C K F I N
FIN ACK
TIME_WAIT TCP 2MSL
I P I P
T C P T I M E _ WA I T
TIME_WAIT
W S A E A D D R I N U S E
TIME_WAIT
SO_REFUSEADDR9
FINACK
140 Winsock API

C L O S E _ WA I T

F I N
L A S T _ A C K A C K C L O S E D

T C P / I P R F C 7 9 3 h t t p : / / w w w. r f c -
editor.org

connectWSAConnect
c o n n e c t W S A C o n n e c t
Winsock 1

s T C P n a m e
T C P S O C K A D D R _ I Nn a m e l e n
Winsock 2

connect API l p C a l l e r D a t a
lpCalleeData lpCallerData
l p C a l l e e D a t a
WSABUF
lpCallerDatalenbuf lpCalleeData
lenbuflpSQOS
l p G Q O S Q O S
lpQOS s lpGQOS
lpQOS QOS
c o n n e c t
W S A E C O N N R E F U S E D W S A E T I M E D O U T

7.3.3

API

7Winsock 141
sendWSASend Winsock 2
recvWSARecv Winsock 2
char
Unicode Windows CE Windows CE
UnicodeUnicode char* char*
Winsock API
2 Wi n s o c k
APIWideCharToMultiByteUNICODEASCII
S O C K E T _ E R R O R
W S A G e t L a s t E r r o r W S A E C O N N A B O RT E D
W S A E C O N N R E S E T
W S A E W O U L D B L O C K
8
Winsock I/O
1. sendWSASend
APIsend

S O C K E T b u f
l e n
f l a g s0M S G _ D O N T R O U T EM S G _ O O B f l a g s
M S G _ D O N T R O U T E

MSG_OOB
send SOCKET_ERROR
W S A E C O N N A B O RT E D

W S A E C O N N R E S E T
W S A E T I M E O U T

send APIWinsock 2WSASend


142 Winsock API

W S A B U F
W S A B U F
W S A B U F
I / O

WSABUFlpNumberOfBytesSentDWORDWSASend
dwFlagssendlpOverlapped
l p C o m p l e t i o n R O U T I N E I / O I / OWi n s o c k I / O
8
W S A S e n d l p N u m b e r O f B y t e s S e n t 0
SOCK_ERRORsend
2. WSASendDisconnect


WSASendDisconnect
S D _ S E N D s h u t d o w n
b o u n d D i s c o n n e c t D a t a
W S A S e n d D i s c o n n e c t i o n S O C K E T _ E R R O R s e n d


Out-of-band, OOB

OOB
T C PO O B 1 U R GT C P 1 6

TCP.RFC 793 TCP
T C P
RFC 1122
Wi n s o c k O O BT C PO O B
O O B SIOCATMARK
ioctlsocket9SIOCATMARK
Wi n s o c k

7Winsock 143

OOB SO_OOBINLINE 9

Te l n e tR l o g i n Te l n e t
R l o g i n
Win32

3. recvWSARecv
recv

s buf
l e n b u f f l a g s 0
MSG_PEEKMSG_OOB 0
M S G _ P E E K


MSG_PEEK

T C P

MSG_OOB
recv
r e c v W S A E M S G S I Z E

WSAEMSGSIZE
W S A R e c v r e c v I / O
WSARecv

s l p B u ff e r s
144 Winsock API

W S A B U F d w B u ff e r C o u n t W S A B U F
l p N u m b e r O f B y t e s R e c e i v e d
l p F l a g s M S G _ P E E KM S G _ O O BM S G _ PA RT I A L
M S G _ PA RT I A L
W S A R e c v
W S A R e c v
MASG_PARTIAL

M S G _ PA RT I A L
5l p O v e r l a p p e dl p C o m p l e t i o n R O U T I N E
I/O8
4. WSARecvDisconnect
WSASendDisconnect

W S A S e n d D i s c o n n e c t
WSABUF
W S A S e n d D i s c o n n e c t
W S A R e c v D i s c o n n e c t
SD_RECVshutdown
5. WSARecvEx
WSARecvEx Winsock 1 flags recv
MSG_PARTIAL

f l a g s M S G _ PA RT I A L
MSG_PARTIAL
f l a g s W S A R e c v E x
W S A R e c v E x
W S A E M S G S I Z E M S G _ PA RT I A L
W S A E M S G S I Z E
M S G _ P E E K M S G _ O O B
WSARecvEx

7.3.4



7Winsock 145

2048 send

s e n d 2 0 4 8 r e t

TCP/IP

0
0 send
1 0 2 4 1 0 2 4

512
146 Winsock API


4
4

I/O

Berkeley Socket R e c vWr i t e v


WSARecvWSARecvFromWSASendWSASendToWinsock 2

32 64
1 6 W S A B U F
WSASend 3WSABUF
WSARecv 326416
I / O W S A B U F


WSAEMSGSIZE
MSG_PARTIAL

7.3.5


c l o s e s o c k e t
c l o s e s o c k e t
closesocket shutdown
API
1. shutdown

shutdownshutdown

7Winsock 147
h o w S D _ R E C E I V ES D _ S E N DS D _ B O T H
S D _ R E C E I V E T C P
U D P
S E _ S E N D
T C P F I N
SD_BOTH
2. closesocket
closesocket

c l o s e s o c k e t
WSAENOTSOCK

W S A _ O P E R AT I O N _ A B O RT E D I / O
8 c l o s e s o c k e t
SO_LINGER 9SO_LINGER

7.3.6


r e c vW S A R e c v s e n dW S A S e n d

7 - 1
I P

7-1
148Winsock API


7Winsock 149
150Winsock API


7Winsock 151

7 - 2

T C P

152 Winsock API


T C P

- O

10send recv
10
7-2

7Winsock 153
154Winsock API


7Winsock 155

7.4

7.4.1

socketWSASocket
b i n d
l i s t e na c c e p t

recvfrom
156 Winsock API

r e c v M S G _ O O BM S G _ P E E K
MSG_PEEK
f r o m S O C K A D D R f r o m l e nA P I
SOCKADDR
recvfromWinsock 2WSARecvFrom

W S A B U F d w B u ff e r C o u n t
WSARecvFrom WSABUF
l p N u m b e r O f B y t e s R e c v d W S A R e c v F r o ml p F l a g s
0M S G _ O O BM S G _ P E E KMSG_PARTIAL
M S G _ PA RT I A L
M S G _ PA RT I A L
W S A R e c v F r o m l p F r o m S O C K A D D R
l p F r o m L e nS O C K A D D R
DWORD lpOverlappedlpCompletionROUTINE
I/O

S O C K A D D R
c o n n e c tW S A C o n n e c t
R e c vW S A R e c v
recvfromWSARecvFrom

7.4.2


sendtoWSASendTosendto

7Winsock 157
b u f l e n r e c v f r o m
t o S O C K A D D R
Winsock 2WSASendTo

W S A S e n d To S e n d To
l p B u ff e r s d w B u ff e r C o u n t
WSABUFI/O WSASendTolpNumber
OfBytesSentlpTo SOCKADDR
i To L e nS O C K A D D R l p O v e r l a p p e d
lpCompletionROUTINE I/O8
s e n d
W S A S e n d s e n d t oW S A S e n d To
WSAEISCONN
c l o s e s o c k e t

7.4.3

I / O
W S A E W O U L D B L O C K


W S A E M S G S I Z E

A p p l e Talk PA P W S A R e c v E x
MSG_PARTIAL
W S A R e c v
r e c v
r e c v
W S A R e c v E x M S G _ PA RT I A L
158 Winsock API

MSG_PARTIAL Winsock 2W S A R e c vW S A R e c v F r o m
WSARecvWSARecvExWSARecvFrom

UDP /IP
U D P I P
U D P
I P U D P I P
b i n d s e n d t oW S A S e n d To
I P I P
IP IP

7.4.4


closesocket

7.4.5


7 - 3

7-3

7Winsock 159
160Winsock API


7Winsock 161


getsockname IPgetsockname
S O C K A D D R _ I N
recvfrom recvfrom
U D P T C P / I P

7 - 4
I P - c c o n n e c t
- c
c o n n e c t s e n d
sendto
162Winsock API

7-4

7Winsock 163
164Winsock API


7Winsock 165

7.5 API

Winsock API
1. getpeername
166 Winsock API


sendto
WSASendTo
2. getsockname
g e t s o c k n a m e

s getpeername
TCP IP
3. WSADuplicateSocket
W S A D u p l i c a t e S o c k e t W S A P R O TO C O L _ I N F O

d w P r o c e s s I d
ID lpProtocolInfo W S A P R O TO C O L _ I N F O
W S A P R O TO C O L _ I N F O
W S A S o c k e t

I / OWi n s o c k

s e t s o c k e t o p t
g e t s o c k o p t
c l o s e s o c k e t
closesocket
W S A A s y n c S e l e c tW S A E v e n t S e l e c t

7Winsock 167
I / O 8

F D _ R E A D A F D _ W R I T EB

4. TransmitFile
Tr a n s m i t F i l e Wi n s o c k

s e n dW S A S e n d
Tr a n s m i t F i l e

hSocketnFile
nNumberOfBytesToWrite
0nNumberOfBytesPerSend
2048TransmitFile 2 KB
0 lpOverlappedOVERLAPPED
I/OI/O8
l p Tr a n s m i t B u ff e r s T R A N S M I T _ F I L E _ B U F F E R S

Head HeadLength
Tail TailLength
Tr a n s m i t F i l e d w F l a g s Tr a n s m i t F i l e
7-2

7-2 TransmitFile


TF_DISCONNECT
TF_REUSE_SOCKET AcceptEx
168 Winsock API

()

TF_USE_DEFAULT_WORKER
TF_USE_SYSTEM_THREAD
TF_USE_KERNEL_APC A P C


TF_WRITE_BEHIND TransmitFile

7.6 Windows CE

Windows CE Windows CE
Winsock 1.1 Winsock 2
W S A Windows CE W S A
W S A S t a r t u pW S A C l e a n u p W S A G e t L a s t E r r o rW S A I o c t l
9
Windows CET C P / I P T C PU D PT C P / I P
I r D A
Winsock 1.1 API Windows CE
2 . 0U D P s e n ds e n d t o
Windows CE 2.1 R O M
Windows CE 2.0 Windows CE 2.0

Windows CE U n i c o d e
Windows 95Windows 98Windows NTWindows 2000
Wi n s o c k Wi n s o c k
Windows CE

UnicodeUnicodeWinsock Winsock Unicode


A S C I I Wi n s o c k
U n i c o d e
char* Windows CE
U n i c o d e
Wi n 3 2 U n i c o d e Wi n s o c k
Windows CE
Windows CE Wi n s o c k
Wi n s o c k . h Winsock 2.h W S A S t a r t u p 1 . 1
Windows CEWinsock Windows CE WinMain
m a i n
printf I/O

7Winsock 169
7.7

Winsock API
Win32

7.7.1 AppleTalk

A p p l e Ta l k
AppleTalk PAPADSPPAP
UDPUDP WSARecvEX
M S G _ PA RT I A L
PA P
SO_PRIME_READ setsockopt
9 A t a l k . c MSG_PARTIAL
SO_PRIME_READ
A D S P T C P
A p p l e Talk API U D PT C P
AppleTalk AppleTalk
6AppleTalk
A p p l e Ta l k Winsock 1.1 A p p l e Ta l k Wi n s o c k 2
A p p l e Ta l k W S A s e n d W S A R e c v
Q 1 6 4 5 6 5
W S A R e c v E xf l a g s r e c v
MSG_PARTIAL

7.7.2 IrDA

Windows CEWindows 98Windows 2000

I P
Windows CEWinsock 1.1 Windows CE
Winsock 1.1 Windows 98Windows 2000
Winsock 2 Winsock 1.1
Windows 98Windows 2000 2.2 Winsock2.2
AF_IRDA
I r c o m m o n . hI r c o m m o n . c
Irclient.cIrserver.c
Irclient.c

170 Winsock API



I r s e r v e r. c

Windows 98Windows 2000 TCP/IP


Windows CE Windows CE
Winsock Unicode

7.7.3 NetBIOS

Winsock NetBIOS 1 N e t B I O S
Wi n s o c k 6
N e t B I O S
S O C K _ D G R A MS O C K _ S E Q PA C K E T
U D PT C P
NetBIOS Winsock
LANA LANA
W s n b s v r. cW s n b c l n t . c S O C K _ S E Q PA C K E T
L A N A
W S A E n u m P r o t o c o l s L A N A

L A N A

W s n b d g s . c S O C K _ D G R A M

7.7.4 IPX/SPX

I P X / S P XS o c k s p x . c I P X S P X I I
- P
S e r v e rC l i e n t
SPXII

I P X
recvfrom sendto
F i l l I p x A d d r e s s
ASCII IPX SOCKADDR_IPX 6 IPX
S O C K A D D R _ I P X I P X

7Winsock 171
4F i l l I p x A d d r e s sI P X
AtoH
E n u m e r a t e A d a p t e r s - m
I P X _ M A X _ A D A P T E R _ N U M I P X
I P X _ A D D R E S S 9
IPX 10
IPX

7.7.5 ATM

Windows 98 Windows 2000 Wi n s o c k AT M AT M


W s o c k a t m . cS u p p o r t . cS u p p o r t . h W s o c k a t m . c
AT M AT MAT M
I P X A t o H I / O
SIO_GET_NUMBER_OF_ATM_DEVICES ATM I/O
SIO_GET_ATM_ADDRESS I/O 9
W s o c k a t m . c AT M
m a i n

AT M c o n n e c t

AT M W S A A c c e p t

accept
c o n n e c ta c c e p t

AT M
closesocket closesocket

AT M
Winsock

7.8

6
Winsock

I / O Wi n s o c k

8 Winsock I/O
Wi n d o w s I / O
Wi n s o c k I / O I / O
Winsock
I / O
I / O

Wi n s o c k
I/O Winsock
I/O
selectWSAAsyncSelectWSAEventSelect
Overlapped I/OI/OCompletion port
I / O

Wi n d o w s
I / O 8 - 1 Windows CE I / O
Windows 98Windows 95 Winsock 1Winsock 2I/O
I/O Windows NTWindows 2000I/O

8-1 I/O

select WSAAsync Select WSAEvent Select Overlapped Completion Port


Windows CE
Windows 95Winsock 1
Windows 95Winsock 2
Windows 98
Windows NT
Windows 2000

8.1

Wi n d o w s I / O
I/O Winsocksendrecv
Wi n s o c k
Windows CEWindows 95Winsock 1
I / O


8Winsock I/O173
8.1.1


Winsock APIWinsock

8 - 1

8-1

recv

recvMSG_PEEKioctlsockeF
t IONREAD

r e c v

Mutex

174 Winsock API



8 - 2
ReadThread ProcessThread
8-2

8Winsock I/O175

8.1.2

8 - 3

8-3

Winsock API
W S A E W O U L D B L O C K

r e c v W S A E W O U L D B L O C K
8 - 2 Wi n s o c k
WSAEWOULDBLOCK
W S A E W O U L D B L O C K

recv
2 0 0 M S G _ P E E K
Wi n s o c k I / O

Winsock
176 Winsock API

W S A E W O U L D B L O C K
I / O

8-2 WSAEWOULDBLOCK


WSAAcceptaccept
closesocket SO_LINGER
setsockopt
WSAConnectconnect
WSARecvrecvWSARecvFromrecvfrom
WSASendsendWSASendTosendto

8.2 I/O

I/OWinsock I/O select


W S A A s y n c S e l e c tW S A E v e n t S e l e c to v e r l a p p e d
completion port I/O

I / O
TCP

8.2.1 select

s e l e c t Wi n s o c k I / O s e l e c t
selectI/O
U n i x B e r k e l e y s e l e c t
Winsock 1.1
Winsock 1.1 B e r k e l e y
B e r k e l e y s e l e c t

s e l e c t
I / O
sendrecv
W S A E W O U L D B L O C K s e l e c t
I/Oselect

n f d s

8Winsock I/O 177
B e r k e l e y f d _ s e t
readfds writefds exceptfds
fd_set readfds



listen accept
writefds


exceptfds

Out-of-bandOOB
readfds
s e l e c t s e l e c t r e a d f d s

readfdswritefdsexceptfds NULL
s e l e c t
t i m e o u t t i m e v a l
s e l e c t I / O t i m e o u t s e l e c t
t i m e v a l

t v _ s e c t v _ u s e c
0 , 0 s e l e c t s e l e c t
s e l e c t f d _ s e t
I / O t i m e v a l 0
select SOCKET_ERROR
s e l e c t
f d _ s e t
s e l e c t I / OWi n s o c k
I/Ofd_set
FD_CLR(s, *set)sets
FD_ISSET(s, *set)sset TRUE
FD_SET(s, *set) sset
FD_ZERO(*set)set
178 Winsock API


FD_SET fd_read select
fd_read FD_ISSET
select
1) FD_ZERO fd_set
2) FD_SET fd_set
3) selectfd_setI/O
selectfd_set
4) s e l e c t
I/O FD_ISSET fd_set
5) I/OI/O 1)
select
s e l e c t f d _ s e t I / O
(4) FD_ISSET
8-4 select

8-4 select I/O



8Winsock I/O 179

8.2.2 WSAAsyncSelect

Wi n s o c k I / O
Wi n d o w s
W S A A s y n c S e l e c t Wi n s o c k1 . 1
1 6Wi n d o w s Windows for Wo r k g r o u p s
Wi n d o w s
w i n p r o c Microsoft Foundation Class
MFCCSocket

W S A A s y n c S e l e c t C r e a t e Wi n d o w
Wi n p r o c

WSAAsyncSelect

s h W n d
w M s g
h W n d
Wi n d o w sW M _ U S E R
lEvent
8-3
FD_READFD_WRITEFD_ACCEPTFD_CONNECT
F D _ C L O S E F D _ A C C E P T F D _ C O N N E C T

O R l E v e n t

180 Winsock API



s

c l o s e s o c k e t W S A A s y n c S e l e c t
l E v e n t 0

WSAAsyncSelect
WSARecvWinsock
I/OWSAEWOULDBLOCK
WSAAsyncSelectuMsg

8-3 WSAAsyncSelect

FD_READ
FD_WRITE
FD_OOB OOB
FD_ACCEPT
FD_CONNECT join
FD_CLOSE
FD_QOS QoS
FD_GROUP_QOS

FD_ROUTING_INTERFACE_CHANGE
FD_ADDRESS_LIST_CHANGE

WSAAsyncSelecthWnd
Windows

hWnd uMsg
W S A A s y n c S e l e c t
w P a r a m
l P a r a m
l P a r a m l P a r a m

lParam
WSAGETSELECTERROR

8Winsock I/O 181

Windows lParam
WSAGETSELECTEVENTlParam
8 - 5 W S A A s y n c S e l e c tI / O

Windows
8-5 WSAAsyncSelect
182Winsock API


8Winsock I/O 183

F D _ W R I T E
FD_WRITE
connectWSAConnect
acceptWSAAccept
s e n dW S A S e n ds e n d t oW S A S e n d To W S A E W O U L D B L O C K

F D _ W R I T E
s e n d W S A S e n ds e n d t oW S A S e n d To
W S A E W O U L D B L O C K F D _ W R I T E

8.2.3 WSAEventSelect

Wi n s o c k I / O W S A A s y n c S e l e c t
8 - 3
W S A A s y n c S e l e c t



WSACreateEvent

W S A C r e a t e E v e n t

8-3 WSAEventSelect

s h E v e n t O b j e c t
184 Winsock API

W S A C r e a t e E v e n t l N e t w o r k E v e n t s
8 - 3
WSAAsyncSelect I/O
W S A E v e n t S e l e c t
s i g n a l e dn o n s i g n a l e d
manual resetauto resetW S A C r e a t e E v e n t

I / O
WSAResetEvent

T R U E
FA L S E W S A C l o s e E v e n t
WSACloseEvent

T R U E
FALSE
I / O
W S AWa i t F o r M u l t i p l e E v e n t s

W S AWa i t F o r M u l t i p l e E v e n t s

c E v e n t sl p h E v e n t s W S A E V E N T
cEvents lphEvents
W S AWa i t F o r M u l t i p l e E v e n t s W S A _ M A X I M U M _ WA I T _ E V E N T S
6 4 W S AWa i t F o r M u l t i p l e E v e n t s
I / O 6 4 6 4
f Wa i t A l l
W S AWa i t F o r M u l t i p l e E v e n t s T R U E
l p h E v e n t s
FA L S E
FA L S E
dwTimeout WSAWaitForMultipleEvents

8Winsock I/O 185

f Wa i t A l l 0

0
W S AWa i t F o r M u l t i p l e E v e n t s WSA_WAIT_TIMEOUTd w s Ti m e o u t
WSA_INFINITE
f A l e r t a b l e W S A E v e n t S e l e c t
FA L S E I / O

W S AWa i t F o r M u l t i p l e E v e n t s

W S AWa i t F o r M u l t i p l e E v e n t s
WSA_WAIT_EVENT_0

W S A E n u m N e t w o r k E v e n t s

s h E v e n t O b j e c t

h E v e n t O b j e c t
W S A R e s e t E v e n t
l p N e t w o r k E v e n t s W S A N E T W O R K E V E N T S
W S A N E T W O R K E V E N T S

lNetworkEvents8-3

FD_READFD_WRITE
i E r r o r C o d e l N e t w o r k E v e n t s

_ B I T F D _ R E A D
186 Winsock API

i E r r o r C o d e F D _ R E A D _ B I T
FD_READ

WSANETWORKEVENTS
8 - 6
WSAEventSelectI/O

8-6 WSAEventSelect I/O



8Winsock I/O187
188 Winsock API

8.2.4

Wi n s o c k I / OI / OOverlapped I/O

Winsock I/O
Windows CE Wi n d o w s
Wi n 3 2I / O R e a d F i l eWr i t e F i l e
I/O
Wi n s o c kI / O Windows NT Wi n s o c k
1 . 1 R e a d F i l eWr i t e F i l e
Winsock 2 I / O
Winsock WSASendWSARecv I/O
Winsock 2Windows
Winsock 2I/OWindows NTWindows 2000
ReadFileWriteFileWindows 95Windows 98

Win32ReadFileWriteFileWSARecvWSASend

8Winsock I/O 189
Winsock 2I/O
I / O W S A _ F L A G _ O V E R L A P P E D

s o c k e t W S A S o c k e t
W S A _ F L A G _ O V E R L A P P E D
I / O Wi n s o c k
WSAOVERLAPPED
WSASend
WSASendTo
WSARecv
WSARecvFrom
WSAIoctl
AcceptEx
TrnasmitFile

WSAOVERLAPPED WSAOVERLAPPED

W S A O V E R L A P P E D I / O
I / O
A c c e p t E x
l p C o m p l e t i o n R O U T I N E

1.
I/OWin32WSAOVERLAPPED
WSAOVERLAPPEDWSASendWSARecvI/O
I / O S O C K E T _ E R R O R
W S A G e t L a s t E r r o r I / O
W S A O V E R L A P P E D
I/O WSAOVERLAPPED I/O

190 Winsock API


InternalInternalHighO ff s e tO ff s e t H i g h
h E v e n t

W S A E v e n t S e l e c t W S A C r e a t e E v e n t
h E v e n t
Winsock WSASendWSARecv
I/O I/O
Wi n s o c k W S A O V E R L A P P E D

WSAOVERLAPPED WSAWaitForMultipleEvents
I / O WSAEventSelect I/O
W S AWa i t F o r M u l t i p l e E v e n t s
W S AWa i t F o r M u l t i p l e E v e n t s
6 4 W S A G e t O v e r l a p p e d
R e s u l t

s l p O v e r l a p p e d
W S A O V E R L A P P E D
l p c b Tr a n s f e r D W O R D
fWait
f Wa i tT R U E FA L S E
W S A G e t O v e r l a p p e d R e s u l t FA L S E
W S A _ I O _ I N C O M P L E T EI / O

lpdwFlags DWORD
WSARecvWSARecvFrom
W S A G e t O v e r l a p p e d R e s u l t T R U E I / O
l p c b Tr a n s f e r FA L S E

I/O

W S A G e t O v e r l a p p e d R e s u l t


8Winsock I/O 191
l p c b Tr a n s f e r
WSAGetLastError
8 - 7
I / O

1)
2)
3) WSAOVERLAPPED
WSAWaitForMultipleEvents
4) WSARecv WSAOVERLAPPED
SOCKET_ERRORWSA_IO_PENDING
I/O
5) 3 ) W S AWa i t F o r M u l t i p l e E v e n t s

6) WSAWa i t F o r M u l t i p l e E v e n t s W S A R e s e t E v e n t

7) WSAGetOverlappedResult
8) WSARecv
9) 5)~8)
I / O

8-7 I/O
192Winsock API


8Winsock I/O 193

Windows NTWindows 2000 I / O


A c c e p t E x A c c e p t E x
Winsock 1.1 M s w s o c k . h M s w s o c k . l i b
Windows NTWindows 2000 Wi n 3 2 I / O
Winsock 2I/OAcceptEx

s L i s t e n S o c k e t s A c c e p t S o c k e t
AcceptExaccept

socketWSASocketsAcceptSocketAcceptEx
lpOutputBuffer
dwReceiveDataLength
lpOutputBuffer
0 d w L o c a l A d d r e s s L e n g t h
dwRemoteAddressLength lpOutputBuffer

16
TCP/IP SOCKADDR_IN
16lpdwBytesReceived
AcceptExERROR_IO_PENDING
194 Winsock API

lpOverlappedOVERLAPPEDAcceptEx
I/O

GetAcceptExSockaddrsWinsocklpOutputBuffer
GetAcceptExSockaddrs

l p O u t p u t B u ff e r A c c e p t E x l p O u t p u t B u ff e rd w R e c e i v e D a t a L e n g t h
d w L o c a l A d d r e s s L e n g t h d w R e m o t e A d d r e s s L e n g t h A c c e p t E x
d w R e c e i v e D a t a L e n g t hd w L o c a l A d d r e s s L e n g t hd w R e m o t e A d d r e s s L e n g t h
L o c a l S o c k a d d r R e m o t e S o c k a d d r
S O C K A D D R l p O u t p u t B u ff e r
l p O u t p u t B u ff e r S O C K A D D R
L o c a l S o c k a d d r L e n g t hR e m o t e S o c k a d d r L e n g t h

2.
I / O
I/O I/O
I/O
I/O
I/O I/O
Wi n s o c k W S A O V E R L A P P E D

I/O
dwError lpOverlapped
cbTransferred
lpOverlapped I/OWSAOVERLAPPED
dwFlags 0

8Winsock I/O 195

W S A O V E R L A P P E D h E v e n t
I / O

I / O
W S AWa i t F o r M u l t i p l e E v e n t s
W S AWa i t F o r M u l t i p l e E v e n t s

Wi n 3 2S l e e p E x

WSAWaitForMultipleEvents WSAOVERLAPPED

I/O fAlertableTRUE
I / O W S A _ I O _ C O M P L E T I O N
S l e e p E x W S AWa i t F o r M u l t i p l e E v e n t s
SleepEx

d w M i l l i s e c o n d s S l e e p E x
dwMillisecondsINFINITESleepEx bAlertable
b A l e r t a b l eFA L S E I / O I / O
d w M i l l i s e c o n d s
TRUE SleepExWAIT_IO_COMPLETION
8 - 8

1)
2)
3) WSAOVERLAPPED
4) WSARecv WSAOVERLAPPED

5) f A l e r t a b l e T R U E W S AWa i t F o r M u l t i p l e E v e n t s
I / O W S AWa i t F o r M u l t i p l e
Events WSA_IO_COMPLETION
WSARecv
6) WSAWaitForMultipleEventsWSA_IO_COMPLETION
7) 5)6)
196Winsock API

8-8 I/O

8Winsock I/O197
198 Winsock API

8.2.5

I / O

Windows NTWindows 2000


C P U

Windows NTWindows 2000


I / O We b I / O

Win32
I/O I/O
Win32Windows NTWindows 2000I/O

I / O
I/OCreateCompletionPort




N u m b e r O f C o n c u r r e n t T h r e a d s
NumberOfConcurrentThreads

0
I/O

8Winsock I/O 199

1.

I / O

I / O

CreateIoComletionPort
C r e a t e I o C o m p l e t i o n P o r t

C r e a t e I o C o m p l e t i o n P o r t N u m b e r O f C o n c u r r e n t
T h r e a d s n
n n

C r e a t e I o C o m p l e t i o n P o r t
C r e a t e I o C o m p l e t i o n P o r t
S l e e p
WaitForSingleObject

C r e a t e I o C o m p l e t o n P o r t
C r e a t e I o C o m p l e t o n P o r tN u m b e r O f C o n c u r r e n t T h r e a d s

I/O
CreateIo CompletionPort
F i l e H a n d l eE x i s t i n g C o m p l e t i o n P o r tC o m p l e t i o n K e y
FileHandle
ExistingCompletionPort CompletionKey

8 - 9

1) 0
200 Winsock API

2)
3) 2 ) I / O

C r e a t e T h r e a d

4) 5150
5) accept
6)
7) C r e a t e I o C o m p l e t i o n P o r ta c c e p t
CompletionKey CreateIoCompletionPort
8) I / O I / O
W S A R e c vW S A S e n d I / O
I/O I/O 3)

9) 5)~8)

8-9

8Winsock I/O201
202 Winsock API

2. I/O

I/O I/O
Wi n 3 2I / O W S A S e n d
W S A R e c v Winsock API
OVERLAPPED
G e t Q u e u e d C o m p l e t i o n S t a t u s

C o m p l e t i o n P o r t lpNumberOfBytes
Tr a n s f e r r e d I / O W S A S e n dW S A R e c v
lpCompletionKey CreateCompletionPort
K e yl p O v e r l a p p e d
I / O
I / O d w M i l l i s e c o n d s
INFINITE
3. I/O
G e t Q u e u e d C o m p l e t i o n S t a t u s A P I I / O
l p C o m p l e t i o n K e yl p O v e r l a p p e d
I / O
I/O
l p C o m p l e t i o n K e y

CreateIoCompletionPort API C o m p l e t i o n K e y
I / O

l p O v e r l a p p e d O V E R L A P P E D I / O

I / O
O V E R L A P P E D O V E R L A P P E D

OVERLAPPED
I/O

8Winsock I/O 203

I/O I/O
I / O
Winsock API O V E R L A P P E D
O V E R L A P P E D
OVERLAPPED

G e t Q u e u e d C o m p l e t i o n S t a t u s
O p e r a t i o n Ty p e
PER_IO_OPERATION_DATAI/O
I / O

I / O

ServerWorkerThread
8 - 1 0
I/OI/O
8-10
204 Winsock API

8-9 8-10
I / O

8Winsock I/O 205
I/O I/O
OVERLAPPED
c l o s e s o c k e t I / O

P o s t Q u e u e d C o m p l e t i o n S t a t u s
PostQueuedCompletionStatus

C o m p l e t i o n P o r t
d w N u m b e r O f B y t e s Tr a n s f e r r e dd w C o m p l e t i o n K e yl p O v e r l a p p e d
GetQueuedCompletionStatus
G e t Q u e u e d C o m p l e t i o n S t a t u s
d w C o m p l e t i o n P o r t
0
CloseHandle
4.
I / O
I / O
W S A R e c v
W S A R e c v

WSARecv WSARecv

SO_SNDBUFSO_RCVBUF

0Wi n s o c k I / O
Winsock
SO_SNDBUFsetsockopt

0 I/O
9
AcceptExAPI
206 Winsock API

API
a c c e p tW S A R e c v
A c c e p t E x O V E R L A P P E D
r e c v - s e n d
A c c e p t E x We b

WinsockWinsockReadFileWriteFile
Win32 I/O OVERLAPPED
Winsock 2 I / O
W S A R e c vW S A S e n d R e a d F i l eWr i t e F i l e

8.3 I/O

I / O

I / O

1.
I / O
W S A E v e n t S e l e c t Wi n d o w s
WSAAsyncSelect
W S A A s y n c S e l e c t Wi n d o w s

2.

I / O
I / O I / O

8.4

Wi n s o c kI / O I / O
I / O
Winsock I/O Wi n s o c k

Wi n s o c k 9 1 4
Winsock 9
I/O


9 I/O
I / O

I / O Wi n s o c k
g e t s o c k o p ts e t s o c k e t o p ti o c t l s o c k e tW S A I o c t l

Wi n 3 2 Windows CE
Windows 95Windows 98Windows NTWindows 2000
Winsock 2 Winsock 2
Winsock 2I/O Windows CEWindows 95
Windows 95Winsock 2 Windows CE
TCP/IP
I/O Winsock.hWinsock2.h
Winsock 1 Winsock 2 M i c r o s o f t
Wi n s o c k . hM s w s o c k . h

Mswock.lib

9.1

g e t s o c k e t o p t

levelSOL_SOCKET

SOL_SOCKET
S O _ B R O A D C A S T
o p t n a m e Wi n s o c k
S O L _ S O C K E T
208 Winsock API

Wi n s o c k . hWi n s o c k 2 . h
o p t v a lo p t l e n

s e t s o c k e t o p t

g e t s o c k e t o p t o p t v a lo p t l e n
g e t s o c k e t o p t o p t v a l

g e t s o c k e t o p ts e t s o c k e t o p t
S O C K _ S T R E A M
S O _ B R O A D C A S T
WSAENOPROTOOPT

9.1.1 SOL_SOCKET

1. SO_ACCEPTCONN
/ Winsock
1+ TRUE
L i s t e n TRUE
SOCK_DGRAM
2. SO_BROADCAST
/ Winsock
1+ TRUE

T R U ES O _ B R O A D C A S T s e t s o c k o p t
SOCK_STREAM

r e c v f r o mW S A R e c v f r o m
c o n n e c tW S A C o n n e c t r e c vW S A R e c v U D P


9I/O 209
UDP

U D P
255.255.255.255INADDR_BROADCAST #define

AppleTalk AppleTalk
6 A p p l e Ta l k
ATA D D R _ B R O A D C A S T ( 0 x F F )

S O _ B R O A D C A S T
Windows 95
IPX SO_BROADCAST
Q 1 3 7 9 1 4
http://support.microsoft.com/support/searchWindows 95
3. SO_CONNECT_TIME
/ Winsock
1+
S O _ C O N N E C T _ T I M E
A c c e p t E x A c c e p t E x
S O C K E T
0xFFFFFFFF
4. SO_DEBUG
/ Winsock
1+ TRUE
Wi n s o c k S O _ D E B U G

SO_DEBUG TRUEsetsockopt SO_DEBUGgetsockopt


T R U EFA L S E Wi n 3 2
S O _ D E B U G Q 1 3 8 9 6 5

5. SO_DONTLINGER
210 Winsock API

/ Winsock
1+ TRUESO_LINGER

SO_LINGERsetsockopt

W S A E C O N N R E S E T
S O _ D O N T L I N G E R
S O _ D O N T L I N G E R g e t s o c k o p t T R U EFA L S E
S O _ D O N T L I N G E R s e t s o c k o p t
SOCK_DGRAM
6. SO_DONTROUTE
/ Winsock
1+ TRUE
S O _ D O N T R O U T E
U D P
A B
B
T R U E s e t s o c k o p t
g e t s o c k o p t

Wi n 3 2 M i c r o s o f t

7. SO_ERROR
/ Winsock
1+
S O _ E R R O R
W S A G e t L a s t E r r o rW S A S e t L a s t E r r o r
SO_ERROR

0
WSAGetLastError
8. SO_EXCLUSIVEADDRUSE
/ Winsock
2+ TRUE

S O _ R E U S E A D D R
S O _ R E U S E A D D R

S O _ R E U S E A D D R

9I/O 211

S O _ E X C L U S I V E A D D R U S E

S O _ R E U S E A D D R
Windows 2000
9. SO_KEEPALIVE
/ Winsock
1+ T R U E

TCP TCP
Keep Alive S O _ K E E PA L I V E
Wi n 3 2 RFC 11 2 24 . 2 . 3 . 6

WSAENETRESET WSAENOTCONN
R F C
2 2
T C P
7
SOCK_DGRAM
K e e p A l i v e I n t e r v a l
K e e p A l i v e Ti m e R E G _ D W O R D

T C P
Windows 95Windows 98

\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP

Windows NTWindows 2000


\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\Parameters

Windows 2000 I / O
SIO_KEEPALIVE_VALS
I / O

10. SO_LINGER
/ Winsock
struct linger 1+
L I N G E R S O _ L I N G E R
c l o s e s o c k e t
getsockoptlinger
212 Winsock API

l _ o n o ff l _ l i n g e r

setsockopt
struct linger

s e t s o c k o p t l _ o n o ff
SO_LINGER setsockopt
l i n g e rl _ o n o ff 0 S O _ D O N T L I N G E R
setsockoptoptval TRUE SOCK_DGRAM

c l o s e s o c k e t 9 - 1

9-1


SO_DONTLINGER
SO_LINGER 0
SO_LINGER

SO_LINGER linger l_onoff0l_linger0


c l o s e s o c k e t

WSAECONNRESET
S O _ L I N G E Rc l o s e s o c k e t

Wi n d o w s
closesocket
11. SO_MAX_MSG_SIZE
/ Winsock
2+

12. SO_OOBINLINE
/ Winsock
1+ TRUE
O u t - o f - b a n dO O B
M S G _ O O B O O B
O O B

9I/O 213
SIOCATMARK i o c t l s o c k e t O O B
S O C K _ D G R A M Wi n 3 2
OOB 7
13. SO_PROTOCOL_INFO
/ Winsock
WSAPROTOCOL_INFO 2+

W S A P R O TO C O L _ I N F O 6
WSAPROTOCOL_INFO
14. SO_RCVBUF
/ Winsock
1+

s e t s o c k o p t
getsockopt
Windows CEWi n 3 2 Windows CE


U D P
I / O 0
0

88.2.5
15. SO_REUSEADDR
/ Winsock
1+ TRUE
TIME_WAIT

7

T C P / I P

T C P / I P

T C P
214 Winsock API

T I M E _ WA I T S O _ R E U S E A D D R
T I M E _ WA I T

16. SO_SNDBUF
/ Winsock
1+ T R U E

s e t s o c k o p t
g e t s o c k o p t
Windows CE Wi n 3 2
Windows CE
S O _ R C V B U F S O _ S N D B U F 0
0
0
0
0

I / O
88.2.5

17. SO_TYPE
/ Winsock
1+ S O C K _ D G R A MS O C K _
STREAM
S O _ T Y P E
S O C K _ D G R A MS O C K _ S T R E A MS O C K _ S E Q PA C K E TS O C K _ R D M
SOCK_RAW
18. SO_SNDTIMEO
/ Winsock
1+
SO_SNDTIMEO Winsock

SO_SNDTIMEOWSASocketWSA_FLAG_OVERLAPPED
WSASocketdwFlags Winsocksendsendto
WSASendWSASendTo
10060WSAETIMEDOUT
Windows CE 2.1

9I/O 215
Windows CE

19. SO_RCVTIMEO
/ Winsock
1+

S O _ R C V T I M E O
Winsock
S O _ R C V T I M E O W S A S o c k e t W S A _ F L A G _
OVERLAPPEDWSASocketdwFlags Winsock
r e c vr e c v f r o mW S A R e c vW S A R e c v F r o m
10060WSAETIMEDOUT
Windows CE 2.1
Windows CE
20. SO_UPDATE_ACCEPT_CONTEXT
/ Winsock
SOCKET 1+
M i c r o s o f t A c c e p t E x
Winsock 1 I/O

QoS
Q o S
s e t s o c k o p tS O C K E T o p t v a l
Windows NTWindows 2000

9.1.2 SOL_APPLETALK

A p p l e Ta l k s o c k e tW S A S o c k e t
AF_APPLETALK A p p l e Ta l k
A p p l e Ta l k 6
A p p l e Ta l k S O _ D E R E G I S T E R _ N A M E

1. SO_CONFIRM_NAME
/ Winsock
WSH_NBP_TUPLE 1 AppleTalk
S O _ C O N F I R M _ N A M E A p p l e Ta l k
N B P
WSAEADDRNOTAVAIL

216 Winsock API



2. SO_DEREGISTER_NAMESO_REMOVE_NAME
/ Winsock
WSH_REGISTER_NAME 1

66 . 5 . 2AppleTalk
WSH_REGISTER_NAME WSH_NBP_NAME
3. SO_LOOKUP_MYZONESO_GETMYZONE
/ Winsock
1
g e t s o c k o p to p t v a l
3 3 N B P M A X _ E N T I T Y _ L E N
32
4. SO_LOOKUP_NAME
/ Winsock
WSH_LOOKUP_NAME 1 N B P N B P


A p p l e Ta l k
66 . 5 . 3A p p l e Ta l k
AppleTalk
W S H _ N B P _ T U P L E
W S H _ L O O K U P _ N A M E g e t s o c k o p t
W S H _ L O O K U P _ N A M E
WSH_NBP_TUPLE9-1
W S H _ L O O K U P _ N A M E
WSH_NBP_TUPLE

WSH_LOOKUP_NAME WSH_NBP_TUPLE WSH_NBP_TUPLE

9-1 SO_LOKUP_NAME

5. SO_LOOKUP_ZONESSO_GETZONELIST
/ Winsock
WSH_LOOKUP_ZONES 1 Internet
W S H _ L O O K U P _ Z O N E S
WSH_LOOKUP_ZONES
SO_LOOKUP_ZONES

9I/O 217

6. SO_LOOKUP_ZONES_ON_ADAPTERSO_GETLOCALZONES
/ Winsock
WSH_LOOKUP_ZONES 1
SO_LOOKUP_ZONES

W S H _ L O O K U P _ Z O N E S W S H _ L O O K U P _
ZONES UNICODEWCHAR

7. SO_LOOKUP_NETDEF_ON_ADAPTERSO_GETNETINFO
/ Winsock
WSH_LOOKUP_NETDEF_ON_ADAPTER 1

ANSI
UNICODE
WCHAR
1~0xFFFEANSI*

8. SO_PAP_GET_SERVER_STATUS
/ Winsock
WSH_PAP_GET_SERVER_STATUS 1 PAP
S e r v e r A d d rPA P
NBP PAP
PA P S O _ PA P _ S E T _
S E RV E R _ S TAT U S W S H _ PA P _ G E T _
SERVER_STATUS

PA P S e r v e r S t a t u s

218 Winsock API


9. SO_PAP_PRIME_READ
/ Winsock
char [] 1 PA P

PAP
recvWSARecvEx select
optval
M I N _ PA P _ R E A D _ B U F _ S I Z E
4 0 9 6 PA P
S O _ PA P _ P R I M E _
READ setsockopt
10. SO_PAP_SET_SERVER_STATUS
/ Winsock
char [] 1
SO_ PA P _ G E T _ S E RV E R _ S TAT U S PA P

255

11. SO_REGISTER_NAME
/ Winsock
WSH_REGISTER_NAME 1 AppleTalk
A p p l e Ta l k
W S A E A D D R I N U S E 6 W S H _ R E G I S T E R _ N A M E

9.1.3 SOL_IRLMP

SOL_IRLMPIrDAInfrared Data Association


A F _ I R D AI r D A
Windows CE
Windows 98Windows 2000

1. IRLMP_9WIRE_MODE
/ Winsock
1+ IPIP
IrCOMM Windows 98
I r S o c k 9 Ti n y T PI r L M P
1 I r C O M M
I R L M P _ S E N D _ P D U _ L E N I r L M P P D U
s e t s o c k o p t 9

9I/O 219
1IrCOMM0
s e n d P D U I r C O M M
I r C O M M
Windows 98 Windows 2000
2. IRLMP_ENUMDEVICES
/ Winsock
DEVICELIST 1+ I r D A
ID

I R
ID
IrSock DEVIDELIST

Windows CE Windows 98Windows 2000


Windows 98
Windows 2000 DEVIDELIST

Windows CEDEVIDELIST

Windows CE W C E _ I R D A _
DEVICE_INFOWindows 98Windows 2000WINDOWS_IRDA_DEVICE_INFO
220 Winsock API

i r d a D e v i c e I D 4
S O C K A D D R _ I R D A
I R L M P _ I A S _ S E TI R L M P _ I A S _ Q U E RY
IAS
g e t s o c k o p t o p t v a l
D E V I C E L I S T n u m D e v i c e 0
IRgetsockopt
numbDevice 0
DevicenumDevice
3. IRLMP_EXECLUSIVE_MODE
/ Winsock
1+ TRUE
I r D A Ti n y T P
I r L M P h t t p : / / w w w. i r d a . o rg
IrDA Windows CEWindows 2000
4. IRLMP_IAS_QUERY
/ Winsock
IAS-QUERY 1+ IAS
I R L M P _ I A S _ S E T
getsockopt irdaDeviceID
IDirdaAttribName
LSAP-SELIrDA:IrLMP:LsapSel
i r d a C l a s s N a m e
getsockopt irdaAttribType
9 - 2
WSASERVICE_NOT_FOUND
Windows CEWindows 98Windows 2000
5. IRLMP_IAS_SET
/ Winsock
IAS_QUERY 1+
IAS IRLMP_IAS_SET
I A S I R L M P _ E N U M D E V I C E S Wi n d o w s
C E Windows 98 Windows 2000
Windows 98Windows 2000

9I/O 221

Windows CEIAS

9 - 2 i r d a A t t r i b Ty p e
g e t s o c k o p t
I R L M P _ I A S _ Q U E RY i r d a A t t r i b Ty p e

9-2 IAS

irdaAttribType
IAS_ATTRIB_INT irdaAttribInt
IAS_ATTRIB_OCTETSEQ irdaAttribOctetSeq
IAS_ATTRIB_STR irdaAttribUsrStr
IAS_ATTRIB_NO_CLASS
IAS_ATTRIB_NO_ATTRIB

irdaDevicdID
222 Winsock API

I A S i r d a A t t r i b N a m e
i r d a C l a s s N a m e
I r S o c k I A S
L S A P - S E L L S A P - S E L
I A S L S A P - S E L i r d a D e v i c e I D
I D i r d a A t t r i b N a m e I r D A : I r L M P : L s a p S e l
i r d a C l a s s N a m e M y S o c k e t S e r v e r i r d a A t t r i b Ty p e
IAS_ATTRIB_INTi r d a A t t r i b I n t L S A P - S E L L S A P - S E L

6. IRLMP_IRLPT_MODE
/ Winsock
1+ TRUE IR
Wi n s o c k
I R L P T
T R U E I R L M P _ E N U M D E V I C E S
IAS
L S A P - S E L - x x x 6
IrSock IAS Windows CEWindows 2000
7. IRLMP_SEND_PDU_LEN
/ Winsock
1+ PDU
IRLMP_9WIRE_MODE9
PDU IRLMP_9WIRE_MODE
Windows CEWindows 2000

9.1.4 IPPROTO_IP

I P P R O TO _ I P I P I P
I P Wi n s o c k . hWi n s o c k 2 . h
Winsock 1
Wsock32.lib Winsock 2
Winsock 2 W s 2 _ 3 2 . l i b
Wi n s o c k Wi n d o w s
CE Win32 Windows CE2.1

1. IP_OPTIONS
/ Winsock
char[] 1+ IPIP
IPIP
RFC 1108
I P 1 3P i n g

9I/O 223
IP
IP
IP

I P s e t s o c k o p t 9 - 2 I P
40
40

1 1 1 37

9-2 IP

I P 0 x 7

struct ip_option_hdr

9 l o n g
9I P I P 4 0
3 9 3 2 4 0


I P _ O P T I O N S g e t s o c k o p t
I P
SOCK_RAWIP_HDRINCL
IP Winsock
224 Winsock API

2. IP_HDRINCL
/ Winsock
2+ TRUEIP

I P _ H D R I N C L T R U E I P
I P Wi n s o c k
I P I P 9 - 3
IP Windows 2000

4 4
8 16()

31
16 13

8 8 16

32IP

32IP

IP()

9-3 IP

I P 4 3 2
32
TOS
I P _ TO S I P

I P
IPTime to LiveTTL

TTL1TTL0

I P T C PU D PI G M PI C M P
I P1 61
3 2I P I P
IP
I P

9I/O 225
I P Wi n s o c ks e n d 1 3

Windows 2000
3. IP_TOS
/ Winsock
1+ IP
TOSIP
8 3
4 TO S 0 TO S

0RFC 1340
TCPSMTPNNTP RFC 1349
RFC
R l o g i nTe l n e t
F T P
S N M P U s e n e t
N N T P I P _ TO S
Windows CE
QoS TOS
IP QoS
QoS setsockoptIP_TOS
Q o S
12QoS
4. IP_TTL
/ Winsock
1+ IPTTL
TTLIP TTL

T T L 1 0
Windows CE
5. IP_MULTICAST_IF
/ Winsock
1+
I P I F
M o d e m
optval
IP inet_addr IP

226 Winsock API


6. IP_MULTICAST_TTL
/ Winsock
1+
IPTTL
TTL TTL

TTL1
7. IP_MULTICAST_LOOP
/ Winsock
1+ T R U E

I P
FA L S E

8. IP_ADD_MEMBERSHIP
/ Winsock
struc ip_mreq 1+ IP
Winsock 1 IP
s o c k e t A F _ I N E T
SOCK_DGRAM

i p _ m r e q i m r _ m u l t i a d d r
imr_interface 11
i m r _ i n t e r f a c e I P
INADDR_ANY
9. IP_DROP_MEMBERSHIP
/ Winsock
struct ip_mre1 1+ IP
I P _ A D D _ M E M B E R S H I P i p _ m r e q
s
11IP
10. IP_DONTFRAGMENT
/ Winsock
1+ TRUEIP
IP IP

9I/O 227
M T U I P
I C M P
Windows CE

9.1.5 IPPROTO_TCP

IPPROTO_TCP
S O C K _ S T R E A M A F _ I N E T Wi n s o c k
Win32 Windows CE
TCP_NODELAY
/ Winsock
1+ TRUE Nagle
N a g l e

TCP TCP
T C P
2 0 2 2 0
N a g l e
T C P A C K

A C K

N a g l e

Te l n e t Te l n e t

N a g l e

9.1.6 NSPROTO_IPX

M i c r o s o f t Windows IPX/SPX

Microsoft IPX/SPX
I P X / S P X W S N w L i n k . h
Winsock.hWsipx.h
1. IPX_PTYPE
/ Winsock
1+ IPX
I P X I P X o p t v a l
228 Winsock API

optval
2. IPX_FILTERPTYPE
/ Winsock
1+ IPX

o p t v a l I P X

3. IPX_STOPFILTERPTYPE
/ Winsock
1+ IPX
IPX_FILTERTYPE
4. IPX_DSTYPE
/ Winsock
1+ SPX
SPX
5. IPX_EXTENDED_ADDRESS
/ Winsock
1+ TRUE IPX
SOCKADDR_IPX
u n s i g n e d c h a r s a _ p t y p e 1 5
S O C K A D D R _ I P X s a _ p t y p eunsigned char sa_flags 1 6
sa_flags
0 x 0 1
0 x 0 2
6. IPX_RECVHDR
/ Winsock
1+ TRUE IPX
Winsock IPX
7. IPX_MAXSIZE
/ Winsock
1+ IPX
getsockopt IPX
8. IPX_ADDRESS
/ Winsock
IPX_ADDRESS_DATA 1+ IPX
IPX n
M o d e m 0n ~ 1
I P X I P X _ M A X _ A D A P T E R _ N U M
getsockopt IPX_ADDRESSadapternum optval
IPX_ADDRESS_DATA

9I/O 229

9. IPX_GETNE TINFO
/ Winsock
IPX_NETNUM_DATA 1+ IPX
I P X I P X
R I P o p t v a l
IPX_NETNUM_DATA

10. IPX_GETNETINFO_NORIP
/ Winsock
IPX_ADDRESS_DATA 1+ TRUE IP
IPX_GETNETINFO RIP IPX

I P X _ R E R I P N E T N U M B E R R I P I P X _ G E T N E T I N F O
optval IPX_NETNUM_DATA
11. IPX_SPXGETCONNECTIONSTATUS
/ Winsock
IPX_SPXCONNSTATUS_DATA 1+ SPX
S P X o p t v a l
I P X _ S P X C O N N S TAT U S _ D ATA

230 Winsock API


12. IPX_ADDRESS_NOTIFY
/ Winsock
IPX_ADDRESS_DATA 1+ IPX
I P X
WA N
I P X _ A D D R E S S _ D ATA o p t v a l
I P X _ A D D R E S S _ D ATA

g e t s o c k o p t o p t v a l
I P X _ A D D R E S S _ D ATA
I P X g e t s o c k o p t
I P X _ A D D R E S S _ D ATA o p t v a l
g e t s o c k o p t
getsockopt

13. IPX_MAX_ADAPTER_NUM
/ Winsock
1+ IPX
I P X n

9I/O 231
0n~1
14. IPX_RERIPNETNUMBER
/ Winsock
IPX_NETNUM_DATA 1+
IPX_GETNETINFO IPXRIP
IPX_GETNETINFO
optval IPX_NETNUM_DATA
15. IPX_RECEIVE_BROADCAST
/ Winsock
1+ TRUE IPX
IPX
FA L S E
FALSE
16. IPX_IMMEDIATESPXZCK
/ Winsock
1+ TRUESPX ACK
TRUE ACK SPX
S P X T R U E
ACK

9.2 IOCTLSOCKETWSAIOCTL

I/O I/O
I / O i o c t l s o c k e t Winsock 1

s I/O cmd
I / O a rg p
Winsock 2 i o c t l
a rg p

I/O WSAIoctl
232 Winsock API

i o c t l s o c k e t l p v I n B u ff e rc b I n B u ff e r
l p v I n B u ff e r c b I n B u ff e r
lpvOutBuffercbOutBuffer
lpvOutBuffer cbOutBuffer
l p v O u t B u ff e r
l p c b B y t e s R e t u r n e d
l p O v e r l a p p e dl p C o m p l e t i o n R o u t i n e I / O
8I/O

9.2.1 I/O

1. FIONBIO
Winsock
ioctlsocket/WSAIoctl 1+
sN o n b l o c k i n g
F I O N B I O I / O
i o c t l s o c k e t a rg p
0
W S A I o c t l l p v I n B u ff e r

W S A A s y n c S e l e c tW S A E v e n t S e l e c t

W S A E I N VA L
W S A A s y n c S e l e c t W S A A s y n c S e l e c t l E v e n t 0
WSAEventSelectlNetworkEvents0 WSAEventSelect
2. FIONREAD
Winsock
1+
i o c t l s o c k e ta rg p
W S A I o c t l
lpvOutBuffersSOCK_STREAM
F I O N R E A D

S O C K _ D G R A M I / O

3. SIOCATMARK
Winsock
1+
O O B O O B

9I/O 233
S O _ O O B I N L I N E I / O
O O B T R U E FA L S E
O O B i o c t l s o c k e ta rg p
W S A I o c t l l p v O u t B u ff e r
O O B 7
OOB

9.2.2 I/O

SSL I/O Winsock 2


Windows CE Winsock 2
I / O I / O
I / O Wi n 3 2
Winsock 2
Wi n s o c k 2 . h Windows 2000
Mstcpip.h
1. SIO_ENABLE_CIRCULAR-QUEUEING
Winsock
WSAIoctl 2+
I / O

TRUE

I / O
W S A E N O P R O TO O P T
Windows NTWindows 2000
I / O

2. SIO_FIND_ROUTE
Winsock
WSAIoctl SOCKADDR 2+
I / O l p v I n B u ff e r
SOCKADDR
I P X IPX GetLocalTa rg e t
Win32Microsoft I/O
3. SIO_FLUSH
Winsock
WSAIoct1 2+ OOB
I / O
Windows 2000Windows NT 4 Service Pack 4SP4
234 Winsock API

4. SIO_BROADCAST_ADDRESS
Winsock
WSAIoctl SOCKADDR 2+
I / O S O C K A D D Rl p v O u t B u ff e r s
sendtoWSASendTo Windows NT
Windows 2000 Windows 98Windows 98WSAEINVAL
5. SIO_GET_EXTENSION_FUNCTION_POINTER
Winsock
WSAIoctl GUID 2+
I/O Winsock
I / O
G U I D I / O
S I O _ G E T _ E X T E N S I O N _ F U N C T I O N _ P O I N T E R
M s w s o c k . h Wi n s o c k G U I D
Wi n s o c k Tr a n s m i t F i l e G U I D
GUID

Tr a n s m i t F i l e
Mswsock.lib Mswsock.lib

M s w s o c k . h G U I D
I / O
14
6. SIO_CHK_QOS
Winsock
WSAIoctl DWORD DWORD 2+ QOS
I / O Q o S Windows 2000

A L L O W E D _ TO _ S E N D _ D ATA
A B L E _ TO _ R E C V _ R S V P R S V P
LINE_RATE
L O C A L _ T R A F F I C _ C O N T R O L
L O C A L _ Q O S A B I L I T Y
E N D _ TO _ E N D _ Q O S A B I L I T Y
A L L O W E D _ TO _ S E N D _ D ATA Q o S
S I O _ S E T _ Q O S R S V P R E S V
R E S V R E S V
B e s t - e ff o r t 12RSVP
A L L O W E D _ TO _ S E N D _ D ATA

9I/O 235
S I O _ S E T _ Q O SQ o S
1 0
ALLOWED_TO_SEND_DATA 0
RESV
ABLE_TO_RECV_RSVP
RSVP 10 RSVP
LINE_RATE
k b i t / sK b p s I N F O _ N O T _ AVA I A B L E


1 0
I N F O _ N O T _ AVA I A B L E L O A C A L _ T R A F F I C _ C O N T R O L
L O C A L _ Q O S A B I L I T Y
QoSEND_TO_END_QOSABILITY QoS
7. SIO_GET_QOS
Winsock
WSAIoctl QOS 2+ QOS
I / O Q o S
s i z e o f ( Q O S )
QoS 12 QoS
I / O W S A E N O P R O TO O P T
S I O _ S E T _ Q O S Q o S Windows 98
Windows 2000
8. SIO_SET_QOS
Winsock
WSAIoctl QOS 2+ QOS
I / O S I O _ G E T _ Q O S Q o S
1 2
Q o S S I O _ G E T _ Q O S Q o S
Windows 98Windows 2000
9. SIO_MULTIPOINT_LOOPBACK
Winsock
WSAIoctl 2+

I P AT M
l p v I n B u ff e r FA L S E
NULL
10. SIO_MULTICAST_SCOPE
Winsock
WSAIoctl 2+
236 Winsock API


1
TTL1TTL0
l p v I n B u ff e r T T L W S A I o c t l
lpvOutBuffer TTL
11. SIO_KEEPLIVE_VALS
Winsock
WSAIoctl tcp_keepalive tcp_keepalive 2+ TCP
I / O T C P
S O _ K E E PA L I V E T C P
R e g i s t r y
I / O

tcp_keepalive

k e e p a l i v e t i m e k e e p a l i v e i n t e r v a l
S O _ K E E PA L I V E
W S A I o c t l SIO_KEEPALIVE_VALSI / O
t c p _ k e e p a l i v e I / O
Windows 2000
12. SIO_RCVALL
Winsock
WSAIoctl 2+
I / O T R U E I P
W S A I o c t l A F _ I N E T
S O C K _ R AW I P P R O TO _ I P
INADDR_ANY
I/O recvWSARecvIP
I P
16 65535
M T U I / O
I / O Windows 2000 R c v a l l . c
SIO_RCVALL
13. SIO_RCVALL_MCAST
Winsock
WSAIoctl 2+
I / O SIO_RCVALLSIO_RCVALL

9I/O 237
W S A I o c t l I P P R O TO _ I G M P
I P
224.0.0.0239.255.255.255IP I/O Windows 2000
14. SIO_RCVALL_IGMPMCAST
Winsock
WSAIoctl 2+ IGMP
S I O _ R C VA L L W S A I o c t l
I P P R O TO _ I G M P I G M P
SIO_RCVALL I / O
Windows 2000
15. SIO_ROUTING_INTERFACE_QUERY
Winsock
SOCKADDR 2+ OOB
I / O
SOCKADDR lpvInBuffer
lpvOubBuffer
SOCKADDR
bind
Windows 2000 I/O
P C M C I A Windows 2000

SIO_ROUTING_INTERFACE_QUERY
SIO_ROUTING_
INTERFACE_CHANGEI/O
SIO_ROUTING_INTERFACE_QUERY
16. SIO_ROUTING_INTERFACE_CHANGE
Winsock
WSAIoctl SOCKADDR 2+

I / O

SOCKADDR

SIO_ROUTING_INTERFACE_QUERY

W S A I o c t l
WSAEWOULDBLOCK WSAEventSelectWSAAsyncSelect
FD_ROUTING_INTERFACE_
C H A N G E I / O
WSAOVERLAPPED
238 Winsock API

S O C K A D D R
INADDR_ANY

S I O _ R O U T I N G _ I N T E R FA C E _
QUERY
17. SIO_ADDRESS_LIST_QUERY
Winsock
WSAIoctl SOCKET_ADDRESS_LIST 2+
I / O
S O C K E T _ A D D R E S S _ L I S T

i A d d r e s s C o u n t A d d r e s s

Win32
I/O
S I O _ A D D R E S S _ L I S T _ Q U E RY
S I O _ A D D R E S S _ L I S T _ C H A N G E

W S A I o c t l W S A E FA U LT
lcbBytesReturned
18. SIO_ADDRESS_LIST_CHANGE
Winsock
WSAIoctl 2+


W S A I o c t l
WSAEWOULDBLOCK WSAEventSelectWSAAsyncSelect
F D _ A D D R E S S _ L I S T _ C H A N G E

9I/O 239
I / O
W S A O V E R L A P P E D

19. SIO_GET_INTERFACE_LIST
Winsock
WSAIoctl INTERFACE_INFO[] 2+
I / O W s 2 t c p i p . h

INTERFACE_INFO

iiFlags IFF_UP
I F F _ B R O A D C A S T I F F _ M U LT I C A S T
I F F _ L O O P B A C K
I F F _ P O I N T TO P O I N T

9.2.3 I/O

Secure Socket Layer S S L Windows CE


Windows 95/98Windows NTWindows 2000 S S L
Windows CE WinsockWinsock 1
1. SO_SSL_GET_CAPABILITIES

WSAIoctl DWORD Winsock
Wi n d o w s
D W O R D
SO_CAP_CLIENT
2. SO_SSL_GET_FLAGS
240 Winsock API


WSAIoctl DWORD s
s
D W O R D S O _ S S L _ S E T _ F L A G S

3. SO_SSL_SET_FLAGS

WSAIoctl DWORD s
D W O R D
S S L _ F L A G _ D E F E R _ H A N D S H A K E

Wi n s o c k Wi n s o c kc o n n e c t
SO_SSL_PERFORM_HANDSHAKE

4. SO_SSL_GET_PROTOCOLS

WSAIoctl SSLPROTOCOLS

SSLPROTOCOLS

d w P r o t o c o l S S L _ P R O TO C O L _ S S L 2S S L _ P R O TO C O L _
SSL3SSL_PROTOCOL_PCT1
5. SO_SSL_SET_PROTOCOLS

WSAIoctl SSLPROTOCOLS
I/O
SSLPROTOCOLS
6. SO_SSL_SET_VALIDATE_CERT_HOOK

WSAIoctl SSLVALIDATECERTHOOK SSL
I / O
Wi n d o w s
SSLVALIDATECERTHOOK

9I/O 241

H o o k F u n c p v A rg

7. SO_SSL_PERFORM_HANDSHAKE

WSAIoctl
I / O S S L _ F L A G _
D E F E R _ H A N D S H A K E
SL_FLAG_DEFER_HANDSHAKE

9.2.4 ATM I/O

I / OAT M AT M
ATMATM 6
1. SIO_GET_NUMBER_OF_ATM_DEVICES
Winsock
WSAIoctl DWORD 2+ ATM
I/O DWORD lpvOutBuffer
AT M I D 0 ~
-1
2. SIO_GET_ATM_ADDRESS
Winsock
WSAIoctl DWORD ATM_ADDRESS 2+ ATM
I / O AT M
D W O R DI D l p v O u t B u ff e r
AT M _ A D D R E S S b i n d
ATM
3. SIO_ASSOCIATE_PVC
Winsock
WSAIoctl ATM_PVC_PARAMS 2+
I / O Permanent Virtual CircuitP V C
P V C AT M _ P V C _ PA R A M S
AF_ATM

ATM_PVC_PARAMS
242 Winsock API

4. SIO_GET_ATM_CONNECTION_ID
Winsock
ATM_CONNECTION_ID 2+ OOB
I / O AT MI D
l p v O u t B u ff e r AT M _ C O N N E C T I O N _ I D
V P I / V C I S I O _ A S S O I C AT E _ P V C

9.3

I / O

I / O A p p l e Ta l kI r D A

I/O I/O
Wi n d o w s

10
Winsock 2
Winsock 1

Winsock 2

10.1

I P
1 5 7 . 5 4 . 1 8 5 . 1 8 6
ajones1IP
DNSIP
Wi n s o c k

1 5 7 . 6 4 . 1 8 5 . 1 8 6 5 0 0 0

Winsock

10.2

Wi n s o c k

IPDNSNovellIPXNetWareNDS
Winsock

S A P
NetWareAppleTalkNBP

Wi n s o c k
D N S D N S I P
244 Winsock API

DNS

NDS


Nspapi.h
1 0 - 1 Wi n 3 2
I P X / S P X
NS_SAP
10-1


NS_SAP 1 SAP IPX
NS_NDS 2 NDS IPX
NS_DNS 11 DNS TCP/IP
ND_NTDS 32 Windows NT Windows 2000

IPX/SPXSAP
S A P N e t Wa r eClient Service of
NetWare IPX 0
N D S N D S

Winsock 2
WSAEnumNameSpaceProviders

l p n s p B u ff e r W S A N A M E S PA C E _ I N F O

lpdwBufferLength WSAGetLastErrorWSAEFAULT
W S A N A M E S PA C E _ I N F O
S O C K E T _ E R R O RWSANAMESPACE_INFO


10 245

U n i c o d eA N S IWinsock 2
WSANAMESPACE_INFO Winsock 2
UnicodeANSI NSProviderId
G U I D d W N a m e S p a c e
N S _ D N SN S _ N A Pf A c t i v e

d w Ve r s i o n l p s z I d e n t i f i e r

10.3

service class

10.3.1


Wi n s o c kW S A I n s t a l l S e r v i c e C l a s s

lpServiceClassInfoWSASERVICECLASSINFO

G U I D G U I D
U u i d g e n . e x e G U I D
G U I D
246 Winsock API

S v c g u i d . h
G U I D S A P I P X
S V C I D _ N E T WA R E SAP ID S A P
IDNetWare0x40x7
SAP ID GUID
G U I D
S v c g u i d e . hG U I D
GUID SAP ID 10-2
F T PTe l n e t

10-2 ID


SVCID_TCPPort TCP GUID
SVCID_DNSRecordType DNS GUID
SVCID_UDPPort UDP GUID
SVCID_NETWARESapId SAP ID GUID

W S A S E RV I C E C L A S S I N F O l p s z S e r v i c e C l a s s N a m e
dwCount
l p C l a s s I n f o sW S A N S C L A S S I N F O

l p s z N a m e 1 0 - 3
REG_DWORD
10-3


SapId SERVICE_TYPE_VALUE_SAPID NS_SAP SAP ID
ConnectionOriented SERVICE_TYPE_VALUE_CONN

TcpPort SERVICE_TYPE_VALUE_TCPPORT NS_DNS TCP
NS_NTDS
UdpPort SERVICE_TYPE_VALUE_UDPPORT NS_DNS UDP
NS_NTDS

d w N a m e S p a c e 1 0 - 3
dwValueTypedwValueSizelpValue
dwValueType
D W O R D R E G _ D W O R D dwValueSize

10 247
lpValue lpValue
Widget Server Class

G U I D G U I D
Widget Server Class
NetWareSAP ID of 200
248 Winsock API

G U I D U D P G U I D
5150 UDP
WSASERVICECLASSINFOdwCount4
SAPNS_SAPWindows NT NS_NTDS
WSANSCLASSINFO

W S A N S C L A S S I N F O
S E RV I C E _ T Y P E _ VA L U E _ C O N N 0
Windows NT SERVICE_TYPE_VALUE_UDPPORT
UDP SAPSERVICE_
TYPE_VALUE_SAPID SAP ID
W S A N S C L A S S I N F O
1 0 - 3
D W O R D W S A I n s t a l l S e r v i c e C l a s s
WSASERVICECLASSINFOWSAInstallServiceClass0
S O C K E T _ E R R O R W S A S E RV I C E C L A S S I N F O
W S A G e t L a s t E r r o r W S A E I N C A L W S A G e t L a s t E r r o r
WSAEALREADYWSARemoveServiceClass

GUIDGUID GUID

10.3.2


Wi n s o c k
WSASetService

l p q s R e g I n f o W S A Q U E RY S E T
essOperation 10-
4
dwControlFlags0SERVICE_MULTIPLE

W S A S e r v i c eW S A Q U E RY C S A D D R _ I N F O
SERVICE_MULTIPLE
RNRSERVICE_DELETE 1 0 - 5


10 249
10-4


RNRSERVICE_REGISTER

RNRSERVICE_DEREGISTER


RNRSERVICE_DELETE
S E RV I C E _ M U LT I P L E

10-5 WSASetService

RNRSERVICE_REGISTER


none
SERVICE_MULTIPLE

RNRSERVICE_DEREGISTER


none WSASERVICE_
WSAQUERY, NOT_FOUND
CSADDR_INFO 0
SERVICE_MULTIPLE WSASERVICE_
NOT_FOUND

RNRSERVICE_DELETE


none W S A S E RV I C E _
NOT_FOUND
SERVICE_MULTIPLE WSASERVICE_NOT_
FOUND

W S A S e t S e r v i c e W S A Q U E RY S E T

250 Winsock API


d w S i z e W S A Q U E RY S E T l p s z S e r v i c e I n s t a n c e N a m e
lpServiceClassId GUID
l p Ve r s i o n
l p s z C o m m e n t d w N a m e S p a c e

NS_ALL
1 4 d w N a m e S p a c e 0
l p N S P r o v i d e r I d G U I Dl p s z C o n t e x t
NDS
dwNumberOfProtocolslpafpProtocols
dwNumberOfProtocolsAFPROTOCOLS
lpafpProtocols

i A d d r e s s F a m i l y A F _ I N E TA F _ I P X
iProtocol IPPROTO_TCPNSPROTO_IPX
W S A Q U E RY S E T l p s z Q u e r y S t r i n g
SQL Whois++
d w N u m b e r O f C s A d d r s
lpcsaBufferCSADDR_INFOCSADDR_INFO

S O C K E T _ A D D R E S S
L o c a l A d d r
R e m o t e A d d r c o n n e c ts e n d t o
i S o c k e t Ty p e i P r o t o c o l

10 251
SOCK_STREAMSOCK_DGRAM AF_INETAF_IPX
WSAQUERYSET dwOutputFlagslpBlob

B L O B
BLOB
1 0 - 6W S A Q U E RY S E T

10-6 WSAQUERYSET


dwSize
lpszServiceInstanceName *
lpServiceClassId
lpVersion
lpszComment
dwNameSpace
lpNSProviderId
lpszContext
dwNumberOfProtocols 00 00
lpafpProtocols
lpszQueryString
dwNumberOfCsAddrs
lpcsaBuffer
dwOutputFlags
lpBlob

10.3.3

S A P N T D S
Windows NT
Windows NTWindows 2000
Active Directory () Windows 2000

Windows NT
I PI P X 1 0 - 1

10-1 WSASetService
252Winsock API


10 253

1 0 - 1
W S A Q U E RY
WidgetServer
G U I D
WidgetService Class G U I D
S V C I D _ N E T WA R E ( 2 0 0 )
I P XU D P N S _ A L L
lpNSProviderIdNULL
C S A D D R _ I N F O S O C K A D D R W S A S e t S e r v i c e
WSAQUERYSET l p c s a B u ff e r
S O C K A D D R
U D P
I N A D D R _ A N Y g e t s o c k e t n a m e I P
getsocketname SOCKADDR_IN CSADDR_INFO

U D P S O C K A D D R _ I N F O I P X
6
0
I P X _ A D D R E S S I P XC S A D D R _ I N F O
S O C K _ D G R A M N S P R O TO _ I P X
W S A Q U E RY S E T d w N u m b e r O f A d d r s 2 U D PI P X
W S A S e t S e t S e r v i c e WSAQUERYSET
R N R S E RV I C E _ R E G I S T E R SERVICE_MULTIPLE
IPXUDP


INADDR_ANYUDP
I P g e t s o c k n a m e I P
g e t h o s t b y n a m e
I P Winsock 2 i o c t l
S I O _ G E T _ I N T E R FA C E _ L I S T Windows 2000 i o c t lS I O _ A D D R E S S _
L I S T _ Q U E RY B I P T C P / I P
g e t h o s t b y n a m e 6i o c t l 9 R n r c s . c

254 Winsock API



10.4

WSALookupServiceBeginWSALookupServiceNextWSALookupServiceEnd
W S A L o o k u p S e r v i c e B e g i n

WSAQUERY
d w C o n t r o l F l a g s 1 0 - 7
H A N D L E
0 S O C K E T _ E R R O R
W S A G e t L a s t E r r o r WSAEINVAI
W S A N O _ D ATA
WSASERVICE_NOT_FOUND
10-7


LUP_DEEP
LUP_CONTAINERS
LUP_NOCONTAINERS
LUP_FLUSHCACHE
LUP_FLUSHPREVIOUS W S A L o o k u p
S e r v i c e N e x tW S A _ N O T _ E N O U G H _ M E M O RY

LUP_NEAREST

LUP_RES_SERVICE CSADDR_INFO
LUP_RETURN_ADDR lpcsaBuffer
LUP_RETURN_ALIASES WSALookupService
LUP_RETURN_ALL
LUP_RETURN_BLOB lpBlob
LUP_RETURN_COMMENT lpszComment
LUP_RETURN_NAME lpszServiceInstanceName
LUP_RETURN_TYPE lpServiceClassId
LUP_RETURN_VERSION lpVersion

WSALookupServiceBeginWSALookupServiceNext


10 255

h L o o k u pW S A L o o k u p S e r v i c e B e g i n d w C o n t r o l F l a g s
L U P _ F L U S H P R E V I O U S W S A L o o k u p S e r v i c e B e g i n
l p d w B u ff e r L e n g t h l p q s R e s u l t s W S A Q U E RY S E T
B L O B

WSA_NOT_ENOUGH_MEMORY
W S A L o o k u p S e r v i c e B e g i n W S A _ E _ N O _ M O R E ( 1 0 11 0 )
WSALookupServiceNext Winsock
W S A E N O M O R E ( 1 0 1 0 2 )

HANDLEWSALookupServiceEnd

10.4.1

WSAQUERY

G U I D
g u i d I D q s 0d w S i z e

* G U I D N S _ A L L
I P XU D P / I P
AFPROTOCOLS
W S A L o o k u p S e r v i c e B e g i n
WSAQUERYSET
L U P _ R E T U R N _ A D D RL U P _ R E T U R N _ N A M E
256 Winsock API

*
L U P _ R E T U R N _ N A M E
HANDLE
WSA_E_NO_MORE WSALookupServiceNext


10 257

W S A L o o k u p S e r v i c e N e x t

LUP_FLUSHPREVIOUS

LUP_FLUSHPREVIOUS WSAEFAULT
lpdwBufferLength
WSAQUERYSET2 0 0 0

WSAEFAULT
W S A L o o k u p S e r v i c e N e x t W S A Q U E RY S E T
WSAQUERYSET
l p s z S e r v i c e I n s t a n c e N a m el p c s a B u ff e r
C S A D D R _ I N F O d w N u m b e r O f C s A d d r s
IPXIP

* W S A L o o k u p S e r v i c e N e x t

W S A _ E _ N O _ M O R E
WSALookupServiceEnd

10.4.2 DNS

D N S
Winsock DNS DNS
DNS BLOB
6g e t h o s t n a m e H O S T N A M E
IPWSAQUERYSET
BLOB
DNS Dnsquery.c
D N S
DNS
258 Winsock API

D N S G U I D
SVCD_INET_HOSTADDRBYNAMEGUIDlpszServiceInstanceName
D N S d w N a m e S p a c e
N S _ D N S l p a f P r o t o c o l s A F P R O TO C O L S
TCP/IPUDP/IP
WSALookupServiceNext

DNS BLOB
WSAQUERYSET
HOSTENT 2048
W S A E FA U LT D N S H O S T E N T
IP WSALookupServiceNext
B L O B 6
HOSTENT

H O S T E N T B L O B
BLOB


10 259
1 0 - 1 H O S T E N T D N S
riven IP

H O S T E N T h _ n a m eh _ a l i a s e sh _ a d d r _ l i s t
h_aliasesh_addr_list
32 10-1h_addr_list
1 6 H O S T E N T 4I P
2 8
H O S T E N T 2 8 4
0 x 9 D 3 6 B 9 B AI P1 5 7 . 5 4 . 1 8 5 . 1 8 6
2 8 4 0
I P
h _ a l i a s e s

0 h_name
HOSTENT

h_name h_aliases AF_ h_addr_list 0x9D36-


0x4 0x1c 0x0 0x0 r i v e n /0
=0x20 =0x18 INE_T =0x10 B9BA

HOSTENT

10-1 HOSTENT BLOB


h_name

h_aliases h_addr_list

260 Winsock API


H O S T E N T
0
h _ a d d r _ l i s t H O S T E N T

10.5

R N R
T C P / I P D N S
DNS Windows 2000Windows NT

S A P I P X / S P X N T D S

11
Multicasting

B r o a d c a s t i n g

Wi n 3 2 Wi n s o c k
I PAT M

I PAT M
I PAT M
A P I Winsock 1 Winsock 2
WinsockIP WinsockWinsock 1
Winsock 2
Windows CE 2.1Windows 95Windows 98Windows NT 4
Windows 2000 2 . 1 Windows CE I P
I P Windows 98
Windows 2000 ATM Wi n s o c k
Win98 SE AT M I P
AT M
ATM 11.2IP
NICIP
1998 IP

11.1

C o n t r o l
P l a n eData Plane
R o o t e d
N o n r o o t e d c_root
c _ l e a f
c _ r o o t c _ l e a f
c _ l e a f
AT M


262 Winsock API

c _ l e a f

c _ r o o t
I P
11 - 1
c_root c_leaf

c_root

c_leaf c_leaf c_leaf

c_leaf


c_leaf c_leaf

c_leaf

11-1


d _ r o o t d _ r o o t
d _ l e a f
d _ l e a f
d _ r o o t d _ r o o t d _ l e a f AT M
11 - 2
d _ r o o t a b c d _ l e a f d _ l e a f
x y z d _ r o o t
abcxyz

11 263

I P

AT M I P

Wi n s o c k

d_root

d_leaf d_leaf d_leaf


d_leaf

d_leaf xyz d_leaf

d_leaf

11-2

5
W S A E n u m P r o t o c o l s
WSAPROTOCOL_INFO dwServiceFlags1
XP1_MULTIPOINT_CONTROL_PLANE
X P 1 _ M U LT I P O I N T _ D ATA _ P L A N E
264 Winsock API

0

11.2 IP

I P
I P

IP DIP
2 2 4 . 0 . 0 . 02 3 9 . 2 5 5 . 2 5 5 . 2 5 5
2 2 4 . 0 . 0 . 02 2 4 . 0 . 0 . 1
2 2 4 . 0 . 0 . 2 I G M P
RFC 1700
I n t e r n e t
I A N A 11 - 1

RFC 1700
11-1


224.0.0.0
224.0.0.1
224.0.0.2
224.0.1.1
224.0.0.9 RIP2
224.0.1.24 WINS

T C P / I P I P
I P
I G M P

I P
I n t e r n e t Internet Gateway Management Protocol,
IGMP

11.2.1 Internet

IGMP
I G M PI P
I G M P AB 2 2 4 . 1 . 2 . 3
I G M P
IGMP IGMP
I G M P

11 265
2 2 4 . 0 . 0 . 2

T T L

I P X T T L 2

T T L1
T T L
1 T T L 0
TTL

2 2 4 . 0 . 0 . 1
I G M P

Winsock

A
B
AB
I G M P 2

Windows 98Windows 2000 I G M P2 Windows 95


Winsock 2 I G M P2 Windows NT 4 Service Pack 4
S P 4 I G M P2 S P 1
IGMP12 RFC 1112RFC 2236

11.2.2 IP

IP
IPWinsock 1Winsock 2
A P I Winsock 1 I P

1) s o c k e t A F _ I N E T S O C K _ D G R A M
socket

2)
3) s e t s o c k o p t I P _ A D D _ M E M B E R S H I P
266 Winsock API

Winsock 2 1 )2 ) 3 )
W S A J o i n L e a f s e t s o c k o p t
11.4 Winsock
I P
U D P

I P U D P

11.2.3 IP

I P Wi n d o w s 2 . 1 Windows CE
I P
I P
M A C I P
I P
MAC RFC 1700
Winsock API
Windows 95Windows NT 4

M A C

Windows 98Windows 2000

1 63 2 Windows 98

W S A E N O B U F S
Windows 2000 Windows 2000
Windows 95Windows NT 4 MAC

11.3 ATM

WinsockATMIP
AT M
c_root
I P AT M AT M I P
ATM IP IP ATM
AT M I P I P I P
ATM ATM

11 267
AT MI P I P I P
IGMP ATM
AT M L A N L A N E L A N E
AT M I P X / S P XN e t B E U IT C P / I P
I G M PI C M P I P I P
IGMP
AT M
Wi n d o w s
2000

AT MI P AT M

AT M

11.3.1 ATM

ATM

1) W S A S o c k e t AF_ATM W S A _ F L A G _
MULTIPOINT_C_LEAFWSA_FLAG_MULTIPOINT_D_LEAF
2) ATM bind
3) listen
4) a c c e p tW S A A c c e p t
I/O Winsock I/O 8
AT M

Windows 98Windows 2000ATM


ATM

11.3.2 ATM

ATM
1) W S A S o c k e t AF_ATM W S A _ F L A G _
M U LT I P O I N T _ C _ R O O TW S A _ F L A G _ M U LT I P O I N T _ D _ R O O T
2) ATM WSAJoinLeaf

WSAJoinLeaf
268 Winsock API

11.4 Winsock

Wi n d o w s
Wi n s o c k A P I I P Wi n s o c k
Wi n s o c k Winsock 1
Winsock 2
W S A J o i n L e a f Winsock 1
Berkeley

11.4.1 Winsock 1

Winsock 1 IP setsockopt
I P _ A D D _ M E M B E R S H I P I P _ D R O P _ M E M B E R S H I P
ip_mreq

i m r _ m u l t i a d d r i m r _ i n t e r f a c e
i m r _ i n t e r f a c eI N A D D R _ A N Y
I P I P
234.5.6.7

setsockoptIP_DROP_MEMBERSHIP
ip_mreq

Winsock 1 IP
11-1 IP


11 269

Multicast Loopback I P

11-1 Winsock 1.1


270Winsock API


11 271
272Winsock API


11 273

Winsock 1
Winsock 1.1 Winsock.h Wsock32.lib
Winsock 2 Wi n s o c k . h W s 2 t c p i p . h
W s 2 _ 3 2 . l i b
I P _ A D D _ M E M B E R S H I P I P _ D R O P _ M E M B E R S H I P I P _ M U LT I C A S T _ I F
I P _ M U LT I C A S T _ L O O PStephen Deering
Wi n s o c k Winsock 2
Wi n s o c k w s o c k 3 2 . l i b Winsock 2
274 Winsock API

11.4.2 Winsock 2

Winsock 2Winsock 1
Q o S
Winsock
W S A J o i n L e a f

s W S A S o c k e t
W S A J o i n L e a f
W S A E I N VA L

W S A _ F L A G _ M U LT I P O I N T _ C _ R O O T
W S A _ F L A G _ M U LT I P O I N T _ C _ L E A F W S A _ F L A G _
MULTIPOINT_D_ROOTWSA_FLAG_MULTIPOINT_D_LEAF SOCKADDR
AT M
I P
namelen name
l p C a l l e r D a t a
l p C a l l e e D a t a
Wi n d o w s
N U L Ll p S Q O S F L O W S P E C
1 2 Q o S
l p G Q O S
Windows dwFlags
JL_SENDER_ONLYJL_RECEIVER_ONLY
JL_BOTY
S O C K E T
W S A J o i n L e a f
W S A A s y n c S e l e c t
WSAEventSelect s FD_CONNECT
FD_CONNECT

11 275
n a m e 11 - 2
F D _ C O N N E C T c l o s e s o c k e t

W S A J o i n L e a f


ioctlsocketFIONBIO
W S A J o i n L e a f W S A E W O U L D B L O C K
I / O
F D _ C O N N E C T 8 W S A A s y n c S e l e c t
W S A E v e n t S e l e c tI / O W S A J o i n L e a f

Winsock

W S A J o i n L e a f
n a m e
c _ r o o t
W S A J o i n L e a f
I / O W S A E v e n t S e l e c t
W S A A s y n c S e l e c t F D _ C L O S E
c _ r o o t W S A J o i n L e a f
AT M

closesocket
W S A J o i n L e a f n a m e

ATM UNI4.0
I P W S A J o i n L e a f
s W S A J o i n L e a f
bindlistenaccept/WSAAccept

c l o s e s o c k e t
11 - 2
n a m e
FD_CONNECT
acceptWSAAccept

c_leafWSAJoinLeaf
c_root
276 Winsock API

WSAJoinLeaf
W S A J o i n L e a f
W S A S o c k e t W S A J o i n L e a f

c l o s e s o c k e t
c _ r o o t c l o s e s o c k e t I / Oc _ l e a f
FD_CLOSE
11-2 WSAJoinLeaf

s name FD_
CONNECT

c_root F D _ C L O S E

c_leaf s

c_root N/A N/A N/A

c_leaf s

1. Winsock 2 IP
11-2 Mcastws2.c
WSAJoinLeaf IP Winsock 1 IP
M c a s t w s 1 . c
WSAJoinLeaf
11-2 IP

11 277
278Winsock API


11 279
280Winsock API


11 281

2. Winsock 2 ATM
11-3 Mcastatm.c ATM
S u p p o r t . c
G e t AT M A d d r e s s
ATM
11-3 Server
W S A J o i n L e a f
W S A S e n d
AT M
W S A J o i n L e a f
W S A J o i n L e a f

C l i e n t
a c c e p tW S A A c c e p t

11-3 ATM
282Winsock API


11 283
284Winsock API


11 285
286Winsock API


11 287
288 Winsock API

11.4.3 Winsock

Winsock 1 Winsock 2 I P

11 289
I P _ M U LT I C A S T _ T T LI P _ M U LT I C A S T _ I FI P _ M U LT I C A S T _ L O O P
Winsock 1 Winsock 2
IP
1. IP_MULTICAST_TTL
TTL TTL1

T T L
T T L
TTL11 TTL
0
2 2 4 . 0 . 0 . 02 2 4 . 0 . 0 . 2 5 5
T T L

s e t s o c k o p tl e v e l I P P R O TO _ I Po p t n a m e I P _ M U LT I C A S T _ T T L
o p t v a l T T L T T L

W S A I o c t li o c t l s o c k e t
SIO_MULTICAST_SCOPE
AT M T T L AT M
c_root

2. IP_MULTICAST_IF
I P

optval

290 Winsock API


1 2 9 . 1 2 1 . 3 2 . 1 9 s
IP
AT M W S A J o i n L e a f
c_root ATM
acceptWSAAccept
3. IP_MULTICAST_LOOP

r e c v f r o m

I P _ M U T L I C A S T _ L O O P
o p t v a l

W S A I o c t l i o c t l s o c k e t i o c t l S I O _ M U LT I P O I N T _
L O O P B A C K Windows 95
Windows 98Windows NT 4
WSAENOPROTOOPT
AT M
ATM
c _ r o o t c _ l e a f c _ r o o t
Loopback

11.4.4

R A S

Wi n d o w s Windows NT 4
IGMP Windows NT 4

Windows 2000 R A S I G M P

11 291

11.5

I P AT M
Winsock API Winsock 1Winsock 2
WSAJoinLeaf


12
I n t e r n e t

Quality of ServiceQoS
Q o S
Q o S

UDP



Generic Quality of ServiceGQOSQoS
QoSTCP/IPUDP/IPWindows 98Windows 2000
ATM QoS
Q o S Wi n 3 2

Winsock
I P Q o S
QoSATM IPQoS
QoS
QoS

12.1

QoS



R e s o u r c e
Reservation ProtocolR S V P Q o S Q o S
RSVPQoS QoS

12.1.1

R S V P

12 293
R S V P
R S V P Q o S R S V P
RSVP

R S V P

QoS QoS
PAT H PAT H


R E S V
R S V P

R S V P
RESV
R E S V Q o S
PAT HR E S V
PATHRESV RSVP

Wi n s o c k Q o S R S V P
Winsock API
R S V P

R S V P

12.1.2

QoS
Q o S

8 0 2 . 1 p M A C
3
IP IP
2 RSVP WAN QoS OSI2

SBM
R S V P Q o S
Q o S
294 Winsock API


1. 802.1p
Q o S H U B
H U B O S I 2

802.1p M A C 3
8 0 2 . 1 p
8 0 2 . 1 p

Q o S 8 0 2 . 1 p 3
NIC 802.1p
2. IP
IP IP Precedence802.1p
O S I 3
I P I PTO S

8 0 2 . 1 p I P 3 I P

3. 2
WA N 2 WA N

WA N 12 3
QoSWANQoS
Q o S R S V P Q o S WA N 2
WAN QoS
4.
Subnet Bandwidth ManagerSBM
S B M Q o S
S B M Q o S
S B M

Admission Control ServiceACS


S B M

SBM Windows 2000 Server

12.1.3

QoS
Q o S

12 295
QoS
GQOS QoS


RSVP
GQOS API GQOS Winsock
T CA P I

1. GQOS
G Q O S G Q O S Q o S G Q O S
G Q O S
RSVP
Q o S W S A E n u m P r o t o c o l s
Q o S W S A P R O TO C O L _ I N F O
WSAEnumProtocols dwServiceFlags1
X P 1 _ Q O S _ S U P P O RT E D Q o S
WSAEnumProtocols 5
2.
Traffic ControlTCQoS TC
T C

Q o S T C

(1)
Generic Packet ClassifierGPC
GPC CPU
G P C

(2)
Packet Scheduler Q o S

QoS
G P C
GPC
(3)
Packet Shaper
Q o S

296 Winsock API



3. API
API
Winsock GQOS
G Q O S
T C A P I
Platform SDK
Winsock GQOS API

12.1.4

P o l i c yG Q O S Q o S

ACSWindows 2000 RSVP PATHRESV


QoS QoS
L P M S B M A C S

PE
1.
Admission Control ServiceA C S Q o S
R S V P A C S PAT HR E S V
R S V P
LPM
A C S Windows 2000

2.
Local Policy ModuleLPM ACS
A C S R S V P L P M L P M
Active DirectorySBM
A C S R S V P
Q o S R S V P

Windows 2000
3.
L P M

12.2 QoSWinsock

QoS
Winsock 2 A P I Q o S

12 297
Wi n s o c k Q o S
Q o SWi n s o c k Q o S Q o S
Q o S

Q o S Q o S

Winsock API

12.2.1 QoS

QoS QoS
FLOWSPEC QoS
FLOWSPEC QoS
QoS
1. QoS
QoS QoS

F L O W S P E C P r o v i d e r
S p e c i f i c Q o S

2. FLOWSPEC
F L O W S P E C

FLOWSPEC
(1) TokenRate
TokenRate /Token

298 Winsock API



P e a k B a n d w i d t h
To k e n B u c k e t S i z e

To k e n B u c k e t S i z e
PeakBandwidth

T C

TokenRate
QOS_NOT_SPECIFIED-1

(2) TokenBucketSize
To k e n B u c k e t S i z e

TokenRateTokenBucketSize

(3) PeakBandwidth
P e a k B a n d w i d t h

P e a k B a n d w i d t h

(4) Latency
L a t e n c y
S e r v i c e Ty p e
Latency
(5) DelayVariation
D e l a y Va r i a t i o n

DelayVariation
(6) ServiceType
ServiceType
SERVICETYPE_NOTRAFFIC
S E RV I C E T Y P E _ B E S T E F F O RT F L O W S P E C


S E RV I C E T Y P E _ C O N T R O L L E D L O A D

12 299



SERVICETYPE_GUARANTEED TokenRate
To k e n S i z e
T C
TokenRateLatency

ServiceType O R 1 2 - 1

12-1


SERVICETYPE_NETWORK_UNAVAILABLE
SERVICETYPE_GENERAL_INFORMATION
SERVICETYPE_NOCHANGE Q o S
Wi n s o c k Q o S
QoS
SERVICE_IMMEDIATE_TRAFFIC_CONTROL TC
RESV
SERVICE_NO_TRAFFIC_CONTROL ServiceTypeOR

SERVICE_NO_QOS_SIGNALING S E RV I C E T Y P E _
I M M E D I AT E _ T R A F F I C _ C O N T R O L
R S V P R S V P
PATH FLOWSPEC
R E S V
PA T H W S A I o c t l
SIO_SET_QOS RESV

(7) MaxSduSize
M a x S d u S i z e M a x S d u S i z e

(8) MinimumPolicedSize
MinimumPolicedSize MinimumPolicedSize

12.2.2 QoS


R S V P F D _ Q O S
QoS FD_QOS
WSAAsyncSelectWSAEventSelect
FD_QOS
300 Winsock API

FLOWSPECQOS_NOT_SPECIFIED
Q o S F D _ Q O S Q o S
F L O W S P E C
FD_QOS QoS


Q o S
F D _ Q O S
S I O _ G E T _ Q O S Q o S Q o S

1. WSAConnect
W S A C o n n e c t
QoS QoSlpSQOS QoSGroup QoS
lpGQOS NULL

WSAConnect
PAT H
RESV
PATHRESV WSAConnect
Q o S
WSAConnect
Q o S
WSAIoctlSIO_SET_QOS
2. WSAAccept
WSAAccept QoS



12 301

Q o S l p S Q O S
Q o S Q o SW S A A c c e p t
W S A I o c t lS I O _ S E T _ Q O S Q o S

T C P
T C P
PAT H Q o S Q o S
WSAAccept
Windows 98WSAAccept
WSAAccept lpSQOS NULL QOS
SIO_SET_QOSWSAAccept
3. WSAJoinLeaf
WSAJoinLeaf 11


WSA_FLAG_MULTIPOINT_C_ROOTWSA_FLAG_MULTIPOINT_C_LEAFWSA_FLAG_
MULTIPOINT_D_ROOTWSA_FLAG_MULTIPOINT_D_LEAF
lpSQOS QoS
W S A J o i n L e a fI P QoS RSVP

F D _ Q O S

T T L SIO_MULTICAST_
S C O P EI P _ M U LT I C A S T _ T T L T T L T T L W S A J o i n L e a f
302 Winsock API

SIO_SET_QOS Ioctl Q o S Q o S
TTLQ o SS I O _ S E T _ Q O S T T L
TTL RSVP
QoS TTL
T T L R S V P T T L
I P
3 T T L = 3
W S A J o i n t L e a f T T L
R S V P T T L6 3

4. WSAIoctl
I / O S I O _ S E T _ Q O S W S A I o c t l
Q o S Q o S Q o S
W S A I o c t l Q o S

9 W S A I o c t l S I O _ S E T _
QOSSIO_GET_QOS
S I O _ S E T _ Q O S Q o S S I O _ S E T _ Q O S
W S A I o c t l
Q o S

WSAConnectSIO_SET_QOSWSAIoctl
R S V P
Q o S l p v I n B u ff e r Q o S c b I n B u ff e r

S I O _ G E T _ Q O S F D _ Q O S
S I O _ G E T _ Q O S W S A I o c t l
F D _ Q O S
Q o Sl p v O u t B u ff e r
c b O u t B u ff e r N U L L
0SIO_GET_QOS
QoS ProviderSpecific
WA S B U F Q o S l e n Q U E RY _ P S _ S I Z E b u f
NULL WSAIoctllen
l e n
Windows 2000 Windows 98

W S A I o c t l I / O S I O _ C H K _ Q O S
12-26 l p v I n B u ff e r DWORD

12 303
l p v O u t B u ff e r D W O R D
A L L O W E D _ TO _ S E N D _ D ATA PAT H
R E S V Q o S
A L L O W E D _ TO _ S E N D _ D ATA S I O _ C H K _ Q O SI / O
Q o S
Q o S 9 I / O

12-2 SIO_CHK_QOS

SIO_CHK_QOS
ALLOW_TO_SEND_DATA BOOL
RESV
ABLE_TO_RECV_RSVP RSVP BOOL
LINE_RATE DWORD
LOCAL_TRAFFIC_CONTROL TC BOOL
LOCAL_QOSABILITY QoS BOOL
END_TO_END_QOSABILITY QoS BOOL

1 2 - 2 10
I N F O _ N O T _ AVA I L A B L E

12.3 QoS

Q o S Q o S
RSVP
TC
closesocket
shutdown
WSAConnect
S E RV I C E T Y P E _ N O T R A F F I CS E RV I C E _ T Y P E _ B E S T E F F O RT
WSAIoctlSIO_SET_QOS
s h u t d o w n

S D _ S E N D
shutdown QoS

QoSProviderSpecific
F D _ Q O S Q o S
Q o S W S A I o c t l S I O _ S E T _ Q O S
QoS
Q O S _ O B J E C T _ H D R
304 Winsock API

S I O _ G E T _ Q O S Q o S
Q O S _ O B J E C T _ H D R

ObjectType O b j e c t L e n g t h
1 2 - 3

12-3


QOS_OBJECT_PRIORITY QOS_PRIORITY
QOS_OBJECT_SD_MODE QOS_SD_MODE
QOS_OBJECT_TRAFFIC_CLASS QOS_TRAFFIC_CLASS
QOS_OBJECT_DESTADDR QOS_DESTADDR
QOS_OBJECT_SHAPER_QUEUE_DROP_MODE QOS_SHAPER_QUEUE_LIMIT_DROP_MODE
QOS_OBJECT_SHAPER_QUEUE_LIMIT QOS_SHAPER_QUEUE_LIMIT
RSVP_OBJECT_STATUS_INFO RSVP_STATUS_INFO
RSVP_OBJECT_RESERVE_INFO RSVP_RESERVE_INFO
RSVP_OBJECT_ADSPEC RSVP_ADSPEC
RSVP_OBJECT_POLICY_INFO RSVP_POLICY_INFO
QOS_OBJECT_END_OF_LIST

1. QoS
Q o S 07
QOS_PRIORITY


3
F L O W S P E CServiceType
Packet Scheduler SendFlagsReceivePriority

2. QoS
QoS TCPacket Shaper
F L O W S P E C

12 305
FLOWSPECTokenRate

QOS_SD_MODE

ShapeDiscardMode 12-4
TC_NONCONF_DISCARD

F L O W S P E C

T C _ N O N C O N F _ S H A P E

12-4 QoS


TC_NONCONF_BORROW
S h a p e rS e q u e n c e r
To k e n R a t e

TC_NONCONF_SHAPE TokenRatePacket
Shaper
TC_NONCONF_DISCARD TokenRate

3. QoS
Q O S _ T R A F F I C _ C L A S S 2 8 0 2 . 1 p

Tr a ff i c C l a s s M A C
Qos.h
4. QoS
Q O S _ D E S TA D D R
W S A C o n n e c t
RSVP PATHRESV SIO_SET_QOSI/O

306 Winsock API


SocketAddress SOCKADDR
SocketAddressLengthSOCKADDR
5. QoS

Traffic Shaper
F L O W S P E C

DropMode 12-5
12-5


QOS_SHAPER_DROP_FROM_HEAD
QOS_SHAPER_DROP_INCOMING

6. QoS

QueueSizeLimit

7. RSVP
RSVP RSVP

S t a t u s C o d e R S V P 1 2 - 6

12 307
ExtendedStatus1ExtendedStatus2
12-6 RSVP


WSA_QOS_RECEIVERS RESV
WSA_QOS_SENDERS PATH
WSA_NO_QOS_RECEIVERS
WSA_NO_QOS_SENDERS
WSA_QOS_REQUEST_CONFIRMED
WSA_QOS_ADMISSION_FAILURE
WSA_QOS_POLICY_FAILURE
WSA_QOS_BAD_STYLE
WSA_QOS_BAD_OBJECT RSVP_FILTERSPEC

WSA_QOS_TRAFFIC_CTRL_ERROR FLOWSPEC
WSA_QOS_GENERIC_ERROR
ERROR_IO_PENDING

R S V P F D _ Q O S
S I O _ G E T _ Q O S Q o S R S V P _ S TAT U S _ I N F O
QoSUDP WSA_QOS_SENDERS
FD_QOS QoS
8. RSVP
RSVP RSVP Winsock 2 QoS API
R S V P _ R E S E RV E _ I N F O
QoS

S t y l e 1 2 - 7

C o n f i r m R e q u e s t R E S V
N u m P o l i c y E l e m e n t sP o l i c y E l e m e n t L i s t
R S V P _ P O L I C Y P o l i c y E l e m e n t L i s t
RSVP_POLICY

9. RSVP_DEFAULT_STYLE
QoS 12-7
WSAConnectUDP
308 Winsock API

12-7


UDP
UDP

10. RSVP_FIXED_FILTER_STYLE
QoS
U D P
N u m F l o w D e s c1F l o w D e s c L i s t

20Kbps
NumFlowDesc3FlowDescList FLOWSPEC
Q o S
U D P 1 2 - 1
F L O W D E S C R I I P TO R R S V P _ F I LT E R S P E CR S V P

12-1

11. RSVP_WILDCARD_STYLE
U D P W I L D C A R D T C P
U D P N u m F l o w D e s c 0
F l o w D e s c L i s tN U L L U D P

12. RSVP_SHARED_EXPLICIT_STYLE

N u m F l o w D e s c1F l o w D e s c L i s t
12-2

12 309

12-2

RSVP NumFlowDesc
F l o w D e s c L i s t
N u m F l o w D e s c F L O W D E S C R I P TO R F l o w D e s c L i s t

F l o w S p e c F L O W S P E C
N u m F i l t e r s F i l t e r L i s t R S V P _ F I LT E R S P E C
RSVP_FILTERSPEC

Type

FILTERSPEC
310 Winsock API

13. RSVP
RSVP_ADSPECRSVPAdspec RSVP
PAT H
RSVP MTU

G e n e r a l P a r a m s AD_GENERAL_PARAMS

I n t S e r v Aw a r e H o p C o u n tI n t S e r v ( h o p )
PathBandwidthEstimate

12 311
M i n i m u m L a t e n c y
P a t h M T UM T U
Flags
14. RSVP
R S V P
RSVP

N u m P o l i c y E l e m e n t P o l i c y E l e m e n t
RSVP_POLICY

R S V P _ P O L I C Y R S V P

12.4 QoS

Q o S R S V P RSVP PAT HR E S V

R S V P PAT H

FLOWSPEC
IP
IP
Q o S F L O W S P E C
W S A C o n n e c tW S A J o i n L e a fW S A I o c t lS I O _ S E T _ Q O S I P

U D P S I O _ S E T _ Q O S
I / O Q O S _ D E S TA D D R

RSVP RESV
FLOWSPEC


FLOWSPEC QoSWinsock
312 Winsock API

R S V P _ R E S E RV E _ I N F O
PAT H
R E S V PAT H

RESV UDP

QoS
R S V P Q o S
Q o S
Q o S

12.4.1 RSVP

PAT HRESV RSVP


U D PT C P U D P
QoS PATHRESV
1. UDP
U D P U D P
Q o S U D P F L O W S P E CQ o S

WSAConnect
W S A C o n n e c t QOS_DESTADDR
SIO_SET_QOS SIO_SET_QOSQoS

UDP WSAConnect
SIO_SET_QOSI/O QOS_DESTADDR
S I O _ S E T _ Q O S
R E S V W S A C o n n e c t
Q O S _ D E S TA D D R

U D P W S A C o n n e c tS I O _ S E T _ Q O SI / O
W S A C o n n e c t S I O _ S E T _ Q O S
RESV RESV
W S A C o n n e c t S I O _ S E T _ Q O S
R E S V R S V P
RSVP QoS
2. TCP
T C P

12 313

Q o S W S A C o n n e c t PAT H
I / O S I O _ S E T _ Q O S
PATH
W S A A c c e p t
Q o S
S I O _ S E T _ Q O SW S A A c c e p t Q o S
Q o S W S A A c c e p t
Q o S
Q o S Windows 98
Windows 2000 Windows 98l p S Q O S
N U L L I / O S I O _ S E T _ Q O S Q o S
CF_ACCEPTWSAAccept QoS

T C P W S A C o n n e c t
FLOWSPEC QoS RESV
Q o SW S A C o n n e c tS I O _ S E T _ Q O SI / O
R E S V
W S A A c c e p t Q o S
QoSQoS
PAT H Q o S R E S V

3.
U D P
W S A J o i n L e a f W S A C o n n e c t
WSAJoinLeafQoS SIO_SET_QOS
RSVP RSVP PATH
W S A J o i n L e a f
R E S V Q o S
R E S V Q o S
RESV
PATHWSAJoinLeafQoSRESV
S I O _ S E T _ Q O S Q o S


Q o S sendto
W S A S e n d To Q o S
W S A J o i n L e a f
d w F l a g s J L _ S E N D E R _ O N LYJ L _ R E C E I V E R _ O N LYQ o S
314 Winsock API

Q o S

12.4.2 QoS

TCPUDPUDP QoS
R S V P R S V P
A P I T C P
W S A C o n n e c t R E S V R E S V A P I

F D _ Q O S
FD_QOS
QoS
QoS
QoS
1. FD_QOS
F D _ Q O S
WSAEventSelect
WSAAsyncSelect FD_QOS
Q o S F D _ Q O S
F D _ Q O S
Q o S Q o S F L O W S P E C
Q O S _ N O T _ S P E C I F I E DS E RV I C E T Y P E _ N O T R A F F I C
Q o S S E RVICE_NO_QOS_ SIGNALING
SERVICETYPE_NOTRAFFIC
8
W S A E v e n t S e l e c t
W S A E n u m N e t w o r k E v e n t s 8
Q o S
W S A N E T W O R K E V E N T S

lNetworkEvents

& i E r r o r C o d e
Q o S
0

12 315
F D _ Q O S
F D _ Q O S _ B I T i E r r o r C o d e
Wi n s o c kF D _ R E A D _ B I TF D _ W R I T E _ B I T

2. RSVP
QoS
Q o S W S A A s y n c S e l e c t
W S A E v e n t S e l e c tF D _ Q O S F D _ Q O S
W S A I o c t l S I O _ G E T _ Q O SI / O
F D _ Q O S I / O
WSAIoctlSIO_GET_QOS QoS
Q o S
QoS
QoS
F D _ Q O S I / OS I O _ G E T _ Q O S
F D _ Q O S W S A I o c t l
S I O _ G E T _ Q O SI / O Q o S
Q o S F L O W S P E C
ServiceType SERVICETYPE_NOCHANGE
QoS WSAIoctlSIO_GET_QOS
S O C K E T _ E R R O R W S A G e t L a s t E r r o r W S A E W O U L D B L O C K
S I O _ G E T _ Q O S F D _ Q O S
R S V P _ S TAT U S _ I N F O
W S A I o c t l


F D _ Q O S S I O _ G E T _ Q O S F D _ Q O S

Q o S Q o S
Q o S
F L O W S P E C
Q o S

Controlled Load
Q o S
Q o S F L O W S P E C
Q o S
S I O _ S E T _ Q O S Q o S
R S V P
316 Winsock API

Q o SQ o S
1 2 - 6
R S V P _ S TAT U S _ I N F O
Q o S S I O _ G E T _ Q O S R S V P _ S TAT U S _ I N F O
W S A E v e n t S e l e c t
WSAEnumNetworkEventsWSANETWORKEVENTS
1 2 - 6 i E r r o r C o d e F D _ Q O S _ B I T
Q o S
Q o S
Q o S
QoS
3. WSA_QOS_RECEIVERSWSA_QOS_NO_RECEIVERS
R E S V
WSA_QOS_RECEIVERS QoS
R E S V W S A _ Q O S _ N O _ R E C E I V E R S

F D _ C L O S EW S A _ Q O S _ N O _ R E C E I V E R S


WSA_QOS_RECEIVERS QoS

WSA_QOS_RECEIVERS
4. WSA_QOS_SENDERSWSA_QOS_NO_SENDERS
PAT H
PATHWSA_QOS_SENDERS
PATH WSA_QOS_NO_SENDERS

W S A _ Q O S _ S E N D E R S 0W S A _ Q O S _ N O _ S E N D E R S

5. WSA_QOS_REQUEST_CONFIRMED

Q o S R S V P _ S TAT U S _ I N F O
C o n f i r m R e q u e s t
Q o S
QoS SIO_SET_QOSI/O

12.4.3 QoS

Wi n s o c k Q o STe m p l a t e

12 317
G 7 11
H263QCIF QoSWSAGetQOSByName


l p Q O S N a m e
lpQOS

NULL

G711

QoS FALSEWSAEINVAL
T R U E Q o s t e m p l a t e . c Q o S

Q o S
W S C I n s t a l l Q O S Te m p l a t eW S C R e m o v e Q O S Te m p l a t e
QoS

WSCInstallQOS
Template GUIDQoSGUID
Uuidgen.exe WSCRemoveQOSTemplate
G U I D
318 Winsock API

TRUE

12.5

QoS TCP
U D P
U D P
W S A E v e n t S e l e c tW S A A s y n c S e l e c t T C P
U D P

PrintQosFindProtocolInfo
P r i n t q o s . cP r o v i d e r. c Q o S
QoS

12.5.1 TCP

TCP QoS
12 Qostcp.c
WSASelect 8
F D _ Q O S
S e r v e rC l i e n t

QoS
Q o SQ o S 1 2 - 8
Q o s t c p . c Q o S
S I O _ S E T _ Q O S QOS FLOWSPEC
S I O _ S E T _ Q O S

RSVP
Q o S Q o S W S A C o n n e c t
R S V P
Q o S Q o S W S A C o n n e c t
Q o S S E RV I C E _ N O _ Q O S _ S I G N A L I N G F L O W S P E C
S e r v i c e Ty p e O R S I O _ S E T _ Q O S W S A I o c t l
QoS RSVP
Q o S F D _ Q O S
F D _ Q O SQ o S F D _ Q O S F D _ Q O S
W S AWa i t F o r M u l t i p l e E v e n t s
W S A E n u m N e t w o r k E v e n t s

Q o s t c p . c F D _ R E A D F D _ W R I T E

12 319
FD_CLOSE 8 WSAEventSelect
F D _ W R I T E RSVP PAT H

AbleToSend SIO_CHK_QOS QoS

WSA_QOS_RECEIVERS
R E S V F D _ Q O S
SIO_CHK_QOS WSA_QOS_RECEIVERS
W S A N E T W O R K E V E N T S i E r r o r C o d e
F D _ Q O S _ B I T
W S A I o c t l R S V P _ S TAT U S _ I N F O S I O _ G E T _ Q O SI / O
S t a t u s C o d e W S A _ Q O S _
RECEIVERS WSANETWORKEVENTS
RSVP_STATUS_INFO
Q o S

s c 0
n C o n n s

QoS
QoS QoS
A c c e p t E x F D _ A C C E P T

W S AWa i t F o r M u l t i p l e E v e n t s
0
W S A E n u m N e t w o r k E v e n t s

HandleClientEvents
FD_ACCEPT
W S A A c c e p t Q o S
Windows 98 Q o S N U L L Q o S
Windows 2000 Q o S Q o S

320 Winsock API



H a n d l e C l i e n t E v e n t s

F D _ Q O S W S A _ Q O S _
R E C E I V E R S F D _ Q O S
FD_QOSQoS
12-1 TCPQostcp.c

12321
322Winsock API


12323
324Winsock API


12325
326Winsock API


12327
328Winsock API


12329
330Winsock API


12331
332Winsock API


12333
334Winsock API


12335
336 Winsock API

12-8 Qostcp.c


-q:[b,d,a,e] bda FD_QOSeQoS
-s
-c: IP IP
-w RESV
-r

12.5.2 UDP

UDPTCPUDPQosudp.c
Q o S
RSVP
QOS_DESTADDR W S A C o n n e c t

12 337
S I O _ S E T _ Q O S U D P
Q o S Q o S
W S A C o n n e c t Q o S Q o S
W S A C o n n e c t Q o S S I O _ S E T _ Q O S
QOS_DESTADDR FD_QOS
Q o S Q O S _ D E S TA D D R
S I O _ S E T _ Q O S S E RV I C E _ Q O S _ N O _ S I G N A L I N G S e r v i c e Ty p e
FLOWSPEC
QoS
QoSFD_QOS
U D P
Q o S
-r:IP
I P R S V P _ R E S E RV E _ I N F O
S e t Q o s R e c e i v e r s RSVP_FILTERSPEC
I P

IP
WSAConnect IP
U D P
W S A C o n n e c t W S A C o n n e c t I P
QoS
U D P T C P
QoSUDP IP
R S V PQ o S T C P

U D P W S A C o n n e c t
S I O _ S E T _ Q O S Q o S
I N A D D R _ A N Y 0 I P
WSAConnect
Q o S

12.5.3 UDP

Q o S Q o s m c a s t . c
W S A J o i n L e a f
Q o S
U D P
Q o S Q o S Q o S
338 Winsock API

W S A J o i n L e a f S I O _ S E T _ Q O S W S A I o c t l
QoS

U D P

- r :I P- f
se ff
- m
- s
-w WSA_QOS_RECEIVERS
- q QoS QoS
5 1 5 0
0
I P
U D P
QoS WSAJoinLeaf
IP_ADD_MEMBERSHIP
I P _ D R O P _ M E M B E R S H I P W S A J o i n L e a f
QoS
QoS
U D P R S V P
PATHRESV

12.6 ATMQoS

Q o SAT M Windows 2000Wi n d o w s


9 8 S P 1 Wi n s o c k AT M 6
Q o SAT M AT M I P
Q o S
Admission Control Service R S V P AT M

Winsock APIATM QoS


I PQ o S Q o S
I PQ o S R S V P
ATM
AT M
Q o S
Q o S
Q o S W S A C o n n e c tQ o S
F L O W S P E C I P Q o S

12 339
Q o S
W S A I o c t lS I O _ S E T _ Q O S Q o S
Q o S
QoS
Q o S
W S A I o c t lS I O _ S E T _ Q O S Q o S Q o S

R S V PAT M
12.6 QoS

12.7

QoS
Q o S
RSVP


13
Raw Socket
I P Tr a c e r o u t eP i n g
I P I P
AT M
S O C K _ R AW Wi n s o c k
2 Microsoft Windows CE Windows 95
Winsock 2

I n t e r n e t I C M PI n t e r n e t
I G M P U D PI C M PP i n g

I P
I G M P Wi n 3 2 I G M P
2 IGMP
U D P I P _ H D R I N C L
I G M P

13.1

socketWSASocket
Wi n s o c kI P S O C K _ R AW

W S A P R O TO C O L _ I N F O 5
W S A E n u m P r o t o c o l s W S A P R O TO C O L _ I N F O
S O C K _ R AW I C M P
IP



13 341
Windows NTA d m i n i s t r a t o r s
S O C K _ R AW Windows 95Windows 98

Windows NT
1DWORD


I C M P I G M PU D PI P
IPIPPROTO_IGMPIPPROTO_UDPIPPROTO_IPIPPROTO_RAW
Windows NT 4 Windows 98Windows 95
Winsock 2 I G M P I C M P
I P P R O TO _ U D PI P P R O TO _ I PI P P R O TO _ R AW I P _ H D R I N C L
Windows 2000 I P _ H D R I N C L
I P I P P R O TO _ R AW T C P I P P R O TO _ T C P U D P
IPPROTO_UDP

I P
IP_HDRINCL

13.2 Internet

I n t e r n e t I C M P
I C M P I C M P
ICMP IP IP 13-1
ICMP ICMP IP

8ICMP 8ICMP 16ICMP

ICMP()

13-1 ICMP

I C M P
1 6 I C M P
I C M P I C M P 1 3 - 1

I C M P I C M PI P
I P 8 I C M P
P i n g
I C M P I C M P
T C PU D P I C M P
342 Winsock API

I C M P P i n g P i n g

13-1 ICMP


0 0 Echo Reply
3 0
1
2
3
4
5
6
7
8
9
10
11 TOS
12 TOS
13
14
15
4 0
5 0
1
2 TOS
3 TOS
8 0 Echo Request
9 0
10 0
11 0 TTL0
1 TTL0
12 0 IP
1
13 0
14 0
15 0
16 0
17 0
18 0

13.2.1 Ping

P i n g
I C M PEcho Request

P i n g

13343
Ping
1) SOCK_RAW IPPROTO_ICMP
2) ICMP
3) sendtoWSASendtoICMP
4) recvfromWSARecvfromICMP
I C M P
I C M P

1 3 - 1
P i n g . c I C M P
IP_OPTIONS
13-1 Ping.c
344Winsock API


13345
346Winsock API


13347
348Winsock API


13349
350Winsock API


13 351

Ping IP_OPTIONS
I P I C M P I P
I P I P
I P 4
4 I P v 4 4
I P v 6 Wi n d o w s
I P
9 IP

13.2.2 Traceroute

IP TracerouteWindows
Tracert.exe
I P P i n g
I P I P P i n g 9
I P
I n t e r n e t
9Traceroute
Traceroute UDP IP
TTL TTL1 TTL
0 I C M P
T T L 1 U D P I C M P
I C M P I P
T T L
I C M P

Tr a c e r o u t e
352 Winsock API

Tr a c e r o u t e P i n g
Traceroute
Tr a c e r o u t e U D P
TTLTTL ICMP
U D P I C M P
U D P U D P 7
I C M P S O C K _ R AW
I P P R O TO _ I C M PU D P T T LI P _ T T L
U D P I P _ H D R I N C LI PT T L

I C M P T T L
T T L I C M P P i n g
I C M P
I C M P Tr a c e r o u t e
Ping

13.3 Internet

Internet IGMPIP
11 Winsock
I G M P
2 2 4 . 0 . 0 . 2 I G M P

IGMP 1IGMPv12IGMPv2
RFC 111 2RFC 2236 1

1 3 - 2 1 1 3 - 3 2 8

4IGMP 4IGMP 8 16IGMP

32(DIP)

13-2 IGMPv1

13353
8IGMP 8 16IGMP

32(DIP)

13-3 IGMPv2

1 4 I G M P
I G M P 2 8 1

0.1 0
I G M P v 1 1 1 3 - 2
0 x 1
0 2 2 4 . 0 . 0 . 1
I G M P
0 x 2

1 3 - 3I G M P22 0 x 1 6
0x17 1
2IGMP
0 x 11 0 0 0 1 0 0 0 1
1 1

13-2 IGMP1


0x1
0x2

13-3 IGMP2


0x11
0x12 1
0x16 2
0x17

2 0 x 11 1
1

354 Winsock API



13.4 IP_HDRINCL


I G M PI C M P I P P R O TO _ U D P U D P
TCP IP TCPUDP
I P I P _ H D R I N C L
IP
I P
I P P R O TO _ R AW I P

U D P U D P
IP
I P _ H D R I N C L I P
I P 9
9 - 3 I P _ H D R I N C L I P U D P
8 1 3 - 4
1 6 U D P U D P
U D P

16 16

16UDP 16UDP

13-4 UDP

U D P
I P
U D P U D P I P
I P I P U D P

32IPIP
32IPIP
8
8
16UDP
U D P I PI C M P
1 61 0
1 3 - 5
3 2 U D P U D P
1 6 0


13 355
32IP

32IP
0 8 16UDP

16 16

16UDP 16UDP

()

13-5 UDP

13-2 IP
I P U D P
IP_HDRINCL

I P P R O TO _ U D P
Windows 2000 I P _ H D R I N C L I p h d r i n c . c
IP_HDRINCL IPUDP
13-2 UDP
356Winsock API


13357
358Winsock API


13359
360Winsock API


13 361

I P _ H D R I N C L I P
I P I P _ H D R 4
1 I P
4i p _ p r o t o c o l 0 x 11 U D P i p _ s r c a d d r I P
ip_destaddr IP
IP
U D P
U D P 0
U D P
U D P
b u f
362 Winsock API


memcpyIPUDP
s e n d t o I P _ H D R I N C L s e n d t ot o
IP
Iphdrinc.c 7 UDP
Receiver.c UDP

I P - i
I P Windows 2000
Iphdrinc.c

-ti IP IP

r e c v f r o m R e c e i v e r. c
S O C K A D D R _ I N r e c v f r o m
I P M i c r o s o f t 1 3 - 4
Iphdrinc IP/

13-4 Iphdrinc.c


-fi:xxx.xxx.xxx.xxx IPIP
-fp: IP
-ti:xxx.xxx.xxx.xxx IP IP
-tp: IP
-n: UDP
-m:

13.5


Winsock ICMPIGMP

IP_HDRINCL IP IP

14 Winsock 2
Winsock 2 Service Provider Interface, SPI Wi n s o c k
Winsock 2APIWi n s o c k A P I S P I 6 1 3
W i n s o c k 2 A P I Winsock 2 Wi n d o w s
Windows Open System ArchitectureWOSAWOSAWinsockWinsock
A P IWi n s o c kWi n s o c k T C P / I P
S P I1 4 - 1W s 2 _ 3 2 . d l lWinsock 2 D L LWi n s o c k
Winsock Winsock 2 SPI
Winsock 2

Winsock 2 Winsock 2

The Winsock 2 DLL


Ws2_32.dll(32-bit)

Winsock 2 Winsock 2

14-1 Winsock 2WOSA

14.1 SPI

Winsock 2 SPI
Transport providers T C P / I P
Name space providers

Wi n 3 2 D L L Winsock 2W s 2 _ 3 2 . d l l
Winsock2 API

364 Winsock API



14.1.1 SPI

Winsock 2 SPI
WSPWinsock
NSP
WPUWinsock Ws2_32.dll
WSCWinsockWinsock 2
WSAInstallProvider SPI

14.1.2 Winsock 2 APISPI

Winsock 2 W s 2 _ 3 2 . d l l Wi n s o c k
S P I s e l e c tW S P S e l e c t
WSAConnectWSPConnectWSAAcceptWSPAccept Winsock
SPI
htonlhtonsntohlntohs Ws2_32.dll
WSA
inet_addrinet_ntoaIP Ws2_32.dll
Winsock 1.1IPgetXbyYWSAAsynGetXByY
WSACancelAsyncRequestgethostnameWs2_32.dll
Wi n s o c k W s 2 _ 3 2 . d l l
W S A E n u m P r o t o c o l sW S A I s B l o c k i n gW S A S e t B l o c k i n g H o o kW S A U n h o o k B l o c k i n g
SPI
Wi n s o c k W s 2 _ 3 2 . d l l S P I W S A G e t L a s t E r o r
WSASetLastError
WSACreateEventWSACloseEventWSASetEvent
WSAResetEventWSAWaitForMultipleEvents Win32
SPI
Winsock API Winsock 2
Ws2spi.hSPI

14.2

Winsock 2
T C P / I P
L a y e r e d

T C P / I P 1 4 - 2
Ws2_32.dll

S P I
WSPSend SPI

14Winsock 2 365
W S P S e n d W S P S e n d

S P I
Winsock I/O I / O 8
LSP
I P S D K
l a y e r e dM S D NS D K
M S D N S D K f t p : / / f t p . m i c r o s o f t . c o m / b u s s y s / Wi n S o c k /
winsock2/layered.zip
SPISPI
Winsock 2Ws2_32.dll
SPI Winsock Winsock
Ws2_32.dllWinsock 2 API


API

Ws2_32.dll

SPI

SPI

SPI

14-2

14.2.1 WSPStartup

Winsock 2 Windows DllMain


W S P S t a r t u p
SPI WSPStartup
3 0S P I 3 0 1 4 - 1
WSPStartup 30
W S P S t a r u p W S A S t a r t u p
API WSPStartup WSAStartupWinsock
WinsockWSASocket
366 Winsock API

socketWSASocket
A P I Wi n s o c k
A F _ I N E T S O C K _ S T R E A M Wi n s o c k
TCP/IP 14.2.7

14-1

API SPI
WSAAcceptaccept WSPAccept WSPAccept
WSAAddressToString WSPAddressToString
WSAAsyncSelect WSPAsyncSelect
bind WSPBind
WSACancelBlockingCall WSPCancelBlockingCall
WSACleanup WSPCleanup
closesocket WSPCloseSocket
WSAConnectconnect WSPConnect WSPConnect
WSADuplicateSocket WSPDuplicateSocket
WSAEnumNetworkEvents WSPEnumNetworkEvents
WSAEventSelect WSPEventSelect
WSAGetOverlappedResult WSPGetOverlappedResult
getpeername WSPGetPeerName
getsockname WSPGetSockName
getsockopt WSPGetSockOpt
WSAGetQOSByName WSPGetQOSByName
WSAIoctl WSPIoctl
WSAJoinLeaf WSPJoinLeaf
listen WSPListen
WSARecvrecv WSPRecv WSPRecv
WSARecvDisconnect WSPRecvDisconnect
WSARecvFromrecvfrom WSPRecvFrom WSPRecvFrom
select WSPSelect
WSASendsend WSPSend WSPSend
WSASendDisconnect WSPSendDisconnect
WSASendTosendto WSPSendto WSPSendTo
setsockopt WSPSetSockOpt
sbutdown WSPSbutdown
WSASocketsocket WSPSocket WSPSocket
WSAStringToAddress WSPStringToAddress

14.2.2

WSAStartup

14Winsock 2 367
wVersionRequested Windows Sockets SPI

W S P D ATA l p W S P D a t a W S P D ATA

wVersion Wi n s o c k wHighVersion
Wi n s o c k w Ve r s i o n
Wi n s o c k 7s z D e s c r i p t i o n U N I C O D E
SPI 256
W S P S t a r t u pl p P r o t o c o l I n f o W S A P R O TO C O L _ I N F O W
5
WinsockWSAPROTOCOL_INFOW Ws2.32_dllWinsock 2

Winsock 2
l p P r o t o c o l I n f o
W s 2 _ 3 2 . d l l

D L L
W S P S t a r t u p l p P r o t o c o l I n f o
W S A P R O TO C O L _ I N F O W P r o t o c o l C h a i n

ProtocolChain WSAPROTOCOLCHAIN

ChainLenWs2_32.dll

T C P / I P 2C h a i n E n t r i e s

1 4 . 2 . 7 W S A P R O TO C O L C H A I N
P r o t o c o l C h a i n

l p P r o t o c o l I n f o W S P S t a r t u p

W S P S t a r t u p W S A P R O TO C O L _ I N F O W
368 Winsock API

l p P r o t o c o l I n f o 1 4 - 1
lpProtocolInfo
14-1 WSPStartup WSAPROTOCOL_INFOW

14Winsock 2 369

W S P S t a r t u pU p c a l l Ta b l eW s 2 _ 3 2 . d l lS P I
Winsock 2I/O
Winsock I/O
W S P S t a r t u p lpProcTable 3 0S P I
3 0 1 4 - 1 S P I
API
l p E r r n o
Wi n s o c k W S P S e n d
WSAENOBUF
SPIWSPSendWSPSendToWSPRecvWSPRecvFromWSPIoctl
l p T h r e a d I d S P I

Winsock 1.1 s e n dr e c v
Winsock 2 Winsock 1.1 S P I
Winsock 2 s e n d W S A S e n d
W S A S e n d W S P S e n d1 4 - 1 S P IA P I

14.2.3

Wi n s o c k W S A S t a r t u pW S A C l e a n u p
W S P S t a r t u pW S P C l e a n u p A P I
W S P S t a r t u p
WSPCleanup WSPStartup

0 0
Ws2_32.dll

14.2.4

S P I W S P S o c k e tWSPAcceptW S P J o i n t L e a f
S P I I F S
370 Winsock API

I F S I F S I F S
IFS IFS
Winsock Winsock Win32 APIReadFileWriteFile

R e a d F i l eWr i t e F i l eWi n s o c k
IFS I/O
1. IFS

I F S Wi n s o c k
ReadFileWriteFile
M S D N
Device Development KitDDK
I F S I F S
IFS ( ) SPI

R e a d F i l eWr i t e F i l e W S P S e n d
WSPRecv IFS
I / O

I/O
IFS
I F S
W P U M o d i f y I F S H a n d l e S P I Wi n 3 2 A P I
ReadFileWriteFile I/O Winsock Ws2_32.dll
IFS WPUModifyIFSHandle

dwCatalogEntryId IDProposedHandleIFS
IFS
INVALID_SOCKET
lpErrno Winsock
2. IFS

IFS IFS WPUCreateSocketHandle
W P U C r e a t e S o c k e t H a n d l e I F S
Winsock ReadFileWriteFile I/O

14Winsock 2 371
Winsock 2 W S P R e c v
WSPSendI/OWPUCreateSocketHandle

d w C a t a l o g E n t r y I d I Dd w C o n t e x t
LSP
Wi n s o c k W P U Q u e r y S o c k e t H a n d l e C o n t e x t
dwContext

s SPI WPUCreateSocketHandle
l p C o n t e x t
W P U C r e a t e S o c k e t H a n d l e l p E r r n o
Wi n s o c k W P U C r e a t e S o c k e t H a n d l e
INVALID_SOCKETWPUQuerySocketHandleContextSOCKET_ERROR

14.2.5 Winsock I/O

8 Wi n s o c k I / O
I / O S P I
W s 2 _ 3 2 . d l l W S P S t a r t u pU p c a l l Ta b l e
I F S I / O
I / O
IFS
1.
Winsock 2 I / O I / O
I / O S P I
W S P R e c v
WSPRecv WSPRecv WSPRecv

I/O Winsock 1.1


Winsock 2 API WSASetBlockingCallWSACancelBlocking API
Winsock 1.1 W S A S e t B l o c k i n g H o o kW S A C a n c e l B l o c k i n g C a l l
W s 2 _ 3 2 . d l l W S P C a n c e l B l o c k i n g H o o k
W S P C a n c e l B l o c k i n g H o o k
WPUQueryBlockingCallback
372 Winsock API

WPUQueryBlockingCallback

WSPStartup dwCatalogEntryId
I Dl p l p f n C a l l b a c k

l p l p f n C a l l b a c k l p d w C o n t e x t
d w C o n t e x t W P U Q u e r y B l o c k i n g C a l l b a c k l p E r r n o
SOCKET_ERROR Winsock
2. select
select I/O W S P S e l e c t r e a d f d sw r i t e f d s
exceptfdsfd_setWSPSelect

fd_set SPIWSPSelect

I F S f d _ s e t S P I

W S P S e l e c t
f d _ s e t
W P U F D I s S e t F D _ I S S E T
8

s s e t

WSPSelect

14Winsock 2 373
I/O
f d _ s e t
S P I W s 2 s p i . h F D _ C L RF D _ S E T
F D _ Z E R O 8
14-2 WSPSelect
14-2 WSPSelect
374 Winsock API

3. WSAAsyncSelect
WSAAsyncSelect I/OWindows
SPIWSPAsyncSelect

s S P I h W n d
sIEvent wMsg
S O C K E T _ E R R O Rl p E r r n o
Wi n s o c k I E v e n t

14Winsock 2 375
8-3
SPI WSPAsyncSelect
W S PA s y n c S e l e c t S P I
WPUPostMessageSPI
WPUPostMessage

hWnd SPI Msg


W S PA s y n c S e l e c tw M s g w P a r a m
lParamlParamlow word
l P a r a m
lParam highword
I F S
W S PA s y n c S e l e c t WSPAsyncSelect
W P U Q u e r y S o c k e t H a n d l e C o n t e x t S P I
WPUPostMessageSPI
WPUPostMessage
l P a r a m l P a r a m
S P I
WSPAsyncSelect
w o r k e r

WSPAsyncSelect WSPAsyncSelect

WPUPostMessageSPI
4. WSAEventSelect
W S A E v e n t S e l e c t
WSPEventSelect SPI

s S P I h E v e n t O b j e c t
WSAEVENT slNetworkEvents
lpErrnoWinsock
376 Winsock API

S O C K E T _ E R R O R l N e t w o r k E v e n t s
WSAAsyncSelect I/O
I F S W S P E v e n t S e l e c t S P I
W P U Q u e r y S o c k e t H a n d l e C o n t e x t S P I

S P I W S P E v e n t S e l e c t S P I
I / O S P I
S P I
S P I
W S A A s y n c S e l e c t

lNetworkEvents
W S P E v e n t S e l e c t
S P I W P U S e t E v e n tS P I

h E v e n t W S P E v e n t S e l e c t
FALSElpErrno Winsock
5. OverlappedI/O
O v e r l a p p e d I / O I / O I / O
I / O S P IWi n s o c k
Win32I/O
WSPSend
WSPSendTo
WSPRecv
WSPRecvFrom
WSPIoctl
W S A O V E R L A P P E D
W S A O V E R L A P P E D _ C O M P L E T I O N _ R O U T I N E
WSATHREADID
I / O S P I
WSAOVERLAPPED

14Winsock 2 377
I / O S P I W S A O V E R L A P P E D I n t e r n a l
I n t e r n a l W S S _ O P E R AT I O N _ I N _
PROGRESSSPI WSPGetOverlappedResult
WSS_OPERATION_IN_PROGRESS
W S P G e t O v e r l a p p e d R e s u l t

I / O O ff s e t H i g hO ff s e tO ff s e t H i g h
Wi n s o c kO ff s e t W S P R e c vWSPRecvFrom I/O

WSAOVERLAPPED I/O SPI


(1) Event
I/OSPI WSAOVERLAPPED
I/O WSAOVERLAPPED_COMPLETION_
R O U T I N EN U L L I / O
I / O W P U C o m p l e t e O v e r l a p p e d
Request

slpOverlappedWSAOVERLAPPED
dwError I/O c b Tr a n s f e r r e d
lpErrno SOCKET_ERROR
Winsock WPUCompleteOverlapped RequestSPI
W S A O V E R L A P P E D I n t e r n a l H i g h c b Tr a n s f e r r e d
InternalWSS_OPERATION_IN_PROGRESS
I / O S P I W S P G e t O v e r l a p p e d R e s u l t

W S P G e t O v e r l a p p e d R e s u l t
I n t e r n a lI n t e r n a l H i g hO ff s e tO ff s e t H i g h
S P I W S A O V E R L A P P E D W S P G e t O v e r l a p p e d R e s u l t
SPIWSAOVERLAPPEDInternal Internal
378 Winsock API

W S S _ O P E R AT I O N _ I N _ P R O G R E S S
W S P G e t O v e r l a p p e d R e s u l tfWaitT R U E
SPI WSAOVERLAPPED fWait
FA L S E Wi n s o c kW S A _ I O _ I N C O M P L E T E
W S P G e t O v e r l a p p e d R e s u l t

l p c s Tr a n s f e rW S A O V E R L A P P E D I n t e r n a l H i g h

l p d w F l a g sW S A O V E R L A P P E D O ff s e t W S P R e c v
WSPRecvFrom
lpErrnoWSAOVERLAPPEDOffsetHigh

14-3 WSPGetOverlappedResult
14-3 WSPGetOverlappedResult

14Winsock 2 379

(2) Completion routine


I / O S P I W S A O V E R L A P P E D
W S A O V E R L A P P E D _ C O M P L E T I O N _ R O U T I N E I / O
I / O Wi n 3 2
A P CI / O I / O A P C
8
S P I W P U Q u e u e A p c

l p T h r e a d I d S P I WSATHREADID
I / O l p f n U s e r A p c W S A U S E R A P C
S P I
S P I W S A O V E R L A P P E D _ C O M P L E T I O N _ R O U T I N E
WSAUSERAPC

d w C o n t e x tS P I
dwContext WPUQueueApcdwContext
S P I W S A O V E R L A P P E D _ C O M P L E T I O N _ R O U T I N Ed w C o n t e x t
8

WPUQueueApcdwContext
Winsock

WSAOVERLAPPED
380 Winsock API

I/O
SPIWSAOVERLAPPED_
COMPLETION_ROUTINE
(3) Completion ports
Winsock 2 I / O W s 2 _ 3 2 . d l l 8
I / O

(4) I/O
SPI I/O
8 I / O
Windows NTWindows 2000
I/OWindows 95Windows 98
I/OI/O

WPUCreateEvent 8WSACreate
Event WPUCreateEvent
N U L Ll p E r r n o Wi n s o c k W S P R e s e t E v e n t
W S A R e s e t E v e n t h E v e n t s i g n a l e d
u n s i g n a l e dW P U C l o s e E v e n tW S A C l o s e E v e n t

L S P I / OS P I
I / O L S P Windows 2000 Windows NT Windows 98
Windows 95 I/O
I / O W S A _ M A X I M U M _
WAIT_EVENTS(64) 8 64

Windows NTWindows 2000


I/O

14.2.6

Wi n s o c kM s w s o c k . l i b Wi n s o c k1 4 - 2

14-2 Winsock

GUID
AcceptEx WSAID_ACCEPTEX
GetAcceptExSockaddrs WSAID_GETACCEPTEXSOCKADDRS
TransmitFile WSAID_TRANSMITFILE
WSARecvEx GUID

14Winsock 2 381
M s w s o c k . l i b A c c e p t E x G e t A c c e p t E x S o c k a d d r s
Tr a n s m i t F i l e S I O _ G E T _ E X T E N T I O N _ F U N C T I O N _ P O I N T E R
WSPIoctlWSPIoctl

d w I o C o n t r o l C o d e S I O _ G E T _ E X T E N S I O N _ F U N C T I O N _
POINTERlpvInBuffer GUID
M s w s o c k . l i b 1 4 - 2 G U I D
GUID lpvOutBuffer
SPI
1 4 - 2 W S A R e c v E x G U I D W S A R e c v E x
WSPIoctl WSARecv WSARecvEx

14.2.7


Winsock 2
Winsock 2
Winsock 2
Wi n s o c k
Winsock 2 W S 2 _ 3 2 . D L L
socketWSASocket API
W s 2 _ 3 2 . d l l
DLLDLL
Winsock 2
SPI WSC
WSCEnumProtocols
WSCInstallProvider
WSCWriteProviderOrder
WSCDeInstallProvider
W S A P R O TO C O L _ I N F O W
5
382 Winsock API

P r o v i d e r I dd w C a t a l o g E n t r y I dP r o t o c o l C h a i nP r o v i d e r I d G U I D
dwCatalogEntryId
W S A P R O TO C O L _ I N F O W P r o t o c o l C h a i n
W S A P R O TO C O L _ I N F O W
ProtocolChain WSAPROTOCOLCHAIN

C h a i n L e n ChainLen = 0
ChainLen = 1 ChainLen >1
protocol chain Wi n s o c k
1 4 - 2
C h a i n E n t r i e s 1 I D
Ws2_32.dll
C h a i n L e n0
Ws2_32.dll
1.
W S A P R O TO C O L _ I N F O W

ProtocolChainChainLen 1
WSCInstallProvider WSCInstallProvider

l p P r o v i d e r I d G U I D W i n s o c k
lpszProviderDllPath DLL
S y s t e m R o o t l p P r o t o c o l I n f o L i s t
W S A P R O TO C O L _ I N F O W W S A P R O TO C O L _
INFOWdwNumberOfEntrieslpProtocolInfoList
WSCInstallProviderSOCKET_ERRORlpErrno

2.
W S A P R O TO C O L _ I N F O W
0
1
W S P R O TO C O L _ I N F O W W S C E n u m P r o t o c o l s
WSPROTOCOL_INFOW

14Winsock 2 383

lpiProtocols lpiProtocolsNULL
lpProtocolBuffer
Winsock 2 W S A P R O TO C O L _ I N F O W
lpdwBufferLength WSCEnumProtocolslpProtocolBuffer
W S C E n u m P r o t o c o l s
SOCKET_ERRORlpErrno

WSAPROTOCOL_INFOW
W S C I n s t a l l P r o v i d e r
WSCEnumProtocols ID

W S C I n s t a l l P r o v i d e r

384 Winsock API


P F L _ H I D D E N W S A P R O TO C O L _ I N F O W
W S A E n u m P r o t o c o l s 5

X P 1 _ I F S _ H A N D L E S I F S
WPUCreateSocketHandle
W S A P R O TO C O L _ I N F O W X P 1 _ I F S _ H A N D L E S
X P 1 _ I F S _ H A N D L E S Wi n s o c k
ReadFileWriteFile
3.
Winsock 2
Wi n s o c k s o c k e tW S A S o c k e t
A F _ I N E T
S O C K _ S T E R E A M Winsock 2
T C P / I P W S C I n s t a l l P r o v i d e r
T C P / I P
T C P / I P
WSCWriteProviderOrder

lpwdCatalogEntryIdIDID
WSCEnumProtocolsIDdwNumberOfEntries
W S C Wr i t e P r o v i d e r O r d e r
ERROR_SUCCESS(0) Winsock
W S C Wr i t e P r o v i d e r O r d e r W s 2 _ 3 2 . d l l
S p o r d e r. l i b S p o r d e r. l i b Wi n d o w s D L L
M S D N
M S D N S p o r d e r. e x e
Winsock 2 14-3 Windows 2000
Winsock 2 Sporder.exe

14Winsock 2 385

14-3 Sporder.exe

4.
Winsock 2 WSCDeinstallProvider

l p P r o v i d e r I d G U I D S O C K E T _ E R R O R
lpErrno Winsock
I D
ID

Winsock 2


URL






Winsock 2
386 Winsock API



W S P S t a r t u p L S P
W S A P R O TO C O L _ I N F O W P r o t o c o l C h a i n . C h a i n L e n 1

14.3

1 0

Winsock 2

9 D L L N S P
1 0 R N R W S A S e t S e r v i c e
N S P S e t S e r v i c eD L L G U I D

14.3.1

D L L
WSCInstallNameSpace
W S A E n a b l e N S P r o v i d e rW S A U n I n s t a l l N a m e S p a c e

1. WSCInstallNameSpace


lpszIdentifier
WSAEnumNameSpaceProviders 10lpszPathName
D L L S y s t e m R o o t d w N a m e S p a c e
Nspapi.h
IPX SAPN S _ S A PdwVersion l p P r o v i d e r I d
GUID

14Winsock 2 387
W S C I n s t a l l N a m e S p a c e 0 S O C K E T _ E R R O R
W S A E I N VA L G U I D
WSAEACCESS
2. WSCEnableNSProvider

lpProviderIdGUID fEnable

WSCEnableNSProvider0SOCKET_ERROR
GUID WSAEINVAL
3. WSCUnInstallNameSpace

l p P r o v i d e r I d G U I D G U I D
WSAEINVAL

14.3.2

9 1 0R N R
D L L
D L L D L L
D L L
1 0


R N R
W S A Q U E RY S E TWSASERVICECLASSINFO
R N R A S C I I
Unicode ASCII

W S A Q U E RY S E T W S A L o o k u p S e r v i c e N e x t
Unicode ASCII
R N R

9 7 Winsock 2 RNR
1 4 - 3
388 Winsock API

G U I D
1 0 Wi n s o c k 2 R N R
W S A I n s t a l l S e r v i c e C l a s s
G U I D N S P I n s t a l l S e r v i c e C l a s s

14-3 Winsock 2

Winsock
WSAInstallServiceClass NSPInstallServiceClass
WSARemoveServiceClass NSPRemoveServiceClass
WSAGetServiceClassInfo NSPGetServiceClassInfo
WSASetService NSPSetService
WSALookupServiceBegin NSPLookupServiceBegin
WSALookupServiceNext NSPLookupServiceNext
WSALookupServiceEnd NSPLookupServiceEnd

1. NSPStartup
DLL NSPStartup
D L L D L L

lpProviderId GUIDlpnspRoutines
N S P _ R O U T I N E 8
8 NSP_ROUTINE

c b S i z e N S P _ R O U T I N E
dwMajorVersiondwMinorVersion
N S P S e t S e r v i c e
N S P S e t S e r v i c e


14Winsock 2 389
NSPStartup NSP_ROUTINE
N O _ E R R O R S O C K E T _ E R R O R
Wi n s o c k WSA_NOT_
ENOUGH_MEMORY WSASetLastErrorSOCKET_ERROR
D L L
N O _ E R R O R S O C K E T _ E R R O R
Winsock
R N R W S A G e t L a s t E r r o r0
0

2. NSPCleanup
DLL NSPStartup

G U I D

3. NSPInstallServiceClass
N S P I n s t a l l S e r v i c e C l a s s W S A I n s t a l l S e r v i c e C l a s s
NSPInstallServiceClass

G U I D l p S e r v i c e C l a s s I n f o W S A S E RV I C E -
C L A S S I N F O W W S A S E RV I C E -
CLASSINFOW GUID GUID
W S A E A L R E A D Y R N R


4. NSPRemoveServiceClass
N S P I n s t a l l S e r v i c e C l a s s
WSARemoveServiceClass

G U I D l p S e r v i c e C l a s s I d
G U I D l p S e r v i c e
ClassId WSATYPE_NOT_FOUND
5. NSPGetServiceClassInfo
NSPGetServiceClassInfo WSAGetServiceClassInfo GUID
390 Winsock API

WSANAMESPACE_INFOW

G U I Dl p d w B u f S i z e
lpService ClassInfo W S A S E RV I C E -
C L A S S I N F O W
G U I D
lpServiceClassInfo WSASERVICECLASSINFOW lpdwBufSize


WSATYPE_FOUND
lpdwBufSize WSAEFAULT
6. NSPSetService
N S P S e t S e r v i c e W S A S e t S e r v i c e

GUIDlpServiceClassInfo WSASERVICE-
C L A S S I N F O W l p q s R e g I n f o e s s O p e r a t i o n
dwControlFlags SERVICE_MULTIPLE


e s s O p e r a t i o n d w C o n t r o l F l a g s
1 01 0 . 3 W S A S e t S e r v i c e
NSPSetService
W S A S E RV I C E _
N O T _ F O U N D W S A Q U E RY S E T W
WSAEINVAL
NSPLookupServiceNext
N S P S e t S e r v i c e

7. NSPLookupServiceBegin
N S P L o o k u p S e r v i c e B e g i nN S P L o o k u p S e r v i c e N e x tN S P L o o k u p S e r v i c e E n d
W S A L o o k u p S e r v i c e B e g i n

14Winsock 2 391

G U I Dl p q s R e s t r i c t i o n s
WSAQUERYSETW lpServiceClassInfoWSASERVICE-
C L A S S I N F O W
d w C o n t r o l F l a g s
W S A L o o k u p S e r v i c e B e g i n 1 0

l p h L o o k u p
WSALookupServiceNextWSALookupServiceEnd
N S P L o o k u p S e r v i c e B e g i n

8. NSPLookupServiceNext
NSPLookupServiceBegin NSPLookupServiceNext
NSPLookupServiceNext

h L o o k u pW S A L o o k u p S e r v i c e B e g i n d w C o n t r o l F l a g s
L U P _ F L U S H P R E V I O U S

lpdwBufferLength lpqsResults
NSPLookupServiceNext hLookup

W S A L o o k u p S e r v i c e N e x t
NSPLookup WSALookupServiceNext
W S A L o o k u p S e r v i c e E n d
392 Winsock API

WSALookupServiceNext WSA_E_CANCELLED
9. NSPLookupServiceEnd
N S P L o o k u p S e r v i c e E n d

hLookup
W S A _ I N VA L I D _ H A N D L E

14.3.3

E x a m p l e s \ C h a r p t e r 1 4 \ N S P M y n s p . h
M y n s p . c p pM y n s p . d e f D L L D L L
Winsock DLL
M y n s p . c p p N s p s v c . c p pP r i n t o b j . c p pD L L
D L L

N s p s v c . hP r i n t o b j . h R n r c s . c

10

D L L

1.
Wi n s o c k D L L

l o o p b a c k1 2 7 . 0 . 0 . 1
I P

DNSDNSIP DHCP

T C P
U D P

2. DLL

14Winsock 2 393
DLL
GUIDGUIDMnsp.h
WSAQUERYSETdwNameSpace
10 GUID

Wi n s o c k
W S A E n u m N a m e S p a c e P r o v i d e r s
1 0 N S _ A L L
Wi n d o w s
MicrosoftInternet Explorer

G U I D

M y n s p . c p p N S P
N S P S t a r t u pN S P C l e a n u p
NSP_ROUTINE

1) NyNspConnect
2) 1
3) N S P L o o k u p S e r v i c e N e x t
N S P S e t S e r v i c e
WSAQUERYSET
4)
M y n s p . h M Y N S P _ S U C C E S S
MYNSP_ERROR
5)
NSPLookupService WSAQUERYSET
D L L N S P

W S A Q U E RY S E TW S A S E RV I C E C L A S S I D

1 4 - 4

marshaling data
394 Winsock API

W S A N A M E S PA C E I N F O
W S A Q U E RY S E T N s p s v c . c p p D L L

GUID DWORD BOOL DWORD LPSTR

f o o b a r \0

WSASERVICECLASSINFO

GUID DWORD BOOL DWORD LPSTR f o o b a r \0

14-4

3.
N s p i n s t a l l . c

D L L G U I D
D L L
GUID

4.

D L L
m a i n
D L L


14Winsock 2 395

DLL
DLL

WSASERVICECLASSINFO
WSAQUERYSET RNR

D L L m a i n L o o k u p S e r v i c e C l a s s
M y n s p s v c . c p p S e r v i c e C l a s s e s
WSASERVICECLASSINFO G U I D
D L L W S A E A L R E A D Y
dwNumServiceClasses
m a i n L o o k u p S e r v i c e C l a s s

Winsock 2

W S A S E RV I C E C L A S S I N F O W S A Q U E RY
S e r v i c e s d w N u m S e r v i c e


WSALookup
ServiceNext
WSALookupServiceNextServices
WSALookupServiceNext

5.
R n r c s . c 1 0

NS_MYNSP
R n r c s . c I P
S O C K A D D R
10
6.

Nspinstall.exe install
396 Winsock API

M y n s p . d l l S y s t e m R o o t\ S y s t e m 3 2

Mynspsvc.exe
R n r c s . e x e 1 4 - 4

14-4


Rnrcs.exe -s:ASERVICE ASERVICE
Rnrcs.exe -s:BSERVICE BSERVICE
Rnrcs.exe -c:*
Rnrcs.exe -c:BSERVICE BSERVICE
Rnrcs.exe -c:ASERVICE -d ASERVICE
Rnrcs.exe -c:BSERVICE -d BSERVICE
Rnrcs.exe -c:*

14.4 Winsock SPI

Winsock 2W s 2 _ 3 2 . d l lA P IS P I
MSDNSDK Dt_dllDt_dll2
S P I
APISPI
Winsock 2W s 2 _ 3 2 . d l l
b u i l d M s s d k \ B i n \ D e b u g \ Wi n s o c kM S D NS D K
S y s t e m R o o tS y s t e m 3 2 W S 2 _ 3 2 . D L L
Winsock
MSDN Dt_dll
DLLDt_dll.dll Dt_dll.dllWinsock
Winsock
2 API SPI

14.5

Winsock 2 SPI Winsock 2

Wi n s o c k Microsoft Vi s u a l
Basic Wi n s o c k Wi n s o c k Wi n s o c k
VisualBasicWinsock Visual Basic
RAS Winsock

15 Visual Basic Winsock


Visual Basic Winsock Winsock
Visual Basic Visual Basic
Winsock DLL

Wi n s o c kVisual Basic
Visual BasicVisual Basic Winsock.bas
Visual Basic Wi n s o c k

WinsockVisual Basic 5.0 Visual StudioService Pack 2


S P 2 Service Pack 3S P 3
S P 2 Visual Basic 6.0 Wi n s o c k

WinsockWinsock API Winsock


Wi n s o c k I P
Winsock 1.1 T C PU D P

Winsock

15.1


1 5 - 1

7 7
Wi n s o c k Winsock API
P r o t o c o l
S O C K _ S T R E A M
S O C K _ D G R A M

S o c k e t H a n d l e
D L L
Winsock APIState
398 Winsock API

15-2
15-1 Winsock


BytesReceived Long
GetData
LocalHostName String
LocalIP String IP
LocalPort Long 0

0
Protocol Long T C PU D P
s c k T C P P r o t o c o l T C P
sckUDPProtocolUDP 01
RemoeHost String

RemoteHostIP String IP TCP
U D P
D a t a A r r i v a l
IP
RemotePort Long
SocketHandle Long
State Integer 1 5 - 2

15-2


sckClosed 0
sckOpen 1
sckListening 2
sckConnectionPending 3
sckResolvingHost 4
sckHostResolved 5
sckConnecting 6
sckConnected 7
sckClosing 8
sckError 9

15.2

Wi n s o c k Wi n s o c k
GetDataSendDataGetData
DataArrival GetDataSendData
P e e k D a t a Wi n s o c k
r e c v M S G _ P E E K

15Visual Basic Winsock 399
15-3

15-3 Winsock


Accept RequestID Void TCP ConnectionRequest

Bind LocalPort, LocalIP Void IP
B i n dB i n d L i s t e n

Close Void
Connect RemoteHost Void R e m o t e P o r t
RemotePort RemoteHost TCP
GetData DataType Void Ty p eM a x L e n
MaxLen Ty p e M a x L e n

GetDataMaxLen
Listen Void L i s t e n
TCP
PeekData DataType Void G e t D a t a
MaxLen
SendData Data Void UNICODE
A N S I

15.3

Vi s u a l
B a s i c Wi n s o c k
T C P
TCPHalf-close
F I N A C K F I N
C l o s e Wi n s o c k
Close
15-4 Winsock
15-4 Winsock


Close
Connect Connect
ConnectionRequest RequestID
DataArrival bytesTotal
Error NumberDescriptionScode Winsock
SourceHelpFileHelpContext
CancelDisplay
SendComplete
SendProgress bytesSentbytesRemaining
400 Winsock API

15.4 UDP

U D P C h a p t e r 1 5
S o c k U D P. v b pVisual Basic
1 5 - 1 U D P
1 5 - 1
Winsock

15-1 UDP

Wi n s o c k

Wi n s o c k
I P R e m o t e H o s t
I P
U D P
txtSendLocalPort
0
t x t S e n d D a t a

Winsock

Close Socket

15-1 UDP

15Visual Basic Winsock401
402Winsock API


15Visual Basic Winsock 403

15.4.1 UDP


F o r m _ L o a d _ s o c k s e n d Wi n s o c k P r o t o c o l
UDPsckUDPProtocol cmdCloseSend

C l o s e Wi n s o c k

c m d S e n d D g r a m _ C l i c k
U D P
U D P
UDP Winsock sckClosedsckOpen
40020
Invalid operation at current state
Winsock
S e n d D a t a
SendData
UDP cmdCloseSend

s o c k S e n d _ E r r o r Wi n s o c k Wi n s o c k
U D P

404 Winsock API



15.4.2 UDP

WinsockUDP UDP
F o r m _ L o a d U D P Wi n s o c k
P r o t o c o l U D P Close Listen

Winsock connect
UDP c m d L i s t e n _ C l i c k L i s t e n
U D P Wi n s o c k B i n d
U D P U D P
Wi n s o c k c m d L i s t e n

s o c k R e c v U D P U D P
D a t a A r r i v a l s o c k R e c v _ D a t a A r r i v a l
b y t e s To t a l
G e t G e t D a t a
Visual Basicv b S t r i n g
bytesTotal bytesTotal

I P U D P
R e m o t e H o s t I PR e m o t e P o r t I P
UDP
U D P c m d C l o s e L i s t e n _ C l i c ks o c k R e c v _ E r r o r
cmdCloseListen_Click Winsock
C l o s e U D P Wi n s o c k
s o c k R e c v _ E r r o r U D P
UDP

15.4.3 Winsock

UDP Winsock Information group boxWinsock


I P Wi n s o c k
L o c a l H o s t N a m eL o c a l I P I P

Wi n s o c k
5 0 0
I P U D P


15Visual Basic Winsock 405
15.4.4 UDP

U D P

L i s t e n
Recipients Name/IP IP
I P S e n d
D a t a g r a m
Winsock InformationWi n s o c k
IPSender

I P
1 5 7 . 5 4 . 1 8 5 . 1 8 61 5 7 . 5 4 . 1 8 5 . 2 2 4I P
1 6 9 . 2 5 4 . 2 6 . 11 3 1 5 7 . 5 4 . 1 8 5 . 2 0 6
1 5 7 . 5 4 . 1 8 5 . 2 5 5 U D P
B i n d I P

I P B i n d
IP WinsockLocalIP IP
IP

Listen
I P
157.54.185.255Send Data

2 5 5 . 2 5 5 . 2 5 5 . 2 5 5
Send Datagram
U D P

15.4.5 UDP


Winsock
1 5 - 2
U D P
406 Winsock API

sckClosed

SendData

GetData
PeekData
sckOpen

SendData

GetData
PeekData sckError

sck-
Resolved
(IP)


SendData
sck-
GetData sckClosed Resolving-
PeekData Host

15-2 UDP

15.5 TCP

Wi n s o c k T C P U D P
U D P
TCP TCP
1 5 - 3 1 5 - 2
15 Visual Basic
SockTCP.vbp
1 5 - 3
TCP ServerTCPTCP ClientTCPWinsock Information
Wi n s o c k T C P
txtServerPort

Wi n s o c k s o c k S e r v e r
I n d e x0 Wi n s o c k
0 0
Winsock
Wi n s o c k Wi n s o c k
7

Winsock

xWi n s o c k


15Visual Basic Winsock407
x
x
Winsock
Winsock

15-3 TCP

15-2 TCP
408Winsock API


15Visual Basic Winsock409
410Winsock API


15Visual Basic Winsock411
412 Winsock API

15.5.1 TCP

1 5 - 2
Form_Load IP
WinsockUDP
sockServer TCPWinsock 0
Close Listen
ListViewlstStates
Winsock
12 Winsock
Local Server
U D P

L i s t e n
L i s t e n c m d L i s t e n L o c a l P o r t
t x t S e r v e r P o r t
L o c a l P o r t
L i s t e nL i s t e n s o c k S e r v e r
sockServerConnectionRequest
Close Listen sockServerClose Listen
sockServer(0)Close
T C P C o n n e c t i o n R e q u e s t


15Visual Basic Winsock 413
r e q u e s t I D
A c c e p t r e q u e s t I D
S o c k T C P
Wi n s o c k 0
s c k C l o s e d
S t a t e
f r e e S o c k 0
Winsock ServerIndex

Winsock IDrequestID
Accept lstStatesListView
Winsock
Wi n s o c k
A c c e p t

Wi n s o c k

C l o s e
s o c k S e r v e r _ C l o s e
L i s t Vi e w I P - - - . - - - . - - - . - - - - 1
s o c k S e r v e r _ D a t a A r r i v a l G e t D a t a
l s t M e s s a g e s E r r o r

15.5.2 TCP

F o r m _ L o a d
s o c k C l i e n t T C P

C o n n e c t c m d C o n n e c t _ C l i c kL o c a l P o r t0
R e m o t e H o s tR e m o t e P o r t t x t S e r v e r N a m e
txtPort TCP
C o n n e c t
s c k R e s o l v i n g H o s ts c k R e s o l v e ds c k C o n n e c t i n g
s c k C o n n e c t e d C o n n e c t

s o c k C l i e n t _ C o n n e c t S e n d D a t a
D i s c o n n e c t
lstStates ListView
414 Winsock API

sockClient_ClosesockClient_ErrorsockClient_Close
WinsocksockClient_Error

Send Data D i s c o n n e c t
cmdSendData_ClickSend Data
Wi n s o c k t x t S e n d D a t a S e n d D a t a
Disconnect cmdDisconnect_Click
lstStates ListVi e w Local Client

15.5.3 Winsock

T C P Wi n s o c k
UDP Winsock
5 0 0 lstStates ListVi e w
Local Client Wi n s o c k
s o c k C l i e n t L o c a l S e r v e r
Wi n s o c ks c k S t a t e s
I P I P - - - . - - - . - - - . - - -
- 1
IP

15.5.4 TCP

TCP TCP
T C P
T C P L i s t e n State Information
L i s t Vi e w Local Server s c k C l o s e d
sckListening 5150
Server Name
C o n n e c t S t a t e
I n f o r m a t i o n Local Client s c k C o n n e c t e d

IPsckConnected

M e s s a g e Send Data
M e s s a g e D i s c o n n e c t
State Information Local Client
s c k C l o s e d- 1
I P s c k C l o s e d
- 1

15Visual Basic Winsock 415
Server Name
Winsock
Winsock

Socket Information
I P I P

15.5.5 TCP

TCPWindowsUDPTCP
1 5 - 4 T C P s c k C l o s e d
s c k C l o s i n g T C P S e n d D a t a
T C P C l o s e
C l o s e s c k C l o s i n g
S e n d D a t a s c k C l o s i n g C l o s e
S e n d D a t a s c k E r r o r C l o s e

SendData
GetData
PeekData
sckClosed sckListening sckClosing
sck-

GetData Connection-
SendData Pending
PeekData GetData

() SendData
PeekData
SendData
sck-
Resolving- sckError
Host




SendData
SendData GetData
GetData PeekData
sck- sck- PeekData sck-
(IP)
Resolved Connecting Connected

15-4 TCP

15.6

Wi n s o c k
416 Winsock API

Visual Basic 5.0
SP 2


S e n d D a t a C l o s eC l o s e S e n d D a t a
S e n d C o m p l e t e S e n d D a t a

Close Close

1 0 0 0 S e n d C o m p l e t e

Visual Basic 6.0Wi n s o c k


S e n d D a t a C l o s e

15.7

614 Winsock
Winsock

1.

B i n d C o n n e c t
T C P

TIME_WAIT

L o c a l P o r t
0 LocalPort
L o c a l P o r t
0
2.

15Visual Basic Winsock 417
Invalid operation at current state
Winsock
15-215-4UDPTCP

Wi n s o c k E r r o r Wi n s o c k
Wi n s o c k 7
C Winsock

15.8 Windows CEWinsock

Visual Basic Toolkit for Windows CEV B C E Wi n s o c k


Visual Basic Winsock UDP
Windows CEWi n s o c kI r D A
Windows CEWi n s o c k

7 Windows CE Wi n s o c k Wi n d o w s
C EWi n s o c k C o n n e c t
C o n n e c t C o n n e c t

VBCE 1.0 15-


2
Windows CE Winsock

C o n n e c t i o n R e q u e s t R e q u e s t I D
A c c e p t C o n n e c t i o n R e q u e s t

15.8.1 Windows CE Winsock

Windows CEWi n s o c k
Winsock Windows CE 15-
Windows CE Winsock
15-3 Windows CE Winsock
418Winsock API


15Visual Basic Winsock419
420Winsock API


15Visual Basic Winsock421

1 5 - 3
1 5 - 2 S o c k T C P
Windows CE Winsock

T C P

6IrDA Windows CE Winsock


S e r v i c e N a m e
C e Wi n s o c kWindows CE Wi n s o c k
MyServer

15.8.2

VBCE Wi n s o c k Wi n s o c k
s c k
An error
was encountered while running this program
VBCE
422 Winsock API

15.9

Visual Basic Wi n s o c k Wi n s o c k
Visual Basic 5.0
Visual Basic Visual Basic
Winsock
Winsock DLL
Winsock Visual Basic Ws2_32.dllWinsock
Chapter07\VBSimpleTCPSimpleUDP
Winsock.bas


Microsoft Wi n d o w s A P I

OSI

Remote Access
Service, RAS

16 RAS

Wi n d o w s R A S
R A S
R A S
DUN
D U N R A S
RAS
P P PIP IPX NetBEUI
S L I P I P
N e t B E U IWindows NT 3.1Windows for Workgroups3.11
NetBEUI
R A S R A S
T C P / I PI P X R A S
R A S Windows 95 Windows 98 Windows 2000
Windows NTRAS
R A S
R A S L A N
LAN
R A S
R A S
RAS API R A S R A S Wi n d o w s
2000Windows NT RAS Windows NT
424

RAS Windows NT
R A SR A SWindows NT R A S
Windows NT Wi n d o w s
9 5Windows 98 R A S R A S

R A STelephony Application Programming InterfaceTA P I


TA P I
R A S TA P I R A S
R A S TA P I
R A S
RAS API TAPI
R A S

R A S R A S

16.1

RAS
R a s . hRAS API
Raserror.hRAS API
R a s a p i 3 2 . l i bRAS API
R a s e r r o r. h
R A S R A S
RasGetErrorString RAS
RasGetErrorString

u E r r o r Va l u e R A S R A S
l p s z E r r o r S t r i n g
u E r r o r Va l u e
E R R O R _ U N S U F F I C I E N T _ B U F F E R
256 RAS
cBufSizelpszErrorString

16.2

R A S
W I N V E R Windows CESDK

16RAS 425
WINVER Windows CERAS dwSize
R A S R A S
R A S W I N V E R
Windows 95Windows 98Windows 2000Windows NT
WINVER = 0X400 RAS Windows 95Windows 98
Windows NT 4
WINVER = 0X401 RAS Windows NT
WINVER = 0X500 RAS Windows 2000
R A S
Windows CE

16.3 DUN 1.3Windows 95

OSR OSR 2Windows 95 OSR 2


O E M RAS API
R A S DUN 1.3 R A S Wi n d o w s
9 5DUN 1.3 h t t p : / / w w w. m i c r o s o f t . c o m / s u p p o r t
DUN 1.3 DUNRAS

16.4 RASDIAL

RAS R a s D i a lR a s D i a l
R A S

l p R a s D i a l E x t e n s i o n s R A S D I A L E X T E N S I O N S
RasDial Windows 95Windows 98
Windows CE N U L LR A S D I A L E X T E N S I O N S

426

W I N V E R

d w S i z e R A S D I A L E X T E N S I O N S
d w f O p t i o n s R a s D i a l 1 6 - 1

h w n d P a r e n t N U L L
r e s e r v e d 0
r e s e r v e d 1 Windows 2000 RAS 0
R a s E a p I n f oWindows 2000E A P
EAP
16-1 RasDial


RDEOPT_UsePrefixSuffix RasDial
RDEOPT_PausedStates R a s D i a l

RDEOPT_IgnoreModemSpeaker RasDialRAS Modem
RDEOPT_SetModemSpeaker R D E O P T _ I g n o r e M o d e m S p e a k e r
Modem
RDEOPT_IgnoreSoftwareCompression RasDial
RDEOPT_SetSoftwareCompression RDEOPT_IgnoreSoftwareCompression

RDEOPT_PauseOnScript RasDialDlg

Windows 2000Windows NTR a s D i a ll p s z P h o n e b o o k


Windows 95Windows 98Windows CE NULL
R A S
R A S R A S
R a s D i a l R A S

R A S D I A L PA R A M S l p R a s D i a l P a r a m s R a s D i a l


16RAS 427
RASDIALPARAMS
d w S i z e R A S D I A L PA R A M S
RAS WINVER
s z E n t r y N a m e R a s D i a l
l p s z P h o n e b o o k
R A S M o d e m
R a s D i a l
R a s D i a l M o d e m
szPhoneNumber
s z P h o n e b o o k N u m b e r s z E n t r y N a m e

s z C a l l b a c k N u m b e r R A S
R A S

s z U s e r N a m e R A S
s z P a s s w o r d R A S
d w S u b e n t r y Windows 2000Windows NT
s z D o m a i n R A S
RAS
d w C a l l b a c k I d R a s D i a l F u n c 2

R a s D i a ld w N o t i f i e rl p v N o t i f i e r R a s D i a l
R a s D i a l l p h R a s C o n n
H R A S C O N N R A S R a s D i a l N U L L
RasDial RAS
RasDial RasDial

RasDial RasDial

16.4.1

R a s D i a ll p v N o t i f i e rN U L LR a s D i a l l p v N o t i f i e r
N U L Ld w N o t i f i e r Ty p e R a s D i a l

1 6 - 1 R a s D i a l
RAS
16-1 RasDial
428

16.4.2

R a s D i a l R a s D i a ll p v N o t i f i e r
N U L LR a s D i a l
RAS RasDial lpcNotifier
R a s D i a l
Wi n d o w sR a s D i a ld w N o t i f i e r Ty p e
l p v N o t i f i e r d w N o t i f i e r Ty p e 1 6 - 2

16-2 RasDial


0 lpvNotifierRasDialRasDialFunc
1 lpvNotifierRasDialRasDialFunc1
2 lpvNotifierRasDialRasDialFunc2
0xFFFFFFF lpvNotifierRasDial

16-2lpvNotifier RasDial
RasDialFuncRasDialFunc1RasDialFunc2RasDialFunc

u n M s g W M _ R A S D I A L E V E N T
r a s c o n n s t a t e R a s D i a l 1 6 - 3

16RAS 429
dwErrorRAS
1 6 - 3 R a s D i a l
RasDial
R a s D i a l
RASDIALEXTENSIONS RDEOPT_PausedStates




16-3 RAS


RASCS_OpenPort
RASCS_PortOpened
RASCS_ConnectDevice
RASCS_DeviceConnected
RASCS_AllDevicesConnected
RASCS_Authenticate RAS
RASCS_AuthNotify
RASCS_AuthRetry
RASCS_AuthCallback
RASCS_AuthChangePassword RAS
RASCS_AuthProject
RASCS_AuthLinkSpeed
RASCS_AuthAck
RASCS_ReAuthenticate
RASCS_Authenticated
RASCS_PrepareForCallback
RASCS_WaitForModemReset Modem
RASCS_WaitForCallback
RASCS_Projected
RASCS_StartAuthentication Windows 95
Windows 98
RASCS_CallbackComplete Windows 95Windows 98
RASCS_LogonNetwork Windows 95
Windows 98
RASCS_SubEntryConnected R a s D i a l F u n c 2
dwSubEntry
RASCS_SubEntryDisconnected R a s D i a l F u n c 2
dwSubEntry
RASCS_RetryAuthentication RasDial
RASCS_CallbackSetByCaller RasDial
RASCS_PasswordExpired RasDial
RASCS_InvokeEapUI Windows 2000 R a s D i a l
EAP
RASCS_Connected RAS
RASCS_Disconnected RAS
430

RASDIALPARAMS
R a s D i a l
RAS RasDial RasDial
RASDIALPARAMS
R a s D i a l lphRasConn
l p v N o t i f i e r R a s H a n g U p
R a s D i a l
RASDIALPARAMS
R a s D i a l F u n c
RasDialRasDial

()R a s D i a l R a s H a n g U p

R a s D i a l
R a s D i a l 1 6 - 2
RasDial
16-2 RasDial

16RAS 431

16-2 RasDialFunc1RasDialFunc2

RasDialFunc1 RasDialFunc
h b r a s c o n nd w E x t e n d e d E r r o rh b r a s c o n n R a s D i a l
dwExtendedError dwError

E R R O R _ S E RV E R _ N O T _ R E S P O N D I N Gd w E x t e n d e d E r r o r N e t B I O S

E R R O R _ N E T B I O S _ E R R O Rd w E x t e n d e d E r r o rN e t B I O S
E R R O R _ A U T H _ I N T E R N A Ld w E x t e n d e d E r r o r

432

E R R O R _ C A N N O T _ G E T _ L A N Ad w E x t e n d e d E r r o rR A S
RasDialFunc2RasDialFunc1 dwCallbackId
d w S u b E n t r yd w C a l l b a c k I d
RASDIALPARAMSdwCallbackId RasDial
dwSubEntry RasDialFunc2

16.4.3

R A S R a s C o n n e c t i o n N o t i f i c a t i o n
RAS

h r a s c o n n R a s D i a l h E v e n t
CreateEvent dwFlags

R A S C N _ C o n n e c t i o n R A S h r a s c o n n I N VA L I D _
HANDLE_VALUE RAS
R A S C N _ D i s c o n n e c t i o n R A S h r a s c o n n INVALID_
HANDLE_VALUE
R A S C N _ B a n d w i d t h A d d e d
R A S C N _ B a n d w i d t h R e m o v e d
1 6 - 3
Wi n 3 2
WaitForSingleObject

16.4.4

RasDial RasHangUp

h r a s c o n n h a s D i a l
R A S

R a s G e t C o n n e c t i o n S t a t u s
RasGetConnectionStatus

16RAS 433
h r a s c o n n R a s D i a l l p r a s c o n n s t a t u s R A S C O N N S TAT U S
RASCONNSTATUS


d w S i z eR A S C O N N S TAT U S
r a s c o n n s t a t e1 6 - 3
d w E r r o rR a s G e t C o n n e c t S t a t u s0 R A S
szDeviceType
s z D e v i c e N a m e
R A S C S _ D i s c o n n e c t e d
R a s G e t C o n n e c t i o n S t a t u s

16.5

R A S
R A S E N T RY
Windows 95 Windows 98
Windows CE Windows NTWindows 2000
.PBK RASENTRY
434

d w S i z e R A S E N T RY
d w f O p t i o n s 16-4
16-4 RASENTRY


RASEO_Custom Windows 2000
RASEO_DisableLcpExtensions RAS RFC 1570PPP LCP
RASEO_IpHeaderCompression RASPPP IP
RASEO_ModemLights Windows 2000
RASEO_NetworkLogon Windows 95Windows 98RAS
RAS
RASEO_PreviewDomain Windows 2000RAS
RASEO_PreviewPhoneNumber Windows 2000RAS
RASEO_PromoteAlternates R A S

RASEO_RemoteDefaultGateway R A S I P

RASEO_RequireCHAP Windows 2000CHAP

RASEO_RequireDataEncryption
RASEO_RequireEncrytedPw
RASEO_RequireEAP Windows 2000 EAP
RASEO_RequireEncryptedPw PPP
PAPCHAPShiva SPAP

16RAS 435
()

RASEO_RequireMsCHAP Windows 2000 CHAP
RASEO_RequireMsCHAP2 Windows 2000 CHAP2
RASEO_RequireMsEncryptedPw R A S E O _ R e q u i r e E n c r y p t e d P w R A S
CHAP
RASEO_RequirePAP Windows 2000 PAP
RASEO_RequireSPAP Windows 2000 SPAP
RASEO_RequireW95MSCHAP Windows 2000CHAPWindows 95
RAS
RASEO_ReviewUserPW Windows 2000RAS
RASEO_SecureLocalFiles Windows 2000Windows NT R A S

RASEO_SharedPboneNumbers Windows 2000
RASEO_ShowDialingProgress Windows 2000RAS
RASEO_SpecificIpAddr RASipaddr IP
RASEO_SpecificNameServers R A S i p a d d r D n si p a d d r D n s A l ti p a d d r Wi n s
ipaddrWinsAlt IP
RASEO_SwCompression RAS
RASEO_TerminalAfterDial RAS
RASEO_TerminalBeforeDial RAS
RASEO_UseCountryAndAreaCodes RASdwCountryIDdwCountryCodeszAreaCode
szLocalPhoneNumber
RASEO_UseLogonCredentials R A S
R A S E O _ R e q u i r e d M s E n c r y p t e d P w

d w C o u n t r y I DR A S E O _ U s e C o u n t r y A n d A r e a C o d e s
TA P I R a s G e t C o u n t r y I n f o

C o u n t r y C o d e R A S E O _ U s e C o u n t r y A n d A r e a C o d e s
d w C o u n t r y I D 0 Wi n d o w s
dwCountryID
s z A r e a C o d e R A S E O _ U s e C o u n t r y A n d A r e a C o d e s

s z L o c a l P h o n e N u m b e r RASEO_UseCountry-
AndAreaCodesRASdwCountryIDdwCountryCodeszAreaCode

d w A l t e r n a t e O ff s e t RAS


i p a d d r R A S E O _ S p e c i f i c I p A d d r I P

i p a d d r d n s R A S E O _ S p e c i f i c N a m e S e r v e r s
DNSIP
436

i p a d d r D n s A l t R A S E O _ S p e c i f i c N a m e S e r v e r s
DNSIP
i p a d d r D Wi n s R A S E O _ S p e c i f i c N a m e S e r v e r s
WINSIP
i p a d d r D Wi n s A l t R A S E O _ S p e c i f i c N a m e S e r v e r s
WINSIP
d w F r a m e S i z e d w F r a m i n g P r o t o c o l R A S F P _ S l i p
10061500
d w f N e t P r o t o c o l s
N e t B E U IR A S N P _ N e t B E U I I P XR A S N P _ I p x I P
RASNP_Ip
d w F r a m i n g P r o t o c o l R A S
PPPRASFP_PppSLIPRASFP_Slip
s z S c r i p t S c r i p t
s z A u t o d i a l D l l D L LD L L R A S a u t o d i a l
RAS
s z A u t o d i a l F u n cs z A u t o d i a l D l l D L L
szDeviceType 16-5

16-5 RAS


RASDT_Modem COM
RASDT_Isdn ISDN
RASDT_X25 X.25
RASDT_Vpn VPN
RASDT_Pad /
RASDT_Generic
RASDT_Serial
RASDT_FrameRelay
RASDT_Atm ATM
RASDT_Sonet SONET
RASDT_SW56 56-Kbps
RASDT_Irda
RASDT_Parallel

s z D e v i c e N a m e TA P I R a s E n u m D e v i c e s
TAPI
szX25PadType X.25 PAD
s z X 2 5 A d d r e s s X . 2 5
s z X 2 5 F a c i l i t i e s X . 2 5
s z X 2 5 U s e r D a t aX . 2 5
d w C h a n n e l s

16RAS 437
d w R e s e r v e d 1 0
d w R e s e r v e d 2 0
d w S u b E n t r i e s
0R a s S e t S u b E n t r y P r o p e r t i e s

d w D i a l M o d eWindows 2000 R A S E D M _ D i a l A l lR A S E D M _ D i a l A s N e e d e d
R A S
RASEDM_DialAll RASEDM_DialAsNeeded
RASdwDialExtraPercentdwDialExtraSampleSecondsdwHangUpExtraPercent
d w H a n g U p E x t r a S a m p l e S e c o n d s

d w D i a l E x t r a P e r c e n tWindows 2000
dwDialExtraSampleSeconds RAS

d w D i a l E x t r a S a m p l e S e c o n d sWindows 2000 R A S
dwDialExtraPercent
d w H a n g U p E x t r a P e r c e n tWindows 2000
dwDialExtraSampleSeconds RAS

d w H a n g U p E x t r a S a m p l e S e c o n d sWindows 2000 RAS
d w H a n g U p E x t r a P e r c e n t

dwIdleDisconnectSecondsRAS
RASIDS_DisabledRASIDS_UseGlobalValue

dwTypeWindows 2000 16-6
16-6 RASENTRY


RASET_Direct
RASET_Internet ICS
RASET_Phone
RASET_Vpn

d w E n c r y p t i o n Ty p eWindows 2000
16-7
16-7 RAS


ET_40Bit 40
ET_128Bit 128

d w C u s t o m A u t h k e yWindows 2000 E A P
438


g u i d I dWindows 2000 GUID
s z C u s t o m D i a l D l lWindows 2000 D L L D L L
R A S N U L LR A S
RAS
d w V p n S t r a t e g yWindows 2000VPNVPN 16-8

16-8 RAS VPN


VS_Default RAS(PPTP)2(L2TP)
VS_L2tpFirst L2TP
VS_L2tpOnly L2TP
VS_PptpFirst PPTP
VS_PptpOnly PPT

RAS API lpszPhonebook


Windows 95Windows 98Windows CE
N U L L Wi n d o w s
2000Windows NT
. p b k Windows 2000 Windows NT S y s t e m R o o t
\System32\Ras\RasPhone.pbk NULL
R a s Va l i d a t e E n t r y
RasEnumDevicesRasGetCountryInfo RaValidateEntryName

l p s z P h o n e b o o k l p s z E n t r y

E R R O R _ S U C E S S E R R O R _ I N VA L I D _ N A M E
ERROR_ALREADY_EXISTS
R a s E n u m D e v i c e R A S

lpRasDevInfo
RASDEVINFO RASDEVINFO

16RAS 439


d w S i z eR a s E n u m D e v i c e s R A S D E V I N F O

szDeviceType RASDT_Modem
s z D e v i c e N a m eTA P I
R a s E n u m D e v i c e s
ERROR_BUFFER_TOO_SMALL lpcb
l p R a s D e v I n f o
lpcDevices lpRasDevInfolpcDRASADEVINFO

RasGetCountryInfo Windows TAPI

l p R a s C t r y I n f o
R A S C T RY I N F O
R A S C T RY I N F O 2 5 6
RASCTRYINFO


d w S i z e RASCTRYINFO
d w C o u n t r y I D Wi n d o w s TA P I
R A S E N T RY d w C o u n t r y I D 1

d w N e x t C o u n t r y I D TA P I 0

d w C o u n t r y C o d ed w C o u n t r y I D
d w C o u n t r y N a m e O ff s e t
RASCTRYINFO
RasGetCountryInfo lpdwsize lpRasCtryInfo
l p R a s C t r y I n f o

440

16.5.1

RASRASENTRYRasSetEntry
R a s G e t E n t r y P r o p e r t i e sR a s R e n a m e E n t r yR a s D e l e t e E n t r y
RasSetEntryProperties

l p s z P h o n e b o o k l p s z E n t r y
R A S E N T RY
l p R a s E n t r y R A S E N T RY
R A S E N T RY
dwEntryInfoSizelpRasEntry
lpbDeviceInfo TAPI
Windows 2000 Windows NT
N U L L d w D e v i c e I n f o S i z e l p b D e v i c e I n f o

R a s G e t E n t r y P r o p e r t i e s

lpszPhonebooklpszEntry
NULLlpRasEntrylpbDeviceInfo

R A S R a s S e t E n t r y P r o p e r t i e s
lpRasEntrylpvDeviceInfo
lpRasEntry RASENTRY
RasSetEntryProperties

RASENTRY NULLlpdwEntryInfoSize
R A S E N T RY
l p d w E n t r y I n f o S i z e
D W O R D l p R a s E n t r y RasSetEntry Properties

16RAS 441
l p d w E n t r y I n f o S i z el p R a s E n t r y
l p R a s E n t r yN U L Ll p d w E N t r y I n f o S i z e0

l p b D e v i c e I n f o
TAPI NULLlpdwDeviceInfoSize
Windows 2000 Windows NT
l p b D e v i c e I n f o N U L L l p d w D e v i c e I n f o S i z e D W O R D
DWORD lpbDeviceInfo
R a s G e t E n t r y P r o p e r t i e s l p b D e v i c e I n f o S i z e l p b D e v i c e I n f o

1 6 - 3 R a s G e t E n t r y P r o p e r t i e sR a s S e t E n t r y
Properties
16-3 RAS
442

16.5.2

R a s R e n a m e E n t r y
RasRenameEntry

lpszPhonebook lpszOldEntry
l p s z N e w E n t r y

R a s R e n a m e E n t r y R a s Va l i d a t e E n t r y N a m e R a s R e n a m e E n t r y
0
ERROR_INVALID_NAMEl p s z N e w E n t r y
E R R O R _ A L R E A D Y _ E X I S T S l p s z N e w E n t r y
ERROR_CANNOT_FIND_PHONEBOOK_ENTRYlpszOldEntry

16.5.3

RasDeleteEntry

16RAS 443

l p s z P h o n e b o o k l p s z E n t r y
E R R O R _ S U C C E S S
ERROR_INVALID_NAME

16.5.4

R A SR a s E n u m E n t r i e s

r e s e r v e d N U L Ll p s z P h o n e b o o k
l p r a s e n t r y n a m e
RASENTRYNAME RASENTRYNAME


d w S i z e R a s E n u m E n t r i e s R A S E N T RY N A M E

s z E n t r y N a m e
dwFlagsWindows 2000REN_AllUsers
REN_User
s z P h o n e b o o k P a t hWindows 2000
R a s E n u m E n t r i e s
E R R O R _ B U F F E R _ TO O _ S M A L L l p c b
l p r a s e n t r y n a m e
l p c E n t r i e s l p r a s e n t r y n a m e
RASENTRYNAME

16.5.5

R A S R a s D i a l
444

R a s G e t C r e d e n t i a l sR a s S e t C r e d e n t i a l sR a s G e t E n t r y D i a l
P a r a m sR a s S e t E n t r y D i a l P a r a m s
RasGetCredentialsRasSetCredentialsWindows NT 4
Windows 2000 RasGetEntryDialParamsRasSetEntryDialParams
R a s G e t C r e d e n t i a l sR a s S e t C r e d e n t i a l s Wi n d o w s 9 5Windows 98Windows CE
RasGetEntryDialParamsRasSetEntryDialParams
RasGetCredentials

l p s z P h o n e b o o k l p s z E n t r y
lpCredentials RASCREDENTIALS
RASCREDENTIALS


d w S i z eR A S C R E D E N T I A L S

d w M a s k
s z U s e r N a m e R A S C M _ U s e r N a m e
szPasswordRASCM_PasswordszDomainRASCM_Domain
s z U s e r N a m e
s z P a s s w o r d
s z D o m a i n
R a s G e t C r e d e n t i a l s 0l p C r e d e n t i a l sd w M a s k

R a s S e t C r e d e n t a i s R a s G e t C r e d e n t i a l s
f C l e a r C r e d e n t i a l s
RasGetCredentialsRasSetCredentais

f C l e a r C r e d e n t i a l s T R U ER a s S e t C r e d e n t i a l s
l p C r e d e n t i a l s d w M a s k

16RAS 445
d w M a s k R A S C M _ P a s s w o r d
RasSetCredentials 0
R a s G e t E n t r y D i a l P a r a m sR a s S e t E n t r y D i a l P a r a m s
RasGetEntryDialParams

l p s z P h o n e b o o k l p r a s d i a l p a r a m s
R A S D I A L PA R A M S l p f P a s s w o r d l p r a s d i a l p a r a m s
TRUE
RasSetEntryDialParams RasDial
RasSetEntryDialParams

l p s z P h o n e b o o kl p r a s d i a l p a r a m sR a s G e t E n t r y D i a l P a r a m s
f R e m o v e P a s s w o r d T R U E R a s S e t E n t r y
D i a l P a r a m s l p r a s d i a l p a r a m s

16.5.6

Windows 2000Windows NTRAS


R A S
R A S R a s G e t S u b E n t r y P r o p e r t i e sR a s S e t S u b E n t r y P r o p e r t i e s
RasGetSubEntryProperties

l p s z P h o n e b o o k l p s z E n t r y
dwSubEntry lpRasSubEntry
R A S S U B E N T RY
RASSUBENTRY
446


d w S i z e R A S S U B E N T RY
d w F l a g s
szDeviceType
s z D e v i c e N a m eTA P I
s z L o c a l P h o n e N u m b e r
d w A l t e r n a t e O ff s e t R A S S U B E N T RY

l p R a s S u b E n t r y R A S S U B E N T RY
R a s G e t S u b E n t r y P r o p e r t i e s E R R O R _ B U F F E R _ TO O _ S M A L L
l p d w c b l p R a s S u b E n t r y l p d w c b
R A S S U B E N T RY
lpbDeviceConfiglpcbDeviceConfig NULL

RasSetSubEntryProperties

l p R a s S u b E n t r y
RasGetSubEntryProperties

16.6

RAS
RasEnumConnectionsRasGetSubEntryHandleRasGetProjectionInfoRasEnumConnections
RAS

16RAS 447
lprasconn RASCONN RASCONN


d w S i z eR A S C O N N
b r a s c o n nR a s D i a l
s z E n t r y N a m e
.
szDeviceType
s z D e v i c e N a m e
s z P h o n e N a m e
d w S u b E n t r y
g u i d E n t r yWindows 2000 GUID
RasEnumConnections
RASCONNERROR_BUFFER_TOO_SMALL
RASCONNdwSize RASCONN
l p c b
l p r a s c o n n l p c b
l p c b
lpcConnections lprasconnRASCONN
R a s G e t S u b E n t r y H a n d l e

brasconn RAS dwSubEntry


448

lpbrasconn
R a s E n u m C o n n e c t i o n sR a s G e t S u b E n t r y H a n d l eR A S
R A S
Projection information
I P
I P I P R A S P P P
RasGetProjectionInfo

brasconn RAS rasprojectionRASPROJECTION


l p p r o j e c t i o n
r a s p r o j e c t i o n l p c b
l p p r o j e c t i o n

RASPROJECTION
R A S P _ A m b
R A S P _ P p p N b f
R A S P _ P p p I p x
R A S P _ P p p I p
RASP_Amb RASAMB


d w S i z e R A S A M B
d w E r r o rP P P
s z N e t B i o s E r r o r P P P
N e t B I O S d w E r r o rE R R O R _ N A M E _ E X I S T S _ O N _ N E Ts z N e t B i o s E r r o r

b L a n a NetBIOS LANLANA
R A S P _ P p p N b f R a s G e t P r o j e c t i o n I n f o R A S P P P N B F


16RAS 449

R A S P P P N B F R A S A M B
szWorkstationName dwNetBiosErrorszWorkstationNameNetBIOS
dwNetBiosError NetBIOS

R A S P _ P p p I p x R a s G e t P r o j e c t i o n I n f o R A S P P P I P X


d w S i z e R A S P P P I P X
d w E r r o rP P P
s z I p x A d d r e s s I P X
R A S P _ P p p I p R a s G e t P r o j e c t i o n I n f o R A S P P P I P


d w S i z e R A S P P P I P
d w E r r o rP P P
s z I p x A d d r e s s I P
s z S e r v e r I p A d d r e s s I P
R A S I P I P
16-4
16-4 IP RasGetProjectionInfo
450

16.7

R A S
R a s D i a l
RAS RAS


A NetBIOS
N C B n c b _ c o m m a n d
N e t b i o s
N C B N e t b i o s N C B
N e t B I O S
X
X Netbios 1

A.1 NCBADDGRNAME

ncb_num A-1
A-1

/
ncb_command X
ncb_retcode X
ncb_lsn
ncb_num
ncb_buffer
ncb_length
ncb_callname
ncb_name X
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.2 NCBADDNAME


n c b _ n u m
A - 2
452

A-2

/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer
ncb_length
ncb_callname
ncb_name X
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt X
ncb_event

A.3 NCBASTAT

n c b _ b u ff e r
A D A P T E R _ S TAT U S
NAME_BUFFER A-3
A-3

/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer / X
ncb_length / X
ncb_callname X
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.4 NCBCALL

ncb_name A-4
A-4

/
ncb_command X

ANetBIOS 453
()
/
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer
ncb_length
ncb_callname X
ncb_name X
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.5 NCBCANCEL

ncb_bufferNCB
NCBSENDNCBCHAINSEND
N C B A D D G R N A M E
N C B A D D N A M E N C B C A N C E L N C B D E L I N A M E N C B R E S E T N C B D G S E N D
NCBDGSENDBCNCBSSTATA-5
A-5

/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer X
ncb_length
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.6 NCBCHAINSEND

1 2 8 K B
64KBn c b _ b u ff e rncb_length
ncb_callname0~1 2~5 A-6
454

A-6

/
ncb_command X
ncb_retcode
ncb_lsn X
ncb_num
ncb_buffer X
ncb_length X
ncb_callname X
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.7 NCBCHAINSENDNA


1 2 8 K B 6 4 K B n c b _ b u ff e rn c b _ l e n g t h
n c b _ c a l l n a m e0 ~ 1 2 ~ 5
A-7
A-7

/
ncb_command X
ncb_retcode
ncb_lsn X
ncb_num
ncb_buffer X
ncb_length X
ncb_callname X
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.8 NCBDELNAME


N R C _ A C T S E S0 x 0 F N R C _ N A M E R R
0x17 A-8

ANetBIOS 455
A-8

/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer
ncb_length
ncb_callname
ncb_name X
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.9 NCBDGRECV

n c b _ n u m n c b _ n u m
0 x F F

NRC_INCOMP0x06
A-9
A-9

/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num X
ncb_buffer X
ncb_length / X
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.10 NCBDGRECVBC


N R C _ I N C O M P0 x 0 6
456

A-10
A-10

/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num X
ncb_buffer X
ncb_length / X
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.11 NCBDGSEND

N C B A S TAT
A D A P T E R _ S TAT U S
A-11
A-11

/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num X
ncb_buffer X
ncb_length X
ncb_callname X
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.12 NCBDGSENDBC

L A N

ANetBIOS 457

NCBDGSEND A-12
A-12

/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num X
ncb_buffer X
ncb_length X
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.13 NCBENUM

LANA n c b _ b u ff e r LANA_ENUM
L A N A _ E N U Ml e n g t h L A N A
LANA_ENUMlana LANAA-13
A-13

/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer X
ncb_length X
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.14 NCBFINDNAME

n c b _ b u ff e r
FIND_NAME_HEADER FIND_NAME_BUFFER
458

Windows NT Win32 A-14
A-14

/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer / X
ncb_length X
ncb_callname X
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.15 NCBHANGUP


N R C _ S C L O S E D0 x O A

N C B R E C VA N Y

A-15
A-15

/
ncb_command X
ncb_retcode
ncb_lsn X
ncb_num
ncb_buffer
ncb_length
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.16 NCBLANSTALERT

Windows NT LAN

ANetBIOS 459
LAN A-16
A-16

/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer
ncb_length
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.17 NCBLISTEN

ncb_callname
* NCBCALL
N C B C A L L n c b _ c a l l n a m e
A-17
A-17

/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer
ncb_length
ncb_callname / X
ncb_name X
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.18 NCBRECV

460

1) NCBBECV
2) NCBRECVANY
3) NCBRECEANY

NRC_INCOMP0x06

ncb_length A-18
A-18

/
ncb_command X
ncb_retcode
ncb_lsn X
ncb_num X
ncb_buffer X
ncb_length / X
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.19 NCBRECVANY

ncb_num
0 x F F n c b _ n u m

NCBRECV

N R C R E C VA N Y N R C _ S C L O S E D
0 x 0 AN C Bn c b _ _ l s n
N C B R E C VA N Y n c b _ n u m0 x F F
NCBRECVANY N R C _ S C L O S E D n c b _ l s n
A-19
A-19

/
ncb_command X
ncb_retcode
ncb_lsn

ANetBIOS 461
()
/
ncb_num / X
ncb_buffer X
ncb_length / X
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.20 NCBRESET

LANA
ncb_lsn0ncb_lana_num
n c b _ l s n0 n c b _ l a n a _ n u m
n c b _ c a l l n a m e [ 0 ] n c b _ c a l l n a m e [ 2 ]
ncb_callname[3] 1A-20
A-20

/
ncb_command X
ncb_retcode
ncb_lsn X
ncb_num X
ncb_buffer
ncb_length
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.21 NCBSEND

65 53664KB

N R C _ S C L O S E D0 x 0 A
A-21
462

A-21

/
ncb_command X
ncb_retcode
ncb_lsn X
ncb_num
ncb_buffer X
ncb_length X
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.22 NCBSENDNA


NCBSEND A-22
A-22

/
ncb_command
ncb_retcode
ncb_lsn X
ncb_num
ncb_buffer X
ncb_length X
ncb_callname
ncb_name
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.23 NCBSSTAT

n c b _ b u ff e r
S E S S I O N _ B U F F E R S E S S I O N _ H E A D E R
n c b _ n a m e*
NRC_INCOMP0x06
4 NRC_BUFLEN0x01A-23

ANetBIOS 463
A-23

/
ncb_command X
ncb_retcode
ncb_lsn
ncb_num
ncb_buffer X
ncb_length X
ncb_callname
ncb_name X
ncb_rto
ncb_sto
ncb_post
ncb_lana_num X
ncb_cmd_cplt
ncb_event

A.24 NCBUNLINK

N e t B I O S
Win32


B IP
A P I I P

I p c o n f i g . e x e Windows 95Wi n i p c f g . e x eI P
DHCPIP
Netstat.exeTCPUDPIP
Route.exe
Arp.exeARPIP
Windows 98Windows 2000
Windows NT SP4SP Windows 95

Iphlpapi,h Iphlpapi.lib

B.1 IPCONFIG

I p c o n f i g . e x e I P I P
IP GetNetworkParams

p F i x e d I n f o F I X E D _ I N F O
I P p O u t B u f L e n
pFixedInfo GetNetworkParams
E R R O R _ B U F F E R _ O V E R F L O W p O u t B u f L e n
GetNetworkParamsFIXED_INFO


HostName DNS

BIP 465
DomainName DNS
CurrentDnsServer DNSIP
DnsServerList DNS
NodeTypeIPNetBIOSB-1
S c o p e I d N e t B I O S
TCP/IP
EnableRouting IP
E n a b l e P r o x y W I N SW I N S W I N S
b W I N S

E n a b l e D n s N e t B I O SD N SW I N S L M H O S T

B-1


BROADCAST_NODETYPE: bNetBIOS
IP NetBIOS
PEER_TO_PEER_NODETYPE: p
N e t B I O S W I N S I P

MIXED_NODETYPE: mmixedNetBIOS
bp b
p
HYBRID_NODETYPE: h hybridNetBIOS
bpp
b

F I X E D _ I N F O D n s S e r v e r L i s t I P _ A D D R _ S T R I N G I P

Next DNSIP NULL


I p A d d r e s s I pI P M a s k
I p A d d r e s s I P
Context IP
I p C o n f i g . e x e I P
R A S G e t A d a p t e r s I n f o

466

p A d a p t e r I n f o
A D A P T E R _ I N F O p O u t B u f I n f o
p A d a p t e r I n f o
G e t A d a p t e r s I n f o E R R O R _ B U F F E R _ O V E R F L O W p O u t B u f L e n

I P _ A D A P T E R _ I N F O
IP IP_ADAPTER_INFO


Next NULL
ComboIndex 0
AdapterName
Description
AddressLengthAddress
Address
Index
Type B-2
DhcpEnabled DHCP
CurrentIpAddress NULL
IpAddressList IP
GatewayList IP
DhcpServer DHCPSIP
HaveWins WINS

BIP 467
P r i m a r y Wi n s S e r v e r W I N S
IP
S e c o n d a r y Wi n s S e r v e r W I N S
IP
LeaseObtained DHCPIP
LeaseExpiresDHCPIP
B-2


MIB_IF_TYPE_ETHERNET
MIB_IF_TYPE_FDDI FDDI
MIB_IF_TYPE_LOOPBACK Loopback
MIB_IF_TYPE_OTHER
MIB_IF_TYPE_PPP PPP
MIB_IF_TYPE_SLIP Slip
MIB_IF_TYPE_TOKENRING

B.1.1 IP

Ipconfig.exe DCHP IP
/ r e l e a s e/ r e n e w I P
IPReleaseAddress

IPIPRenewAddress

A d a p t e r I n f o I P _ A D A P T E R _ I N D E X _ M A P
IP_ADAPTER_INDEX_MAP


Index
Name
GetInterfaceInfo IP_ADAPTER_INDEX_MAP

468

p I f Ta b l e I P _ I N T E R FA C E _ I N F O
d w O u t B u f L e n pIfTable
G e t I n t e r f a c e I n f o E R R O R _
INSUFFICIENT_BUFFER dwOutBufLen
IP_INTERFACE_INFO


NumAdaptersAdapter
AdapterIP_ADAPTER_INDEX_MAP
I P _ A D A P T E R _ I N D E X _ M A P
IPReleaseAddressIPRenewAddress DHCPIP

B.1.2 IP

I p c o n f i g . e x e I PD H C P
I P A d d I p A d d r e s sDeleteIpAddress IP
I P Wi n d o w s
I D I P
I D I DI P G e t A d a p t e r s I n f oA d d I p A d d r e s s

A d d r e s s I P I p M a s kI P
I f I n d e x
N T E C o n t e x t I P N T E I n s t a n c e I P

IP DeleteIpAddress

N T E C o n t e x t I P G e t A d a p t e r s I n f o

B.2 NETSTAT

N e t s t a t . e x e T C P U D P I P

BIP469
Windows 98Windows 2000Windows NT 4 SP4

B.2.1 TCP

G e t Tc p Ta b l e T C P -p tcp-a
Netstat.exe GetTcpTable

pTcpTable MIB_TCPTABLE
TCPpdwsize pTcpTable
T C P
bOrder
GetTcpTable MIB_TCPTABLE


dwNumEntriestable
tableMIB_TCPROW TCP
MIB_TCPROW TCPIP


dwStateTCP B-3
B-3 TCP

RFC
MIB_TCP_STATE_CLOSED
MIB_TCP_STATE_CLOSING
MIB_TCP_STATE_CLOSE_WAIT
MIB_TCP_STATE_DELETE_TCB
MIB_TCP_STATE_ESTAB
MIB_TCP_STATE_FIN_WAIT1 FIN WAIT1
MIB_TCP_STATE_FIN_WAIT2 FIN WAIT2
470

()
RFC
MIB_TCP_STATE_LAST_ACK
MIB_TCP_STATE_LISTEN
MIB_TCP_STATE_SYN_RCVD
MIB_TCP_STATE_SYN_SENT
MIB_TCP_STATE_TIME_WAIT

dwLocalAddr IP
dwLocalPort
dwRemoteAddr IP
dwRemotePort

B.2.2 UDP

G e t U d p Ta b l e U D P -pudp -a
Netstat.exe GetUdpTable

p U d p Ta b l e M I B _ U D P TA B L E
U D P p d w S i z e p U d p Ta b l e
U D P
bOrder
GetUdpTable MIB_UDPTABLE


dwNumEntriestable
tableMIB_UDPROW UDP
MIB_UDPROW IPUDP


dwLocalAddr IP
dwLocalPort IP

BIP 471
B.2.3 IP

I P G e t I p S t a t i s t i c sG e t I c m p S t a t i s t i c sG e t Tc p S t a t i s t i c s
G e t U d p S t a t i s t i c s - sN e t s t a t . e x e
G e t I p S t a t i s t i c s I P

pStats MIB_IPSTATA IP
MIB_IPSTATS


dwForwarding IP
dwDefaultTTL TTL
dwInReceives
dwInHdrErrors
dwInAddrErrors
dwForwDatagrams
dwInUnknownProtos
dwInDiscards
dwInDelivers
472

dwOutRequestsIP
dwRoutingDiscards
dwOutDiscards
dwOutNoRoutes
dwReasmTimeout
dwReasmReqds
dwReasmOks
dwFragFails
dwFragCreates
dwNumIf IP
dwNumAddr IP
dwNumRoutes
G e t I c m p S t a t i s t i c sI C M P

p S t a t s M I B _ I C M P I C M P
MIB_ICMP

MIB_ICMP MIBICMPINFO

M I B I C M P I N F O M I B I C M P S TAT S I C M Pi c m p I n S t a t s
icmpOutStats MIBICMPSTATS

BIP 473

dwMsgs
dwErrors
dwDestUnreachs
dwTimeExcds
dwParmProbs IP
dwSrcQuenchs
dwRedirects
dwEchos ICMP
dwEchoReps ICMP
dwTimestamps
dwTimestampReps
dwAddrMasks
dwAddrMaskReps
TCP GetTcpStatistcs

pStats MIB_TCPSTATS IP
MIB_TCPSTATS


d w R t o A l g o r i t h m M I B _ T C P _ RTO _
C O N S TA N TM I B _ T C P _ RTO _ R S R EM I B _ T C P _ RTO _ VA N J
MIB_TCP_RTO_OTHER
dwRtoMin
dwRtoMax
474

dwMaxConn
dwActiveOpens
dwPassiveOpens
dwAttemptFails
dwEstabResets
dwCurrEstab
dwInSegs
dwOutSegs
dwRetransSegs
dwInErrs
dwOutRsts
dwNumConns
G e t U d p S t a t i s t i c s U D P

pStats MIB_UDPSTATS IP
MIB_UDPSTATS


dwInDatagrams
dwNoPorts
dwInErrors dwNoPorts
dwOutDatagrams
dwNumAddrs UDP

B.3 ROUTE

R o u t e . e x e
I PI PIP Helper Library
Windows 98Windows 2000Windows NT 4 SP4

R o u t e . e x e
I P

BIP 475

I P

B.3.1

Route.exe GetIpForwardTable

p I p F o r w a r d Ta b l e
p I p F o r w a r d Ta b l e N U L L
p d w S i z e b O r d e r

1)
2)
3)
4)
MIB_INFORWARDROW

MIB_IPFORWARDROW dwNumEntries
MIB_IPFORWARDROW


476

dwForwardDest IP
dwForwardMask
d w F o r w a r d P o l i c y I P
TO S TO S 9I P _ TO S
1354
dwForwardNextHop IP
dwForwardIfIndex
dwForwardTypeRFC 1354 B-4

d w F o r w a r d P r o t o B - 5 I P X
Routprot.hIPIprtrmib.h
dwForwardAge
dwForwardNextHopAS
dwForwardMetric1 RFC 1354
Route.exe
MIB_IPROUTE_METRIC_UNUSED-1
dwForwardMetric2 RFC 1354
dwForwardMetric3 RFC 1354
dwForwardMetric4 RFC 1354
dwForwardMetric5 RFC 1354
B-4


MIB_IPROUTE_TYPE_INDIRECT
MIB_IPROUTE_TYPE_DIRECT
MIB_IPROUTE_TYPE_INVALID
MIB_IPROUTE_TYPE_OTHER

B-5


MIB_IPPROTO_OTHER
MIB_IPPROTO_LOCAL
MIB_IPPROTO_NETMGMT Route.exeSNMP
MIB_IPPROTO_ICMP ICMP
MIB_IPPROTO_EGP
MIB_IPPROTO_GGP
MIB_IPPROTO_HELLO HELLO
MIB_IPPROTO_RIP
MIB_IPPROTO_IS_IS IP
MIB_IPPROTO_ES_IS IP
MIB_IPPROTO_CISCO IPCisco
MIB_IPPROTO_BBN BBN
MIB_IPPROTO_OSPF OSPF
MIB_IPPROTO_BGP .

BIP 477
()

MIB_IPPROTO_NT_AUTOSTATIC
MIB_IPPROTO_NT_STATIC Routemon.exe
MIB_IPPROTO_STATIC_NON_DOD P R O TO _ I P _ N T _ S TAT I C
DOD
IPX_PROTOCOL_RIP IPX
IPX_PROTOCOL_SAP
IPX_PROTOCOL_NLSP NetWare

B.3.2

I P
I P I P
I P
GetIpAddrTable

p I p A d d r Ta b l e M I B _ I PA D D RTA B L E
p d w S i z e b O r d e r
IPIP pIpAddrTable
N U L L p d w S i z e MIB_IPADDRTA B L E

M I B _ I PA D D R O W d w N u m E n t r i e s t a b l e
MIB_IPADDROWMIB_IPADDRROW


dwAddr IP
dwIndexIP
478

dwMaskIP
dwBCastAddr
dwReasmSize
unused1 and unused2
I P
SetIpForwardEntry

pRouteMIB_IPFORWARDROW

dwForwardIfIndexdwForwardDestdwForwardMask
dwForwardNextHopdwForwardPolicy

B.3.3


MIB_IPFORWARDROW
G e t I p F o r w a r d Ta b l e M I B _ I P F O RWA R D R O W
DeleteForwardEntry DeleteForwardEntry

pRoutedwForward-
IfIndexdwForwardDestdwForwardMaskdwForwardNextHopdwForwardPolicy

B.4 ARP

A r p . e x e A R PI P A r p . e x ePlatform SDK
Iprap.exeARP IP
MAC Arp.exe
- a A R P- d
- s A R P
ARP ARP
I P Windows 98 Windows 2000Windows NT4 SP4

ARPIP GetIpNetTable

pIpNetTableMIB_IPNETTABLEARP

BIP 479
IP
NULLpdwSizeERROR_INSUFFICIENT_B U F F E R
p d w S i z e p I p N e t Ta b l e b O r d e r
IP
MIB_IPNETTABLE MIB_IPNETROW

d w N u m E n t r i e s t a b l e M I B _ I P N E T R O W
ARP


dwIndex
dwPhysAddrLenbPhysAddrs
bPhysAddr
dwAddr IP
dwTypeARP B-6
B-6 ARP

ARP
MIB_IPNET_TYPE_STATIC
MIB_IPNET_TYPE_DYNAMIC
MIB_IPNET_TYPE_INVALID
MIB_IPNET_TYPE_OTHER

B.4.1 ARP

A R P A R P A R P I P
SetIpNetEntry

M I B _ I P N E T W O R K
A R P A R P d w I n d e x I P
A R P I P
480

G e t I p A d d r Ta b l e d w P h y s A d d r L e n 6
ETHEENET MAC 6b P h y s A d d r
M A C 1 2 0 0 - A 0 - C 9 - 8 6 - E 8
bPhysAddr MAC

I P XAT M 6d w A d d r
I P M A C dwType
B-6ARPMIB_IPNETWORK SetIpNetEntry
ARP NO_ERROR

B.4.2 ARP

A R P
d w I n d e x A R P I Pd w A D D R A R P
DeleteIpNetEntry

M I B _ I P N E T R O WA R P I P
IP IP GetIpAddrTable
NO_ERROR


C Winsock
Wi n s o c k
B S D Wi n s o c k Wi n 3 2
Winsock
10004WSAEINTR
WSACancelBlockingCall

10009WSAEBADF
Microsoft Windows CEsocket

10013WSAEACCES
s e n d t oW S A S e n d To
s e t s o c k o p tS O _ B R O A D C A S T

10014WSAEFAULT
Wi n s o c k

10022WSAEINVAL
WSAIoctl

acceptWSAAccept
10024WSAEMFILE
M i c r o s o f t

10035WSAEWOULDBLOCK

c o n n e c t

10036WSAEINPROGRESS

16Winsock
10037WSAEALREADY

c o n n e c tW S A C o n n e c t
Winsock
482

10038WSAENOTSOCK
S O C K E T Wi n s o c k

10039WSAEDESTADDRREQ
sendto
INADDR_ANY
10040WSAEMSGSIZE

10041W S A E P R O TO T Y P E
socketWSASocket
S O C K _ S T R E A M I P I P P R O TO _ U D P

10042WSAE N O P R O TO O P T
getsockoptsetsockopt

10043WSAEPROTONOSUPPORT

TCP/IPTCPUDP
10044WSAESOCKTNOSUPPORT

S O C K _ R AW

10045WSAEOPNOTSUPP

Wi n s o c k Wi n s o c k
acceptWSAAccept
10046WSAEPFNOSUPPORT

WSAEAFNOSUPPORT
10047WSAEAFNOSUPPORT

S O C K _ S T R E A M s e n d t oW S A S e n d To
socketWSASocket

10048WSAEADDRINUSE

CWinsock 483
I P
I P b i n dc o n n e c tW S A C o n n e c t
s e t s o c k o p t S O _ R E U S E A D D R
IP 9
10049WSAEADDRNOTAVAIL
API
bind IP IP
c o n n e c tW S A C o n n e c ts e n d t oW S A S e n d ToW S A J o i n L e a f
0
10050WSAENETDOWN

10051WSAENETUNREACH

10052WSAENETRESET

setsockoptSO_KEEPALIVE

10053WSAECONNABORTED

10054WSAECONNRESET

S O _ L I N G E R s e t s o c k o p t
9
10055WSAENOBUFS

10056WSAEISCONN

c o n n e c tW S A C o n n e c t
sendtoWSASendTo
10057WSAENOTCONN

10058WSAESHUTDOWN
s h u t d o w n
484

s h u t d o w n

10060WSAETIMEDOUT

S O _ S N D T I M E OS O _ R C V T I M E O c o n n e c tW S A C o n n e c t
SO_SNDTIMEOSO_RCVTIMEO 9
10061WSAECONNREFUSED

10064WSAEHOSTDOWN

W S A E T I M E D O U T

10065WSAEHOSTUNREACH

WSAENETUNREACH
10067WSAEPROCLIM
Winsock
10091WSASYSNOTREADY
W S A S t a r t u p

10092WSAVERNOTSUPPORTED
Winsock.dll Winsock
10093WSANOTINITIALISED
Winsock WSAStartup
10101WSAEDISCON
W S A R e c vW S A R e c v F r o m
ATM
10102WSAENOMORE
W S A L o o k u p S e r v i c e N e x t
WSA_E_NO_MORE
WSA_E_NO_MORE
10103WSAECANCELLED
W S A L o o k u p S e r v i c e N e x t
WSALookupServiceEnd WSALookupServiceNext
W S A _ E _ C A N C E L L E D
WSA_E_CANCELLED

CWinsock 485
10104WSAEINVALIDPROCTABLE

14
10105WSAEINVALIDPROVIDER

Winsock
10106WSAEPROVIDERFAILEDINIT

DLL
10107WSASYSCALLFAILURE

10108W S A S E RV I C E _ N O T _ F O U N D

10
10109WSATYPE_NOT_FOUND
S e r v i c e
C l a s s W S A I n s t a l l S e r v i c e C l a s s

10110WSA_E_NO_MORE
W S A L o o k u p S e r v i c e N e x t
W S A E N O M O R E
WSAENOMORE
10111WSA_E_CANCELLED
W S A L o o k u p S e r v i c e N e x t
WSALookupServiceEnd WSALookupServiceNext
W S A E C A N C E L L E D
WSAECANCELLED
10112WSAEREFUSED

11001WSAHOST_NOT_FOUND
g e t h o s t b y n a m eg e t h o s t b y a d d r
Authoritative Answer Host
11002WSATRY_AGAIN
g e t h o s t b y n a m eg e t h o s t b y a d d r

11003WSANO_RECOVERY
gethostbynamegethostbyaddr

11004WSANO_DATA
486

g e t h o s t b y n a m eg e t h o s t b y a d d r

11005WSA_QOS_RECEIVERS
IP QoS
QoS 12 QoS
11006WSA_QOS_SENDERS
QoS
QoS
11007WSA_QOS_NO_SENDERS
Q o S Q o S Q o S
12
11008WSA_QOS_NO_RECEIVERS
Q o S Q o S Q o S
12
11009WSA_QOS_REQUEST_CONFIRMED
QoS
1 2

11010WSA_QOS_ADMISSION_FAILURE
QoS
11011WSA_QOS_POLICY_FAILURE
QoS

11012WSA_QOS_BAD_STYLE
QoS
1 2

11013WSA_QOS_BAD_OBJECT
FILTERSPEC Q o S FILTERSPEC
12
11014WSA_QOS_TRAFFIC_CTRL_ERROR
F L O W S P E C F L O W S P E C Q o S

11015WSA_QOS_GENERIC_ERROR
QoS QoS
6WSA_INVALID_HANDLE
Wi n 3 2 Wi n s o c k
Win32 WSAWaitForMultipleEvents
8WSA_NOT_ENOUGH_MEMORY

CWinsock 487
Win32
87WSA_INVALID_PARAMETER
Win32
WSAWaitForMultipleEvents
258WSA_WAIT_TIMEOUT
Win32I/O
995WSA_OPERATION_ABORTED
Win32 I/O
SIO_FLUSHI/O
996WSA_IO_INCOMPLETE
I / O Wi n 3 2 I / O
WSAGetOverlappedResults I/O
997WSA_IO_PENDING
Winsock I/O Win32
I / O
8

You might also like