ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

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

Generated on Sat May 26 2012 04:31:15 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.