tdi.h 18 KB

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