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@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 #define TDI_SERVICE_ADDRESS_SECURITY 0x00100000 266 #define TDI_SERVICE_PREPOST_RECVS 0x00200000 267 #define TDI_SERVICE_NO_PUSH 0x00400000 268 269 typedef struct _TDI_PROVIDER_RESOURCE_STATS { 270 ULONG ResourceId; 271 ULONG MaximumResourceUsed; 272 ULONG AverageResourceUsed; 273 ULONG ResourceExhausted; 274 } TDI_PROVIDER_RESOURCE_STATS, *PTDI_PROVIDER_RESOURCE_STATS; 275 276 typedef struct _TDI_PROVIDER_STATISTICS { 277 ULONG Version; 278 ULONG OpenConnections; 279 ULONG ConnectionsAfterNoRetry; 280 ULONG ConnectionsAfterRetry; 281 ULONG LocalDisconnects; 282 ULONG RemoteDisconnects; 283 ULONG LinkFailures; 284 ULONG AdapterFailures; 285 ULONG SessionTimeouts; 286 ULONG CancelledConnections; 287 ULONG RemoteResourceFailures; 288 ULONG LocalResourceFailures; 289 ULONG NotFoundFailures; 290 ULONG NoListenFailures; 291 ULONG DatagramsSent; 292 LARGE_INTEGER DatagramBytesSent; 293 ULONG DatagramsReceived; 294 LARGE_INTEGER DatagramBytesReceived; 295 ULONG PacketsSent; 296 ULONG PacketsReceived; 297 ULONG DataFramesSent; 298 LARGE_INTEGER DataFrameBytesSent; 299 ULONG DataFramesReceived; 300 LARGE_INTEGER DataFrameBytesReceived; 301 ULONG DataFramesResent; 302 LARGE_INTEGER DataFrameBytesResent; 303 ULONG DataFramesRejected; 304 LARGE_INTEGER DataFrameBytesRejected; 305 ULONG ResponseTimerExpirations; 306 ULONG AckTimerExpirations; 307 ULONG MaximumSendWindow; 308 ULONG AverageSendWindow; 309 ULONG PiggybackAckQueued; 310 ULONG PiggybackAckTimeouts; 311 LARGE_INTEGER WastedPacketSpace; 312 ULONG WastedSpacePackets; 313 ULONG NumberOfResources; 314 TDI_PROVIDER_RESOURCE_STATS ResourceStats[1]; 315 } TDI_PROVIDER_STATISTICS, *PTDI_PROVIDER_STATISTICS; 316 317 #define TDI_EVENT_CONNECT 0 318 #define TDI_EVENT_DISCONNECT 1 319 #define TDI_EVENT_ERROR 2 320 #define TDI_EVENT_RECEIVE 3 321 #define TDI_EVENT_RECEIVE_DATAGRAM 4 322 #define TDI_EVENT_RECEIVE_EXPEDITED 5 323 #define TDI_EVENT_SEND_POSSIBLE 6 324 325 typedef struct _TDI_REQUEST_ASSOCIATE { 326 TDI_REQUEST Request; 327 HANDLE AddressHandle; 328 } TDI_REQUEST_ASSOCIATE_ADDRESS, *PTDI_REQUEST_ASSOCIATE_ADDRESS; 329 330 #define NDIS_PACKET_POOL_TAG_FOR_NWLNKIPX 'iPDN' 331 #define NDIS_PACKET_POOL_TAG_FOR_NWLNKSPX 'sPDN' 332 #define NDIS_PACKET_POOL_TAG_FOR_NWLNKNB 'nPDN' 333 #define NDIS_PACKET_POOL_TAG_FOR_TCPIP 'tPDN' 334 #define NDIS_PACKET_POOL_TAG_FOR_NBF 'bPDN' 335 #define NDIS_PACKET_POOL_TAG_FOR_APPLETALK 'aPDN' 336 337 typedef struct _TA_ADDRESS { 338 USHORT AddressLength; 339 USHORT AddressType; 340 UCHAR Address[1]; 341 } TA_ADDRESS, *PTA_ADDRESS; 342 343 #define TDI_ADDRESS_TYPE_UNSPEC 0 344 #define TDI_ADDRESS_TYPE_UNIX 1 345 #define TDI_ADDRESS_TYPE_IP 2 346 #define TDI_ADDRESS_TYPE_IMPLINK 3 347 #define TDI_ADDRESS_TYPE_PUP 4 348 #define TDI_ADDRESS_TYPE_CHAOS 5 349 #define TDI_ADDRESS_TYPE_NS 6 350 #define TDI_ADDRESS_TYPE_IPX 6 351 #define TDI_ADDRESS_TYPE_NBS 7 352 #define TDI_ADDRESS_TYPE_ECMA 8 353 #define TDI_ADDRESS_TYPE_DATAKIT 9 354 #define TDI_ADDRESS_TYPE_CCITT 10 355 #define TDI_ADDRESS_TYPE_SNA 11 356 #define TDI_ADDRESS_TYPE_DECnet 12 357 #define TDI_ADDRESS_TYPE_DLI 13 358 #define TDI_ADDRESS_TYPE_LAT 14 359 #define TDI_ADDRESS_TYPE_HYLINK 15 360 #define TDI_ADDRESS_TYPE_APPLETALK 16 361 #define TDI_ADDRESS_TYPE_NETBIOS 17 362 #define TDI_ADDRESS_TYPE_8022 18 363 #define TDI_ADDRESS_TYPE_OSI_TSAP 19 364 #define TDI_ADDRESS_TYPE_NETONE 20 365 #define TDI_ADDRESS_TYPE_VNS 21 366 #define TDI_ADDRESS_TYPE_NETBIOS_EX 22 367 #define TDI_ADDRESS_TYPE_IP6 23 368 #define TDI_ADDRESS_TYPE_NETBIOS_UNICODE_EX 24 369 370 #define TdiTransportAddress "TransportAddress" 371 #define TdiConnectionContext "ConnectionContext" 372 #define TDI_TRANSPORT_ADDRESS_LENGTH (sizeof(TdiTransportAddress) - 1) 373 #define TDI_CONNECTION_CONTEXT_LENGTH (sizeof(TdiConnectionContext) - 1) 374 375 typedef struct _TRANSPORT_ADDRESS { 376 LONG TAAddressCount; 377 TA_ADDRESS Address[1]; 378 } TRANSPORT_ADDRESS, *PTRANSPORT_ADDRESS; 379 380 typedef struct _TDI_ACTION_HEADER { 381 ULONG TransportId; 382 USHORT ActionCode; 383 USHORT Reserved; 384 } TDI_ACTION_HEADER, *PTDI_ACTION_HEADER; 385 386 typedef struct _TDI_ADDRESS_INFO { 387 ULONG ActivityCount; 388 TRANSPORT_ADDRESS Address; 389 } TDI_ADDRESS_INFO, *PTDI_ADDRESS_INFO; 390 391 #include "pshpack1.h" 392 393 typedef struct _TDI_ADDRESS_8022 { 394 UCHAR MACAddress[6]; 395 } TDI_ADDRESS_8022, *PTDI_ADDRESS_8022; 396 397 #define TDI_ADDRESS_LENGTH_8022 sizeof(TDI_ADDRESS_8022); 398 399 typedef struct _TDI_ADDRESS_APPLETALK { 400 USHORT Network; 401 UCHAR Node; 402 UCHAR Socket; 403 } TDI_ADDRESS_APPLETALK, *PTDI_ADDRESS_APPLETALK; 404 405 #define TDI_ADDRESS_LENGTH_APPLETALK sizeof(TDI_ADDRESS_APPLETALK) 406 407 typedef struct _TDI_ADDRESS_IP { 408 USHORT sin_port; 409 ULONG in_addr; 410 UCHAR sin_zero[8]; 411 } TDI_ADDRESS_IP, *PTDI_ADDRESS_IP; 412 413 #define TDI_ADDRESS_LENGTH_IP sizeof(TDI_ADDRESS_IP) 414 415 typedef struct _TDI_ADDRESS_IPX { 416 ULONG NetworkAddress; 417 UCHAR NodeAddress[6]; 418 USHORT Socket; 419 } TDI_ADDRESS_IPX, *PTDI_ADDRESS_IPX; 420 421 #define TDI_ADDRESS_LENGTH_IPX sizeof(TDI_ADDRESS_IPX) 422 423 /* TDI_ADDRESS_NETBIOS.NetbiosNameType constants */ 424 #define TDI_ADDRESS_NETBIOS_TYPE_UNIQUE 0x0000 425 #define TDI_ADDRESS_NETBIOS_TYPE_GROUP 0x0001 426 #define TDI_ADDRESS_NETBIOS_TYPE_QUICK_UNIQUE 0x0002 427 #define TDI_ADDRESS_NETBIOS_TYPE_QUICK_GROUP 0x0003 428 429 typedef struct _TDI_ADDRESS_NETBIOS { 430 USHORT NetbiosNameType; 431 UCHAR NetbiosName[16]; 432 } TDI_ADDRESS_NETBIOS, *PTDI_ADDRESS_NETBIOS; 433 434 #define TDI_ADDRESS_LENGTH_NETBIOS sizeof(TDI_ADDRESS_NETBIOS) 435 436 typedef struct _TDI_ADDRESS_NETBIOS_EX { 437 UCHAR EndpointName[16]; 438 TDI_ADDRESS_NETBIOS NetbiosAddress; 439 } TDI_ADDRESS_NETBIOS_EX, *PTDI_ADDRESS_NETBIOS_EX; 440 441 #define TDI_ADDRESS_LENGTH_NETBIOS_EX sizeof(TDI_ADDRESS_NETBIOS_EX) 442 443 /* TDI_ADDRESS_NETONE.NetoneNameType constants */ 444 #define TDI_ADDRESS_NETONE_TYPE_UNIQUE 0x0000 445 #define TDI_ADDRESS_NETONE_TYPE_ROTORED 0x0001 446 447 typedef struct _TDI_ADDRESS_NETONE { 448 USHORT NetoneNameType; 449 UCHAR NetoneName[20]; 450 } TDI_ADDRESS_NETONE, *PTDI_ADDRESS_NETONE; 451 452 #define TDI_ADDRESS_LENGTH_NETONE sizeof(TDI_ADDRESS_NETONE) 453 454 typedef struct _TDI_ADDRESS_NS 455 { 456 ULONG NetworkAddress; 457 UCHAR NodeAddress[6]; 458 USHORT Socket; 459 } TDI_ADDRESS_NS, *PTDI_ADDRESS_NS; 460 461 #define TDI_ADDRESS_LENGTH_NS sizeof(TDI_ADDRESS_NS) 462 463 #define ISO_MAX_ADDR_LENGTH 64 464 465 /* TDI_ADDRESS_OSI_TSAP.tp_addr_type constants */ 466 #define ISO_HIERARCHICAL 0 467 #define ISO_NON_HIERARCHICAL 1 468 469 typedef struct _TDI_ADDRESS_OSI_TSAP { 470 USHORT tp_addr_type; 471 USHORT tp_taddr_len; 472 USHORT tp_tsel_len; 473 UCHAR tp_addr[ISO_MAX_ADDR_LENGTH]; 474 } TDI_ADDRESS_OSI_TSAP, *PTDI_ADDRESS_OSI_TSAP; 475 476 #define TDI_ADDRESS_LENGTH_OSI_TSAP sizeof(TDI_ADDRESS_OSI_TSAP) 477 478 typedef struct _TDI_ADDRESS_VNS { 479 UCHAR net_address[4]; 480 UCHAR subnet_addr[2]; 481 UCHAR port[2]; 482 UCHAR hops; 483 UCHAR filler[5]; 484 } TDI_ADDRESS_VNS, *PTDI_ADDRESS_VNS; 485 486 #define TDI_ADDRESS_LENGTH_VNS sizeof(TDI_ADDRESS_VNS) 487 488 typedef struct _TDI_ADDRESS_IP6 { 489 USHORT sin6_port; 490 ULONG sin6_flowinfo; 491 USHORT sin6_addr[8]; 492 ULONG sin6_scope_id; 493 } TDI_ADDRESS_IP6, *PTDI_ADDRESS_IP6; 494 495 #define TDI_ADDRESS_LENGTH_IP6 sizeof(TDI_ADDRESS_IP6) 496 497 enum eNameBufferType { 498 NBT_READONLY = 0, 499 NBT_WRITEONLY, 500 NBT_READWRITE, 501 NBT_WRITTEN 502 }; 503 504 typedef struct _TDI_ADDRESS_NETBIOS_UNICODE_EX { 505 USHORT NetbiosNameType; 506 enum eNameBufferType NameBufferType; 507 UNICODE_STRING EndpointName; 508 UNICODE_STRING RemoteName; 509 WCHAR EndpointBuffer[17]; 510 WCHAR RemoteNameBuffer[1]; 511 } TDI_ADDRESS_NETBIOS_UNICODE_EX, *PTDI_ADDRESS_NETBIOS_UNICODE_EX; 512 513 typedef struct _TA_APPLETALK_ADDR { 514 LONG TAAddressCount; 515 struct _AddrAtalk { 516 USHORT AddressLength; 517 USHORT AddressType; 518 TDI_ADDRESS_APPLETALK Address[1]; 519 } Address[1]; 520 } TA_APPLETALK_ADDRESS, *PTA_APPLETALK_ADDRESS; 521 522 typedef struct _TA_ADDRESS_IP { 523 LONG TAAddressCount; 524 struct _AddrIp { 525 USHORT AddressLength; 526 USHORT AddressType; 527 TDI_ADDRESS_IP Address[1]; 528 } Address[1]; 529 } TA_IP_ADDRESS, *PTA_IP_ADDRESS; 530 531 typedef struct _TA_ADDRESS_IPX { 532 LONG TAAddressCount; 533 struct _AddrIpx { 534 USHORT AddressLength; 535 USHORT AddressType; 536 TDI_ADDRESS_IPX Address[1]; 537 } Address[1]; 538 } TA_IPX_ADDRESS, *PTA_IPX_ADDRESS; 539 540 typedef struct _TA_NETBIOS_ADDRESS { 541 LONG TAAddressCount; 542 struct _Addr{ 543 USHORT AddressLength; 544 USHORT AddressType; 545 TDI_ADDRESS_NETBIOS Address[1]; 546 } Address[1]; 547 } TA_NETBIOS_ADDRESS, *PTA_NETBIOS_ADDRESS; 548 549 typedef struct _TA_ADDRESS_NS { 550 LONG TAAddressCount; 551 struct _AddrNs { 552 USHORT AddressLength; 553 USHORT AddressType; 554 TDI_ADDRESS_NS Address[1]; 555 } Address[1]; 556 } TA_NS_ADDRESS, *PTA_NS_ADDRESS; 557 558 typedef struct _TA_ADDRESS_VNS { 559 LONG TAAddressCount; 560 struct _AddrVns { 561 USHORT AddressLength; 562 USHORT AddressType; 563 TDI_ADDRESS_VNS Address[1]; 564 } Address[1]; 565 } TA_VNS_ADDRESS, *PTA_VNS_ADDRESS; 566 567 typedef struct _TA_ADDRESS_IP6 { 568 LONG TAAddressCount; 569 struct _AddrIp6 { 570 USHORT AddressLength; 571 USHORT AddressType; 572 TDI_ADDRESS_IP6 Address[1]; 573 } Address [1]; 574 } TA_IP6_ADDRESS, *PTA_IP6_ADDRESS; 575 576 typedef struct _TA_ADDRESS_NETBIOS_UNICODE_EX { 577 LONG TAAddressCount; 578 struct _AddrNetbiosWCharEx { 579 USHORT AddressLength; 580 USHORT AddressType; 581 TDI_ADDRESS_NETBIOS_UNICODE_EX Address[1]; 582 } Address [1]; 583 } TA_NETBIOS_UNICODE_EX_ADDRESS, *PTA_NETBIOS_UNICODE_EX_ADDRESS; 584 585 #include "poppack.h" 586 587 #ifdef __cplusplus 588 } 589 #endif 590 591 #endif /* __TDI_H */ 592