Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
tdi.h
00001 /* 00002 * tdi.h 00003 * 00004 * TDI user mode definitions 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 00023 #ifndef __TDI_H 00024 #define __TDI_H 00025 00026 #if __GNUC__ >=3 00027 #pragma GCC system_header 00028 #endif 00029 00030 #ifdef __cplusplus 00031 extern "C" { 00032 #endif 00033 00034 #include "ntddk.h" 00035 #include "ntddtdi.h" 00036 #include "tdistat.h" 00037 #include "netpnp.h" 00038 00039 /* Basic types */ 00040 00041 typedef LONG TDI_STATUS; 00042 typedef PVOID CONNECTION_CONTEXT; 00043 00044 typedef struct _TDI_CONNECTION_INFORMATION { 00045 LONG UserDataLength; 00046 PVOID UserData; 00047 LONG OptionsLength; 00048 PVOID Options; 00049 LONG RemoteAddressLength; 00050 PVOID RemoteAddress; 00051 } TDI_CONNECTION_INFORMATION, *PTDI_CONNECTION_INFORMATION; 00052 00053 typedef struct _TDI_REQUEST { 00054 union { 00055 HANDLE AddressHandle; 00056 CONNECTION_CONTEXT ConnectionContext; 00057 HANDLE ControlChannel; 00058 } Handle; 00059 PVOID RequestNotifyObject; 00060 PVOID RequestContext; 00061 TDI_STATUS TdiStatus; 00062 } TDI_REQUEST, *PTDI_REQUEST; 00063 00064 typedef struct _TDI_REQUEST_STATUS { 00065 TDI_STATUS Status; 00066 PVOID RequestContext; 00067 ULONG BytesTransferred; 00068 } TDI_REQUEST_STATUS, *PTDI_REQUEST_STATUS; 00069 00070 typedef struct _TDI_CONNECT_REQUEST { 00071 TDI_REQUEST Request; 00072 PTDI_CONNECTION_INFORMATION RequestConnectionInformation; 00073 PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; 00074 LARGE_INTEGER Timeout; 00075 } TDI_REQUEST_CONNECT, *PTDI_REQUEST_CONNECT; 00076 00077 typedef struct _TDI_REQUEST_ACCEPT { 00078 TDI_REQUEST Request; 00079 PTDI_CONNECTION_INFORMATION RequestConnectionInformation; 00080 PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; 00081 } TDI_REQUEST_ACCEPT, *PTDI_REQUEST_ACCEPT; 00082 00083 typedef struct _TDI_REQUEST_LISTEN { 00084 TDI_REQUEST Request; 00085 PTDI_CONNECTION_INFORMATION RequestConnectionInformation; 00086 PTDI_CONNECTION_INFORMATION ReturnConnectionInformation; 00087 USHORT ListenFlags; 00088 } TDI_REQUEST_LISTEN, *PTDI_REQUEST_LISTEN; 00089 00090 typedef struct _TDI_DISCONNECT_REQUEST { 00091 TDI_REQUEST Request; 00092 LARGE_INTEGER Timeout; 00093 } TDI_REQUEST_DISCONNECT, *PTDI_REQUEST_DISCONNECT; 00094 00095 typedef struct _TDI_REQUEST_SEND { 00096 TDI_REQUEST Request; 00097 USHORT SendFlags; 00098 } TDI_REQUEST_SEND, *PTDI_REQUEST_SEND; 00099 00100 typedef struct _TDI_REQUEST_RECEIVE { 00101 TDI_REQUEST Request; 00102 USHORT ReceiveFlags; 00103 } TDI_REQUEST_RECEIVE, *PTDI_REQUEST_RECEIVE; 00104 00105 typedef struct _TDI_REQUEST_SEND_DATAGRAM { 00106 TDI_REQUEST Request; 00107 PTDI_CONNECTION_INFORMATION SendDatagramInformation; 00108 } TDI_REQUEST_SEND_DATAGRAM, *PTDI_REQUEST_SEND_DATAGRAM; 00109 00110 typedef struct _TDI_REQUEST_RECEIVE_DATAGRAM { 00111 TDI_REQUEST Request; 00112 PTDI_CONNECTION_INFORMATION ReceiveDatagramInformation; 00113 PTDI_CONNECTION_INFORMATION ReturnInformation; 00114 USHORT ReceiveFlags; 00115 } TDI_REQUEST_RECEIVE_DATAGRAM, *PTDI_REQUEST_RECEIVE_DATAGRAM; 00116 00117 typedef struct _TDI_REQUEST_SET_EVENT { 00118 TDI_REQUEST Request; 00119 LONG EventType; 00120 PVOID EventHandler; 00121 PVOID EventContext; 00122 } TDI_REQUEST_SET_EVENT_HANDLER, *PTDI_REQUEST_SET_EVENT_HANDLER; 00123 00124 #define TDI_RECEIVE_BROADCAST 0x00000004 00125 #define TDI_RECEIVE_MULTICAST 0x00000008 00126 #define TDI_RECEIVE_PARTIAL 0x00000010 00127 #define TDI_RECEIVE_NORMAL 0x00000020 00128 #define TDI_RECEIVE_EXPEDITED 0x00000040 00129 #define TDI_RECEIVE_PEEK 0x00000080 00130 #define TDI_RECEIVE_NO_RESPONSE_EXP 0x00000100 00131 #define TDI_RECEIVE_COPY_LOOKAHEAD 0x00000200 00132 #define TDI_RECEIVE_ENTIRE_MESSAGE 0x00000400 00133 #define TDI_RECEIVE_AT_DISPATCH_LEVEL 0x00000800 00134 #define TDI_RECEIVE_CONTROL_INFO 0x00001000 00135 00136 /* Listen flags */ 00137 #define TDI_QUERY_ACCEPT 0x00000001 00138 00139 /* Options used for both SendOptions and ReceiveIndicators */ 00140 #define TDI_SEND_EXPEDITED 0x0020 00141 #define TDI_SEND_PARTIAL 0x0040 00142 #define TDI_SEND_NO_RESPONSE_EXPECTED 0x0080 00143 #define TDI_SEND_NON_BLOCKING 0x0100 00144 #define TDI_SEND_AND_DISCONNECT 0x0200 00145 00146 /* Disconnect Flags */ 00147 #define TDI_DISCONNECT_WAIT 0x0001 00148 #define TDI_DISCONNECT_ABORT 0x0002 00149 #define TDI_DISCONNECT_RELEASE 0x0004 00150 00151 /* TdiRequest structure for TdiQueryInformation request */ 00152 typedef struct _TDI_REQUEST_QUERY_INFORMATION { 00153 TDI_REQUEST Request; 00154 ULONG QueryType; 00155 PTDI_CONNECTION_INFORMATION RequestConnectionInformation; 00156 } TDI_REQUEST_QUERY_INFORMATION, *PTDI_REQUEST_QUERY_INFORMATION; 00157 00158 /* TdiRequest structure for TdiSetInformation request */ 00159 typedef struct _TDI_REQUEST_SET_INFORMATION { 00160 TDI_REQUEST Request; 00161 ULONG SetType; 00162 PTDI_CONNECTION_INFORMATION RequestConnectionInformation; 00163 } TDI_REQUEST_SET_INFORMATION, *PTDI_REQUEST_SET_INFORMATION; 00164 00165 typedef TDI_REQUEST_SET_INFORMATION TDI_REQ_SET_INFORMATION, *PTDI_REQ_SET_INFORMATION; 00166 00167 typedef union _TDI_REQUEST_TYPE { 00168 TDI_REQUEST_ACCEPT TdiAccept; 00169 TDI_REQUEST_CONNECT TdiConnect; 00170 TDI_REQUEST_DISCONNECT TdiDisconnect; 00171 TDI_REQUEST_LISTEN TdiListen; 00172 TDI_REQUEST_QUERY_INFORMATION TdiQueryInformation; 00173 TDI_REQUEST_RECEIVE TdiReceive; 00174 TDI_REQUEST_RECEIVE_DATAGRAM TdiReceiveDatagram; 00175 TDI_REQUEST_SEND TdiSend; 00176 TDI_REQUEST_SEND_DATAGRAM TdiSendDatagram; 00177 TDI_REQUEST_SET_EVENT_HANDLER TdiSetEventHandler; 00178 TDI_REQUEST_SET_INFORMATION TdiSetInformation; 00179 } TDI_REQUEST_TYPE, *PTDI_REQUEST_TYPE; 00180 00181 /* Query information types */ 00182 00183 /* Generic query info types that must be supported by all transports */ 00184 #define TDI_QUERY_BROADCAST_ADDRESS 0x00000001 00185 #define TDI_QUERY_PROVIDER_INFO 0x00000002 00186 #define TDI_QUERY_ADDRESS_INFO 0x00000003 00187 #define TDI_QUERY_CONNECTION_INFO 0x00000004 00188 #define TDI_QUERY_PROVIDER_STATISTICS 0x00000005 00189 #define TDI_QUERY_DATAGRAM_INFO 0x00000006 00190 #define TDI_QUERY_DATA_LINK_ADDRESS 0x00000007 00191 #define TDI_QUERY_NETWORK_ADDRESS 0x00000008 00192 #define TDI_QUERY_MAX_DATAGRAM_INFO 0x00000009 00193 00194 /* Netbios specific query information types */ 00195 #define TDI_QUERY_ADAPTER_STATUS 0x00000100 00196 #define TDI_QUERY_SESSION_STATUS 0x00000200 00197 #define TDI_QUERY_FIND_NAME 0x00000300 00198 00199 /* Structures used for TdiQueryInformation and TdiSetInformation */ 00200 00201 typedef struct _TDI_ENDPOINT_INFO { 00202 ULONG State; 00203 ULONG Event; 00204 ULONG TransmittedTsdus; 00205 ULONG ReceivedTsdus; 00206 ULONG TransmissionErrors; 00207 ULONG ReceiveErrors; 00208 ULONG MinimumLookaheadData; 00209 ULONG MaximumLookaheadData; 00210 ULONG PriorityLevel; 00211 ULONG SecurityLevel; 00212 ULONG SecurityCompartment; 00213 } TDI_ENDPOINT_INFO, *PTDI_ENDPOINT_INFO; 00214 00215 typedef struct _TDI_CONNECTION_INFO { 00216 ULONG State; 00217 ULONG Event; 00218 ULONG TransmittedTsdus; 00219 ULONG ReceivedTsdus; 00220 ULONG TransmissionErrors; 00221 ULONG ReceiveErrors; 00222 LARGE_INTEGER Throughput; 00223 LARGE_INTEGER Delay; 00224 ULONG SendBufferSize; 00225 ULONG ReceiveBufferSize; 00226 BOOLEAN Unreliable; 00227 } TDI_CONNECTION_INFO, *PTDI_CONNECTION_INFO; 00228 00229 typedef struct _TDI_DATAGRAM_INFO { 00230 ULONG MaximumDatagramBytes; 00231 ULONG MaximumDatagramCount; 00232 } TDI_DATAGRAM_INFO, *PTDI_DATAGRAM_INFO; 00233 00234 typedef struct _TDI_MAX_DATAGRAM_INFO { 00235 ULONG MaxDatagramSize; 00236 } TDI_MAX_DATAGRAM_INFO, *PTDI_MAX_DATAGRAM_INFO; 00237 00238 typedef struct _TDI_PROVIDER_INFO { 00239 ULONG Version; 00240 ULONG MaxSendSize; 00241 ULONG MaxConnectionUserData; 00242 ULONG MaxDatagramSize; 00243 ULONG ServiceFlags; 00244 ULONG MinimumLookaheadData; 00245 ULONG MaximumLookaheadData; 00246 ULONG NumberOfResources; 00247 LARGE_INTEGER StartTime; 00248 } TDI_PROVIDER_INFO, *PTDI_PROVIDER_INFO; 00249 00250 #define TDI_SERVICE_CONNECTION_MODE 0x00000001 00251 #define TDI_SERVICE_ORDERLY_RELEASE 0x00000002 00252 #define TDI_SERVICE_CONNECTIONLESS_MODE 0x00000004 00253 #define TDI_SERVICE_ERROR_FREE_DELIVERY 0x00000008 00254 #define TDI_SERVICE_SECURITY_LEVEL 0x00000010 00255 #define TDI_SERVICE_BROADCAST_SUPPORTED 0x00000020 00256 #define TDI_SERVICE_MULTICAST_SUPPORTED 0x00000040 00257 #define TDI_SERVICE_DELAYED_ACCEPTANCE 0x00000080 00258 #define TDI_SERVICE_EXPEDITED_DATA 0x00000100 00259 #define TDI_SERVICE_INTERNAL_BUFFERING 0x00000200 00260 #define TDI_SERVICE_ROUTE_DIRECTED 0x00000400 00261 #define TDI_SERVICE_NO_ZERO_LENGTH 0x00000800 00262 #define TDI_SERVICE_POINT_TO_POINT 0x00001000 00263 #define TDI_SERVICE_MESSAGE_MODE 0x00002000 00264 #define TDI_SERVICE_HALF_DUPLEX 0x00004000 00265 #define TDI_SERVICE_DGRAM_CONNECTION 0x00008000 00266 #define TDI_SERVICE_FORCE_ACCESS_CHECK 0x00010000 00267 #define TDI_SERVICE_SEND_AND_DISCONNECT 0x00020000 00268 #define TDI_SERVICE_DIRECT_ACCEPT 0x00040000 00269 #define TDI_SERVICE_ACCEPT_LOCAL_ADDR 0x00080000 00270 00271 typedef struct _TDI_PROVIDER_RESOURCE_STATS { 00272 ULONG ResourceId; 00273 ULONG MaximumResourceUsed; 00274 ULONG AverageResourceUsed; 00275 ULONG ResourceExhausted; 00276 } TDI_PROVIDER_RESOURCE_STATS, *PTDI_PROVIDER_RESOURCE_STATS; 00277 00278 typedef struct _TDI_PROVIDER_STATISTICS { 00279 ULONG Version; 00280 ULONG OpenConnections; 00281 ULONG ConnectionsAfterNoRetry; 00282 ULONG ConnectionsAfterRetry; 00283 ULONG LocalDisconnects; 00284 ULONG RemoteDisconnects; 00285 ULONG LinkFailures; 00286 ULONG AdapterFailures; 00287 ULONG SessionTimeouts; 00288 ULONG CancelledConnections; 00289 ULONG RemoteResourceFailures; 00290 ULONG LocalResourceFailures; 00291 ULONG NotFoundFailures; 00292 ULONG NoListenFailures; 00293 ULONG DatagramsSent; 00294 LARGE_INTEGER DatagramBytesSent; 00295 ULONG DatagramsReceived; 00296 LARGE_INTEGER DatagramBytesReceived; 00297 ULONG PacketsSent; 00298 ULONG PacketsReceived; 00299 ULONG DataFramesSent; 00300 LARGE_INTEGER DataFrameBytesSent; 00301 ULONG DataFramesReceived; 00302 LARGE_INTEGER DataFrameBytesReceived; 00303 ULONG DataFramesResent; 00304 LARGE_INTEGER DataFrameBytesResent; 00305 ULONG DataFramesRejected; 00306 LARGE_INTEGER DataFrameBytesRejected; 00307 ULONG ResponseTimerExpirations; 00308 ULONG AckTimerExpirations; 00309 ULONG MaximumSendWindow; 00310 ULONG AverageSendWindow; 00311 ULONG PiggybackAckQueued; 00312 ULONG PiggybackAckTimeouts; 00313 LARGE_INTEGER WastedPacketSpace; 00314 ULONG WastedSpacePackets; 00315 ULONG NumberOfResources; 00316 TDI_PROVIDER_RESOURCE_STATS ResourceStats[1]; 00317 } TDI_PROVIDER_STATISTICS, *PTDI_PROVIDER_STATISTICS; 00318 00319 #define TDI_EVENT_CONNECT 0 00320 #define TDI_EVENT_DISCONNECT 1 00321 #define TDI_EVENT_ERROR 2 00322 #define TDI_EVENT_RECEIVE 3 00323 #define TDI_EVENT_RECEIVE_DATAGRAM 4 00324 #define TDI_EVENT_RECEIVE_EXPEDITED 5 00325 #define TDI_EVENT_SEND_POSSIBLE 6 00326 00327 typedef struct _TDI_REQUEST_ASSOCIATE { 00328 TDI_REQUEST Request; 00329 HANDLE AddressHandle; 00330 } TDI_REQUEST_ASSOCIATE_ADDRESS, *PTDI_REQUEST_ASSOCIATE_ADDRESS; 00331 00332 #define NDIS_PACKET_POOL_TAG_FOR_NWLNKIPX 'iPDN' 00333 #define NDIS_PACKET_POOL_TAG_FOR_NWLNKSPX 'sPDN' 00334 #define NDIS_PACKET_POOL_TAG_FOR_NWLNKNB 'nPDN' 00335 #define NDIS_PACKET_POOL_TAG_FOR_TCPIP 'tPDN' 00336 #define NDIS_PACKET_POOL_TAG_FOR_NBF 'bPDN' 00337 #define NDIS_PACKET_POOL_TAG_FOR_APPLETALK 'aPDN' 00338 00339 typedef struct _TA_ADDRESS { 00340 USHORT AddressLength; 00341 USHORT AddressType; 00342 UCHAR Address[1]; 00343 } TA_ADDRESS, *PTA_ADDRESS; 00344 00345 #define TDI_ADDRESS_TYPE_UNSPEC 0 00346 #define TDI_ADDRESS_TYPE_UNIX 1 00347 #define TDI_ADDRESS_TYPE_IP 2 00348 #define TDI_ADDRESS_TYPE_IMPLINK 3 00349 #define TDI_ADDRESS_TYPE_PUP 4 00350 #define TDI_ADDRESS_TYPE_CHAOS 5 00351 #define TDI_ADDRESS_TYPE_NS 6 00352 #define TDI_ADDRESS_TYPE_IPX 6 00353 #define TDI_ADDRESS_TYPE_NBS 7 00354 #define TDI_ADDRESS_TYPE_ECMA 8 00355 #define TDI_ADDRESS_TYPE_DATAKIT 9 00356 #define TDI_ADDRESS_TYPE_CCITT 10 00357 #define TDI_ADDRESS_TYPE_SNA 11 00358 #define TDI_ADDRESS_TYPE_DECnet 12 00359 #define TDI_ADDRESS_TYPE_DLI 13 00360 #define TDI_ADDRESS_TYPE_LAT 14 00361 #define TDI_ADDRESS_TYPE_HYLINK 15 00362 #define TDI_ADDRESS_TYPE_APPLETALK 16 00363 #define TDI_ADDRESS_TYPE_NETBIOS 17 00364 #define TDI_ADDRESS_TYPE_8022 18 00365 #define TDI_ADDRESS_TYPE_OSI_TSAP 19 00366 #define TDI_ADDRESS_TYPE_NETONE 20 00367 #define TDI_ADDRESS_TYPE_VNS 21 00368 #define TDI_ADDRESS_TYPE_NETBIOS_EX 22 00369 #define TDI_ADDRESS_TYPE_IP6 23 00370 #define TDI_ADDRESS_TYPE_NETBIOS_UNICODE_EX 24 00371 00372 #define TdiTransportAddress "TransportAddress" 00373 #define TdiConnectionContext "ConnectionContext" 00374 #define TDI_TRANSPORT_ADDRESS_LENGTH (sizeof(TdiTransportAddress) - 1) 00375 #define TDI_CONNECTION_CONTEXT_LENGTH (sizeof(TdiConnectionContext) - 1) 00376 00377 typedef struct _TRANSPORT_ADDRESS { 00378 LONG TAAddressCount; 00379 TA_ADDRESS Address[1]; 00380 } TRANSPORT_ADDRESS, *PTRANSPORT_ADDRESS; 00381 00382 typedef struct _TDI_ACTION_HEADER { 00383 ULONG TransportId; 00384 USHORT ActionCode; 00385 USHORT Reserved; 00386 } TDI_ACTION_HEADER, *PTDI_ACTION_HEADER; 00387 00388 typedef struct _TDI_ADDRESS_INFO { 00389 ULONG ActivityCount; 00390 TRANSPORT_ADDRESS Address; 00391 } TDI_ADDRESS_INFO, *PTDI_ADDRESS_INFO; 00392 00393 #include "pshpack1.h" 00394 00395 typedef struct _TDI_ADDRESS_8022 { 00396 UCHAR MACAddress[6]; 00397 } TDI_ADDRESS_8022, *PTDI_ADDRESS_8022; 00398 00399 #define TDI_ADDRESS_LENGTH_8022 sizeof(TDI_ADDRESS_8022); 00400 00401 typedef struct _TDI_ADDRESS_APPLETALK { 00402 USHORT Network; 00403 UCHAR Node; 00404 UCHAR Socket; 00405 } TDI_ADDRESS_APPLETALK, *PTDI_ADDRESS_APPLETALK; 00406 00407 #define TDI_ADDRESS_LENGTH_APPLETALK sizeof(TDI_ADDRESS_APPLETALK) 00408 00409 typedef struct _TDI_ADDRESS_IP { 00410 USHORT sin_port; 00411 ULONG in_addr; 00412 UCHAR sin_zero[8]; 00413 } TDI_ADDRESS_IP, *PTDI_ADDRESS_IP; 00414 00415 #define TDI_ADDRESS_LENGTH_IP sizeof(TDI_ADDRESS_IP) 00416 00417 typedef struct _TDI_ADDRESS_IPX { 00418 ULONG NetworkAddress; 00419 UCHAR NodeAddress[6]; 00420 USHORT Socket; 00421 } TDI_ADDRESS_IPX, *PTDI_ADDRESS_IPX; 00422 00423 #define TDI_ADDRESS_LENGTH_IPX sizeof(TDI_ADDRESS_IPX) 00424 00425 /* TDI_ADDRESS_NETBIOS.NetbiosNameType constants */ 00426 #define TDI_ADDRESS_NETBIOS_TYPE_UNIQUE 0x0000 00427 #define TDI_ADDRESS_NETBIOS_TYPE_GROUP 0x0001 00428 #define TDI_ADDRESS_NETBIOS_TYPE_QUICK_UNIQUE 0x0002 00429 #define TDI_ADDRESS_NETBIOS_TYPE_QUICK_GROUP 0x0003 00430 00431 typedef struct _TDI_ADDRESS_NETBIOS { 00432 USHORT NetbiosNameType; 00433 UCHAR NetbiosName[16]; 00434 } TDI_ADDRESS_NETBIOS, *PTDI_ADDRESS_NETBIOS; 00435 00436 #define TDI_ADDRESS_LENGTH_NETBIOS sizeof(TDI_ADDRESS_NETBIOS) 00437 00438 typedef struct _TDI_ADDRESS_NETBIOS_EX { 00439 UCHAR EndpointName[16]; 00440 TDI_ADDRESS_NETBIOS NetbiosAddress; 00441 } TDI_ADDRESS_NETBIOS_EX, *PTDI_ADDRESS_NETBIOS_EX; 00442 00443 #define TDI_ADDRESS_LENGTH_NETBIOS_EX sizeof(TDI_ADDRESS_NETBIOS_EX) 00444 00445 /* TDI_ADDRESS_NETONE.NetoneNameType constants */ 00446 #define TDI_ADDRESS_NETONE_TYPE_UNIQUE 0x0000 00447 #define TDI_ADDRESS_NETONE_TYPE_ROTORED 0x0001 00448 00449 typedef struct _TDI_ADDRESS_NETONE { 00450 USHORT NetoneNameType; 00451 UCHAR NetoneName[20]; 00452 } TDI_ADDRESS_NETONE, *PTDI_ADDRESS_NETONE; 00453 00454 #define TDI_ADDRESS_LENGTH_NETONE sizeof(TDI_ADDRESS_NETONE) 00455 00456 typedef struct _TDI_ADDRESS_NS 00457 { 00458 ULONG NetworkAddress; 00459 UCHAR NodeAddress[6]; 00460 USHORT Socket; 00461 } TDI_ADDRESS_NS, *PTDI_ADDRESS_NS; 00462 00463 #define TDI_ADDRESS_LENGTH_NS sizeof(TDI_ADDRESS_NS) 00464 00465 #define ISO_MAX_ADDR_LENGTH 64 00466 00467 /* TDI_ADDRESS_OSI_TSAP.tp_addr_type constants */ 00468 #define ISO_HIERARCHICAL 0 00469 #define ISO_NON_HIERARCHICAL 1 00470 00471 typedef struct _TDI_ADDRESS_OSI_TSAP { 00472 USHORT tp_addr_type; 00473 USHORT tp_taddr_len; 00474 USHORT tp_tsel_len; 00475 UCHAR tp_addr[ISO_MAX_ADDR_LENGTH]; 00476 } TDI_ADDRESS_OSI_TSAP, *PTDI_ADDRESS_OSI_TSAP; 00477 00478 #define TDI_ADDRESS_LENGTH_OSI_TSAP sizeof(TDI_ADDRESS_OSI_TSAP) 00479 00480 typedef struct _TDI_ADDRESS_VNS { 00481 UCHAR net_address[4]; 00482 UCHAR subnet_addr[2]; 00483 UCHAR port[2]; 00484 UCHAR hops; 00485 UCHAR filler[5]; 00486 } TDI_ADDRESS_VNS, *PTDI_ADDRESS_VNS; 00487 00488 #define TDI_ADDRESS_LENGTH_VNS sizeof(TDI_ADDRESS_VNS) 00489 00490 typedef struct _TDI_ADDRESS_IP6 { 00491 USHORT sin6_port; 00492 ULONG sin6_flowinfo; 00493 USHORT sin6_addr[8]; 00494 ULONG sin6_scope_id; 00495 } TDI_ADDRESS_IP6, *PTDI_ADDRESS_IP6; 00496 00497 #define TDI_ADDRESS_LENGTH_IP6 sizeof(TDI_ADDRESS_IP6) 00498 00499 enum eNameBufferType { 00500 NBT_READONLY = 0, 00501 NBT_WRITEONLY, 00502 NBT_READWRITE, 00503 NBT_WRITTEN 00504 }; 00505 00506 typedef struct _TDI_ADDRESS_NETBIOS_UNICODE_EX { 00507 USHORT NetbiosNameType; 00508 enum eNameBufferType NameBufferType; 00509 UNICODE_STRING EndpointName; 00510 UNICODE_STRING RemoteName; 00511 WCHAR EndpointBuffer[17]; 00512 WCHAR RemoteNameBuffer[1]; 00513 } TDI_ADDRESS_NETBIOS_UNICODE_EX, *PTDI_ADDRESS_NETBIOS_UNICODE_EX; 00514 00515 typedef struct _TA_APPLETALK_ADDR { 00516 LONG TAAddressCount; 00517 struct _AddrAtalk { 00518 USHORT AddressLength; 00519 USHORT AddressType; 00520 TDI_ADDRESS_APPLETALK Address[1]; 00521 } Address[1]; 00522 } TA_APPLETALK_ADDRESS, *PTA_APPLETALK_ADDRESS; 00523 00524 typedef struct _TA_ADDRESS_IP { 00525 LONG TAAddressCount; 00526 struct _AddrIp { 00527 USHORT AddressLength; 00528 USHORT AddressType; 00529 TDI_ADDRESS_IP Address[1]; 00530 } Address[1]; 00531 } TA_IP_ADDRESS, *PTA_IP_ADDRESS; 00532 00533 typedef struct _TA_ADDRESS_IPX { 00534 LONG TAAddressCount; 00535 struct _AddrIpx { 00536 USHORT AddressLength; 00537 USHORT AddressType; 00538 TDI_ADDRESS_IPX Address[1]; 00539 } Address[1]; 00540 } TA_IPX_ADDRESS, *PTA_IPX_ADDRESS; 00541 00542 typedef struct _TA_NETBIOS_ADDRESS { 00543 LONG TAAddressCount; 00544 struct _Addr{ 00545 USHORT AddressLength; 00546 USHORT AddressType; 00547 TDI_ADDRESS_NETBIOS Address[1]; 00548 } Address[1]; 00549 } TA_NETBIOS_ADDRESS, *PTA_NETBIOS_ADDRESS; 00550 00551 typedef struct _TA_ADDRESS_NS { 00552 LONG TAAddressCount; 00553 struct _AddrNs { 00554 USHORT AddressLength; 00555 USHORT AddressType; 00556 TDI_ADDRESS_NS Address[1]; 00557 } Address[1]; 00558 } TA_NS_ADDRESS, *PTA_NS_ADDRESS; 00559 00560 typedef struct _TA_ADDRESS_VNS { 00561 LONG TAAddressCount; 00562 struct _AddrVns { 00563 USHORT AddressLength; 00564 USHORT AddressType; 00565 TDI_ADDRESS_VNS Address[1]; 00566 } Address[1]; 00567 } TA_VNS_ADDRESS, *PTA_VNS_ADDRESS; 00568 00569 typedef struct _TA_ADDRESS_IP6 { 00570 LONG TAAddressCount; 00571 struct _AddrIp6 { 00572 USHORT AddressLength; 00573 USHORT AddressType; 00574 TDI_ADDRESS_IP6 Address[1]; 00575 } Address [1]; 00576 } TA_IP6_ADDRESS, *PTA_IP6_ADDRESS; 00577 00578 typedef struct _TA_ADDRESS_NETBIOS_UNICODE_EX { 00579 LONG TAAddressCount; 00580 struct _AddrNetbiosWCharEx { 00581 USHORT AddressLength; 00582 USHORT AddressType; 00583 TDI_ADDRESS_NETBIOS_UNICODE_EX Address[1]; 00584 } Address [1]; 00585 } TA_NETBIOS_UNICODE_EX_ADDRESS, *PTA_NETBIOS_UNICODE_EX_ADDRESS; 00586 00587 #include "poppack.h" 00588 00589 #ifdef __cplusplus 00590 } 00591 #endif 00592 00593 #endif /* __TDI_H */
Generated on Tue Jul 12 2022 19:59:55 by
1.7.2