1 /* 2 * tdi.h 3 * 4 * TDI user mode definitions 5 * 6 * This file is part of the w32api package. 7 * 8 * Contributors: 9 * Created by Casper S. Hornstrup <chorns (at) users.sourceforge.net> 10 * 11 * THIS SOFTWARE IS NOT COPYRIGHTED 12 * 13 * This source code is offered for use in the public domain. You may 14 * use, modify or distribute it freely. 15 * 16 * This code is distributed in the hope that it will be useful but 17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 18 * DISCLAIMED. This includes but is not limited to warranties of 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 20 * 21 */ 22 23 #ifndef __TDI_H 24 #define __TDI_H 25 26 #include "ntddtdi.h" 27 #include "tdistat.h" 28 #include "netpnp.h" 29 30 #ifdef __cplusplus 31 extern "C" { 32 #endif 33 34 /* Basic types */ 35 36 typedef LONG TDI_STATUS; 37 typedef PVOID CONNECTION_CONTEXT; 38 39 typedef struct _TDI_CONNECTION_INFORMATION { 40 LONG UserDataLength; 41 PVOID UserData; 42 LONG OptionsLength; 43 PVOID Options; 44 LONG RemoteAddressLength; 45 PVOID RemoteAddress; 46 } TDI_CONNECTION_INFORMATION, *PTDI_CONNECTION_INFORMATION; 47 48 typedef struct _TDI_REQUEST { 49 union { 50 HANDLE AddressHandle; 51 CONNECTION_CONTEXT ConnectionContext; 52 HANDLE ControlChannel; 53 } Handle; 54 PVOID RequestNotifyObject; 55 PVOID RequestContext; 56 TDI_STATUS TdiStatus; 57 } TDI_REQUEST, *PTDI_REQUEST; 58 59 typedef struct _TDI_REQUEST_STATUS { 60 TDI_STATUS Status; 61 PVOID RequestContext; 62 ULONG BytesTransferred; 63 } TDI_REQUEST_STATUS, *PTDI_REQUEST_STATUS; 64 65 typedef struct _TDI_CONNECT_REQUEST { 66 TDI_REQUEST Request; 67 PTDI_CONNECTION_INFORMATION RequestConnectionInformation; 68 PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; 69 LARGE_INTEGER Timeout; 70 } TDI_REQUEST_CONNECT, *PTDI_REQUEST_CONNECT; 71 72 typedef struct _TDI_REQUEST_ACCEPT { 73 TDI_REQUEST Request; 74 PTDI_CONNECTION_INFORMATION RequestConnectionInformation; 75 PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; 76 } TDI_REQUEST_ACCEPT, *PTDI_REQUEST_ACCEPT; 77 78 typedef struct _TDI_REQUEST_LISTEN { 79 TDI_REQUEST Request; 80 PTDI_CONNECTION_INFORMATION RequestConnectionInformation; 81 PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; 82 USHORT ListenFlags; 83 } TDI_REQUEST_LISTEN, *PTDI_REQUEST_LISTEN; 84 85 typedef struct _TDI_DISCONNECT_REQUEST { 86 TDI_REQUEST Request; 87 LARGE_INTEGER Timeout; 88 } TDI_REQUEST_DISCONNECT, *PTDI_REQUEST_DISCONNECT; 89 90 typedef struct _TDI_REQUEST_SEND { 91 TDI_REQUEST Request; 92 USHORT SendFlags; 93 } TDI_REQUEST_SEND, *PTDI_REQUEST_SEND; 94 95 typedef struct _TDI_REQUEST_RECEIVE { 96 TDI_REQUEST Request; 97 USHORT ReceiveFlags; 98 } TDI_REQUEST_RECEIVE, *PTDI_REQUEST_RECEIVE; 99 100 typedef struct _TDI_REQUEST_SEND_DATAGRAM { 101 TDI_REQUEST Request; 102 PTDI_CONNECTION_INFORMATION SendDatagramInformation; 103 } TDI_REQUEST_SEND_DATAGRAM, *PTDI_REQUEST_SEND_DATAGRAM; 104 105 typedef struct _TDI_REQUEST_RECEIVE_DATAGRAM { 106 TDI_REQUEST Request; 107 PTDI_CONNECTION_INFORMATION ReceiveDatagramInformation; 108 PTDI_CONNECTION_INFORMATION ReturnInformation; 109 USHORT ReceiveFlags; 110 } TDI_REQUEST_RECEIVE_DATAGRAM, *PTDI_REQUEST_RECEIVE_DATAGRAM; 111 112 typedef struct _TDI_REQUEST_SET_EVENT { 113 TDI_REQUEST Request; 114 LONG EventType; 115 PVOID EventHandler; 116 PVOID EventContext; 117 } TDI_REQUEST_SET_EVENT_HANDLER, *PTDI_REQUEST_SET_EVENT_HANDLER; 118 119 #define TDI_RECEIVE_BROADCAST 0x00000004 120 #define TDI_RECEIVE_MULTICAST 0x00000008 121 #define TDI_RECEIVE_PARTIAL 0x00000010 122 #define TDI_RECEIVE_NORMAL 0x00000020 123 #define TDI_RECEIVE_EXPEDITED 0x00000040 124 #define TDI_RECEIVE_PEEK 0x00000080 125 #define TDI_RECEIVE_NO_RESPONSE_EXP 0x00000100 126 #define TDI_RECEIVE_COPY_LOOKAHEAD 0x00000200 127 #define TDI_RECEIVE_ENTIRE_MESSAGE 0x00000400 128 #define TDI_RECEIVE_AT_DISPATCH_LEVEL 0x00000800 129 #define TDI_RECEIVE_CONTROL_INFO 0x00001000 130 131 /* Listen flags */ 132 #define TDI_QUERY_ACCEPT 0x00000001 133 134 /* Options used for both SendOptions and ReceiveIndicators */ 135 #define TDI_SEND_EXPEDITED 0x0020 136 #define TDI_SEND_PARTIAL 0x0040 137 #define TDI_SEND_NO_RESPONSE_EXPECTED 0x0080 138 #define TDI_SEND_NON_BLOCKING 0x0100 139 #define TDI_SEND_AND_DISCONNECT 0x0200 140 141 /* Disconnect Flags */ 142 #define TDI_DISCONNECT_WAIT 0x0001 143 #define TDI_DISCONNECT_ABORT 0x0002 144 #define TDI_DISCONNECT_RELEASE 0x0004 145 146 /* TdiRequest structure for TdiQueryInformation request */ 147 typedef struct _TDI_REQUEST_QUERY_INFORMATION { 148 TDI_REQUEST Request; 149 ULONG QueryType; 150 PTDI_CONNECTION_INFORMATION RequestConnectionInformation; 151 } TDI_REQUEST_QUERY_INFORMATION, *PTDI_REQUEST_QUERY_INFORMATION; 152 153 /* TdiRequest structure for TdiSetInformation request */ 154 typedef struct _TDI_REQUEST_SET_INFORMATION { 155 TDI_REQUEST Request; 156 ULONG SetType; 157 PTDI_CONNECTION_INFORMATION RequestConnectionInformation; 158 } TDI_REQUEST_SET_INFORMATION, *PTDI_REQUEST_SET_INFORMATION; 159 160 typedef TDI_REQUEST_SET_INFORMATION TDI_REQ_SET_INFORMATION, *PTDI_REQ_SET_INFORMATION; 161 162 typedef union _TDI_REQUEST_TYPE { 163 TDI_REQUEST_ACCEPT TdiAccept; 164 TDI_REQUEST_CONNECT TdiConnect; 165 TDI_REQUEST_DISCONNECT TdiDisconnect; 166 TDI_REQUEST_LISTEN TdiListen; 167 TDI_REQUEST_QUERY_INFORMATION TdiQueryInformation; 168 TDI_REQUEST_RECEIVE TdiReceive; 169 TDI_REQUEST_RECEIVE_DATAGRAM TdiReceiveDatagram; 170 TDI_REQUEST_SEND TdiSend; 171 TDI_REQUEST_SEND_DATAGRAM TdiSendDatagram; 172 TDI_REQUEST_SET_EVENT_HANDLER TdiSetEventHandler; 173 TDI_REQUEST_SET_INFORMATION TdiSetInformation; 174 } TDI_REQUEST_TYPE, *PTDI_REQUEST_TYPE; 175 176 /* Query information types */ 177 178 /* Generic query info types that must be supported by all transports */ 179 #define TDI_QUERY_BROADCAST_ADDRESS 0x00000001 180 #define TDI_QUERY_PROVIDER_INFO 0x00000002 181 #define TDI_QUERY_ADDRESS_INFO 0x00000003 182 #define TDI_QUERY_CONNECTION_INFO 0x00000004 183 #define TDI_QUERY_PROVIDER_STATISTICS 0x00000005 184 #define TDI_QUERY_DATAGRAM_INFO 0x00000006 185 #define TDI_QUERY_DATA_LINK_ADDRESS 0x00000007 186 #define TDI_QUERY_NETWORK_ADDRESS 0x00000008 187 #define TDI_QUERY_MAX_DATAGRAM_INFO 0x00000009 188 189 /* Netbios specific query information types */ 190 #define TDI_QUERY_ADAPTER_STATUS 0x00000100 191 #define TDI_QUERY_SESSION_STATUS 0x00000200 192 #define TDI_QUERY_FIND_NAME 0x00000300 193 194 /* Structures used for TdiQueryInformation and TdiSetInformation */ 195 196 typedef struct _TDI_ENDPOINT_INFO { 197 ULONG State; 198 ULONG Event; 199 ULONG TransmittedTsdus; 200 ULONG ReceivedTsdus; 201 ULONG TransmissionErrors; 202 ULONG ReceiveErrors; 203 ULONG MinimumLookaheadData; 204 ULONG MaximumLookaheadData; 205 ULONG PriorityLevel; 206 ULONG SecurityLevel; 207 ULONG SecurityCompartment; 208 } TDI_ENDPOINT_INFO, *PTDI_ENDPOINT_INFO; 209 210 typedef struct _TDI_CONNECTION_INFO { 211 ULONG State; 212 ULONG Event; 213 ULONG TransmittedTsdus; 214 ULONG ReceivedTsdus; 215 ULONG TransmissionErrors; 216 ULONG ReceiveErrors; 217 LARGE_INTEGER Throughput; 218 LARGE_INTEGER Delay; 219 ULONG SendBufferSize; 220 ULONG ReceiveBufferSize; 221 BOOLEAN Unreliable; 222 } TDI_CONNECTION_INFO, *PTDI_CONNECTION_INFO; 223 224 typedef struct _TDI_DATAGRAM_INFO { 225 ULONG MaximumDatagramBytes; 226 ULONG MaximumDatagramCount; 227 } TDI_DATAGRAM_INFO, *PTDI_DATAGRAM_INFO; 228 229 typedef struct _TDI_MAX_DATAGRAM_INFO { 230 ULONG MaxDatagramSize; 231 } TDI_MAX_DATAGRAM_INFO, *PTDI_MAX_DATAGRAM_INFO; 232 233 typedef struct _TDI_PROVIDER_INFO { 234 ULONG Version; 235 ULONG MaxSendSize; 236 ULONG MaxConnectionUserData; 237 ULONG MaxDatagramSize; 238 ULONG ServiceFlags; 239 ULONG MinimumLookaheadData; 240 ULONG MaximumLookaheadData; 241 ULONG NumberOfResources; 242 LARGE_INTEGER StartTime; 243 } TDI_PROVIDER_INFO, *PTDI_PROVIDER_INFO; 244 245 #define TDI_SERVICE_CONNECTION_MODE 0x00000001 246 #define TDI_SERVICE_ORDERLY_RELEASE 0x00000002 247 #define TDI_SERVICE_CONNECTIONLESS_MODE 0x00000004 248 #define TDI_SERVICE_ERROR_FREE_DELIVERY 0x00000008 249 #define TDI_SERVICE_SECURITY_LEVEL 0x00000010 250 #define TDI_SERVICE_BROADCAST_SUPPORTED 0x00000020 251 #define TDI_SERVICE_MULTICAST_SUPPORTED 0x00000040 252 #define TDI_SERVICE_DELAYED_ACCEPTANCE 0x00000080 253 #define TDI_SERVICE_EXPEDITED_DATA 0x00000100 254 #define TDI_SERVICE_INTERNAL_BUFFERING 0x00000200 255 #define TDI_SERVICE_ROUTE_DIRECTED 0x00000400 256 #define TDI_SERVICE_NO_ZERO_LENGTH 0x00000800 257 #define TDI_SERVICE_POINT_TO_POINT 0x00001000 258 #define TDI_SERVICE_MESSAGE_MODE 0x00002000 259 #define TDI_SERVICE_HALF_DUPLEX 0x00004000 260 #define TDI_SERVICE_DGRAM_CONNECTION 0x00008000 261 #define TDI_SERVICE_FORCE_ACCESS_CHECK 0x00010000 262 #define TDI_SERVICE_SEND_AND_DISCONNECT 0x00020000 263 #define TDI_SERVICE_DIRECT_ACCEPT 0x00040000 264 #define TDI_SERVICE_ACCEPT_LOCAL_ADDR 0x00080000 265 266 typedef struct _TDI_PROVIDER_RESOURCE_STATS { 267 ULONG ResourceId; 268 ULONG MaximumResourceUsed; 269 ULONG AverageResourceUsed; 270 ULONG ResourceExhausted; 271 } TDI_PROVIDER_RESOURCE_STATS, *PTDI_PROVIDER_RESOURCE_STATS; 272 273 typedef struct _TDI_PROVIDER_STATISTICS { 274 ULONG Version; 275 ULONG OpenConnections; 276 ULONG ConnectionsAfterNoRetry; 277 ULONG ConnectionsAfterRetry; 278 ULONG LocalDisconnects; 279 ULONG RemoteDisconnects; 280 ULONG LinkFailures; 281 ULONG AdapterFailures; 282 ULONG SessionTimeouts; 283 ULONG CancelledConnections; 284 ULONG RemoteResourceFailures; 285 ULONG LocalResourceFailures; 286 ULONG NotFoundFailures; 287 ULONG NoListenFailures; 288 ULONG DatagramsSent; 289 LARGE_INTEGER DatagramBytesSent; 290 ULONG DatagramsReceived; 291 LARGE_INTEGER DatagramBytesReceived; 292 ULONG PacketsSent; 293 ULONG PacketsReceived; 294 ULONG DataFramesSent; 295 LARGE_INTEGER DataFrameBytesSent; 296 ULONG DataFramesReceived; 297 LARGE_INTEGER DataFrameBytesReceived; 298 ULONG DataFramesResent; 299 LARGE_INTEGER DataFrameBytesResent; 300 ULONG DataFramesRejected; 301 LARGE_INTEGER DataFrameBytesRejected; 302 ULONG ResponseTimerExpirations; 303 ULONG AckTimerExpirations; 304 ULONG MaximumSendWindow; 305 ULONG AverageSendWindow; 306 ULONG PiggybackAckQueued; 307 ULONG PiggybackAckTimeouts; 308 LARGE_INTEGER WastedPacketSpace; 309 ULONG WastedSpacePackets; 310 ULONG NumberOfResources; 311 TDI_PROVIDER_RESOURCE_STATS ResourceStats[1]; 312 } TDI_PROVIDER_STATISTICS, *PTDI_PROVIDER_STATISTICS; 313 314 #define TDI_EVENT_CONNECT 0 315 #define TDI_EVENT_DISCONNECT 1 316 #define TDI_EVENT_ERROR 2 317 #define TDI_EVENT_RECEIVE 3 318 #define TDI_EVENT_RECEIVE_DATAGRAM 4 319 #define TDI_EVENT_RECEIVE_EXPEDITED 5 320 #define TDI_EVENT_SEND_POSSIBLE 6 321 322 typedef struct _TDI_REQUEST_ASSOCIATE { 323 TDI_REQUEST Request; 324 HANDLE AddressHandle; 325 } TDI_REQUEST_ASSOCIATE_ADDRESS, *PTDI_REQUEST_ASSOCIATE_ADDRESS; 326 327 #define NDIS_PACKET_POOL_TAG_FOR_NWLNKIPX 'iPDN' 328 #define NDIS_PACKET_POOL_TAG_FOR_NWLNKSPX 'sPDN' 329 #define NDIS_PACKET_POOL_TAG_FOR_NWLNKNB 'nPDN' 330 #define NDIS_PACKET_POOL_TAG_FOR_TCPIP 'tPDN' 331 #define NDIS_PACKET_POOL_TAG_FOR_NBF 'bPDN' 332 #define NDIS_PACKET_POOL_TAG_FOR_APPLETALK 'aPDN' 333 334 typedef struct _TA_ADDRESS { 335 USHORT AddressLength; 336 USHORT AddressType; 337 UCHAR Address[1]; 338 } TA_ADDRESS, *PTA_ADDRESS; 339 340 #define TDI_ADDRESS_TYPE_UNSPEC 0 341 #define TDI_ADDRESS_TYPE_UNIX 1 342 #define TDI_ADDRESS_TYPE_IP 2 343 #define TDI_ADDRESS_TYPE_IMPLINK 3 344 #define TDI_ADDRESS_TYPE_PUP 4 345 #define TDI_ADDRESS_TYPE_CHAOS 5 346 #define TDI_ADDRESS_TYPE_NS 6 347 #define TDI_ADDRESS_TYPE_IPX 6 348 #define TDI_ADDRESS_TYPE_NBS 7 349 #define TDI_ADDRESS_TYPE_ECMA 8 350 #define TDI_ADDRESS_TYPE_DATAKIT 9 351 #define TDI_ADDRESS_TYPE_CCITT 10 352 #define TDI_ADDRESS_TYPE_SNA 11 353 #define TDI_ADDRESS_TYPE_DECnet 12 354 #define TDI_ADDRESS_TYPE_DLI 13 355 #define TDI_ADDRESS_TYPE_LAT 14 356 #define TDI_ADDRESS_TYPE_HYLINK 15 357 #define TDI_ADDRESS_TYPE_APPLETALK 16 358 #define TDI_ADDRESS_TYPE_NETBIOS 17 359 #define TDI_ADDRESS_TYPE_8022 18 360 #define TDI_ADDRESS_TYPE_OSI_TSAP 19 361 #define TDI_ADDRESS_TYPE_NETONE 20 362 #define TDI_ADDRESS_TYPE_VNS 21 363 #define TDI_ADDRESS_TYPE_NETBIOS_EX 22 364 #define TDI_ADDRESS_TYPE_IP6 23 365 #define TDI_ADDRESS_TYPE_NETBIOS_UNICODE_EX 24 366 367 #define TdiTransportAddress "TransportAddress" 368 #define TdiConnectionContext "ConnectionContext" 369 #define TDI_TRANSPORT_ADDRESS_LENGTH (sizeof(TdiTransportAddress) - 1) 370 #define TDI_CONNECTION_CONTEXT_LENGTH (sizeof(TdiConnectionContext) - 1) 371 372 typedef struct _TRANSPORT_ADDRESS { 373 LONG TAAddressCount; 374 TA_ADDRESS Address[1]; 375 } TRANSPORT_ADDRESS, *PTRANSPORT_ADDRESS; 376 377 typedef struct _TDI_ACTION_HEADER { 378 ULONG TransportId; 379 USHORT ActionCode; 380 USHORT Reserved; 381 } TDI_ACTION_HEADER, *PTDI_ACTION_HEADER; 382 383 typedef struct _TDI_ADDRESS_INFO { 384 ULONG ActivityCount; 385 TRANSPORT_ADDRESS Address; 386 } TDI_ADDRESS_INFO, *PTDI_ADDRESS_INFO; 387 388 #include "pshpack1.h" 389 390 typedef struct _TDI_ADDRESS_8022 { 391 UCHAR MACAddress[6]; 392 } TDI_ADDRESS_8022, *PTDI_ADDRESS_8022; 393 394 #define TDI_ADDRESS_LENGTH_8022 sizeof(TDI_ADDRESS_8022); 395 396 typedef struct _TDI_ADDRESS_APPLETALK { 397 USHORT Network; 398 UCHAR Node; 399 UCHAR Socket; 400 } TDI_ADDRESS_APPLETALK, *PTDI_ADDRESS_APPLETALK; 401 402 #define TDI_ADDRESS_LENGTH_APPLETALK sizeof(TDI_ADDRESS_APPLETALK) 403 404 typedef struct _TDI_ADDRESS_IP { 405 USHORT sin_port; 406 ULONG in_addr; 407 UCHAR sin_zero[8]; 408 } TDI_ADDRESS_IP, *PTDI_ADDRESS_IP; 409 410 #define TDI_ADDRESS_LENGTH_IP sizeof(TDI_ADDRESS_IP) 411 412 typedef struct _TDI_ADDRESS_IPX { 413 ULONG NetworkAddress; 414 UCHAR NodeAddress[6]; 415 USHORT Socket; 416 } TDI_ADDRESS_IPX, *PTDI_ADDRESS_IPX; 417 418 #define TDI_ADDRESS_LENGTH_IPX sizeof(TDI_ADDRESS_IPX) 419 420 /* TDI_ADDRESS_NETBIOS.NetbiosNameType constants */ 421 #define TDI_ADDRESS_NETBIOS_TYPE_UNIQUE 0x0000 422 #define TDI_ADDRESS_NETBIOS_TYPE_GROUP 0x0001 423 #define TDI_ADDRESS_NETBIOS_TYPE_QUICK_UNIQUE 0x0002 424 #define TDI_ADDRESS_NETBIOS_TYPE_QUICK_GROUP 0x0003 425 426 typedef struct _TDI_ADDRESS_NETBIOS { 427 USHORT NetbiosNameType; 428 UCHAR NetbiosName[16]; 429 } TDI_ADDRESS_NETBIOS, *PTDI_ADDRESS_NETBIOS; 430 431 #define TDI_ADDRESS_LENGTH_NETBIOS sizeof(TDI_ADDRESS_NETBIOS) 432 433 typedef struct _TDI_ADDRESS_NETBIOS_EX { 434 UCHAR EndpointName[16]; 435 TDI_ADDRESS_NETBIOS NetbiosAddress; 436 } TDI_ADDRESS_NETBIOS_EX, *PTDI_ADDRESS_NETBIOS_EX; 437 438 #define TDI_ADDRESS_LENGTH_NETBIOS_EX sizeof(TDI_ADDRESS_NETBIOS_EX) 439 440 /* TDI_ADDRESS_NETONE.NetoneNameType constants */ 441 #define TDI_ADDRESS_NETONE_TYPE_UNIQUE 0x0000 442 #define TDI_ADDRESS_NETONE_TYPE_ROTORED 0x0001 443 444 typedef struct _TDI_ADDRESS_NETONE { 445 USHORT NetoneNameType; 446 UCHAR NetoneName[20]; 447 } TDI_ADDRESS_NETONE, *PTDI_ADDRESS_NETONE; 448 449 #define TDI_ADDRESS_LENGTH_NETONE sizeof(TDI_ADDRESS_NETONE) 450 451 typedef struct _TDI_ADDRESS_NS 452 { 453 ULONG NetworkAddress; 454 UCHAR NodeAddress[6]; 455 USHORT Socket; 456 } TDI_ADDRESS_NS, *PTDI_ADDRESS_NS; 457 458 #define TDI_ADDRESS_LENGTH_NS sizeof(TDI_ADDRESS_NS) 459 460 #define ISO_MAX_ADDR_LENGTH 64 461 462 /* TDI_ADDRESS_OSI_TSAP.tp_addr_type constants */ 463 #define ISO_HIERARCHICAL 0 464 #define ISO_NON_HIERARCHICAL 1 465 466 typedef struct _TDI_ADDRESS_OSI_TSAP { 467 USHORT tp_addr_type; 468 USHORT tp_taddr_len; 469 USHORT tp_tsel_len; 470 UCHAR tp_addr[ISO_MAX_ADDR_LENGTH]; 471 } TDI_ADDRESS_OSI_TSAP, *PTDI_ADDRESS_OSI_TSAP; 472 473 #define TDI_ADDRESS_LENGTH_OSI_TSAP sizeof(TDI_ADDRESS_OSI_TSAP) 474 475 typedef struct _TDI_ADDRESS_VNS { 476 UCHAR net_address[4]; 477 UCHAR subnet_addr[2]; 478 UCHAR port[2]; 479 UCHAR hops; 480 UCHAR filler[5]; 481 } TDI_ADDRESS_VNS, *PTDI_ADDRESS_VNS; 482 483 #define TDI_ADDRESS_LENGTH_VNS sizeof(TDI_ADDRESS_VNS) 484 485 typedef struct _TDI_ADDRESS_IP6 { 486 USHORT sin6_port; 487 ULONG sin6_flowinfo; 488 USHORT sin6_addr[8]; 489 ULONG sin6_scope_id; 490 } TDI_ADDRESS_IP6, *PTDI_ADDRESS_IP6; 491 492 #define TDI_ADDRESS_LENGTH_IP6 sizeof(TDI_ADDRESS_IP6) 493 494 enum eNameBufferType { 495 NBT_READONLY = 0, 496 NBT_WRITEONLY, 497 NBT_READWRITE, 498 NBT_WRITTEN 499 }; 500 501 typedef struct _TDI_ADDRESS_NETBIOS_UNICODE_EX { 502 USHORT NetbiosNameType; 503 enum eNameBufferType NameBufferType; 504 UNICODE_STRING EndpointName; 505 UNICODE_STRING RemoteName; 506 WCHAR EndpointBuffer[17]; 507 WCHAR RemoteNameBuffer[1]; 508 } TDI_ADDRESS_NETBIOS_UNICODE_EX, *PTDI_ADDRESS_NETBIOS_UNICODE_EX; 509 510 typedef struct _TA_APPLETALK_ADDR { 511 LONG TAAddressCount; 512 struct _AddrAtalk { 513 USHORT AddressLength; 514 USHORT AddressType; 515 TDI_ADDRESS_APPLETALK Address[1]; 516 } Address[1]; 517 } TA_APPLETALK_ADDRESS, *PTA_APPLETALK_ADDRESS; 518 519 typedef struct _TA_ADDRESS_IP { 520 LONG TAAddressCount; 521 struct _AddrIp { 522 USHORT AddressLength; 523 USHORT AddressType; 524 TDI_ADDRESS_IP Address[1]; 525 } Address[1]; 526 } TA_IP_ADDRESS, *PTA_IP_ADDRESS; 527 528 typedef struct _TA_ADDRESS_IPX { 529 LONG TAAddressCount; 530 struct _AddrIpx { 531 USHORT AddressLength; 532 USHORT AddressType; 533 TDI_ADDRESS_IPX Address[1]; 534 } Address[1]; 535 } TA_IPX_ADDRESS, *PTA_IPX_ADDRESS; 536 537 typedef struct _TA_NETBIOS_ADDRESS { 538 LONG TAAddressCount; 539 struct _Addr{ 540 USHORT AddressLength; 541 USHORT AddressType; 542 TDI_ADDRESS_NETBIOS Address[1]; 543 } Address[1]; 544 } TA_NETBIOS_ADDRESS, *PTA_NETBIOS_ADDRESS; 545 546 typedef struct _TA_ADDRESS_NS { 547 LONG TAAddressCount; 548 struct _AddrNs { 549 USHORT AddressLength; 550 USHORT AddressType; 551 TDI_ADDRESS_NS Address[1]; 552 } Address[1]; 553 } TA_NS_ADDRESS, *PTA_NS_ADDRESS; 554 555 typedef struct _TA_ADDRESS_VNS { 556 LONG TAAddressCount; 557 struct _AddrVns { 558 USHORT AddressLength; 559 USHORT AddressType; 560 TDI_ADDRESS_VNS Address[1]; 561 } Address[1]; 562 } TA_VNS_ADDRESS, *PTA_VNS_ADDRESS; 563 564 typedef struct _TA_ADDRESS_IP6 { 565 LONG TAAddressCount; 566 struct _AddrIp6 { 567 USHORT AddressLength; 568 USHORT AddressType; 569 TDI_ADDRESS_IP6 Address[1]; 570 } Address [1]; 571 } TA_IP6_ADDRESS, *PTA_IP6_ADDRESS; 572 573 typedef struct _TA_ADDRESS_NETBIOS_UNICODE_EX { 574 LONG TAAddressCount; 575 struct _AddrNetbiosWCharEx { 576 USHORT AddressLength; 577 USHORT AddressType; 578 TDI_ADDRESS_NETBIOS_UNICODE_EX Address[1]; 579 } Address [1]; 580 } TA_NETBIOS_UNICODE_EX_ADDRESS, *PTA_NETBIOS_UNICODE_EX_ADDRESS; 581 582 #include "poppack.h" 583 584 #ifdef __cplusplus 585 } 586 #endif 587 588 #endif /* __TDI_H */ 589