OSDN Git Service

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