Embed:
(wiki syntax)
Show/hide line numbers
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