4d686cc61f2b95abd3879341b4e877d3e0571008
[reactos.git] / reactos / include / ddk / tdiinfo.h
1 /*
2 * tdiinfo.h
3 *
4 * TDI set and query information interface
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 __TDIINFO_H
24 #define __TDIINFO_H
25
26 #if __GNUC__ >=3
27 #pragma GCC system_header
28 #endif
29
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33
34 typedef struct TDIEntityID {
35 ULONG tei_entity;
36 ULONG tei_instance;
37 } TDIEntityID;
38
39 #define MAX_TDI_ENTITIES 4096
40 #define INVALID_ENTITY_INSTANCE -1
41 #define GENERIC_ENTITY 0
42 #define ENTITY_LIST_ID 0
43 #define ENTITY_TYPE_ID 1
44
45 #define AT_ENTITY 0x280
46 #define CL_NL_ENTITY 0x301
47 #define CL_TL_ENTITY 0x401
48 #define CO_NL_ENTITY 0x300
49 #define CO_TL_ENTITY 0x400
50 #define ER_ENTITY 0x380
51 #define IF_ENTITY 0x200
52
53 #define AT_ARP 0x280
54 #define AT_NULL 0x282
55 #define CL_TL_NBF 0x401
56 #define CL_TL_UDP 0x403
57 #define CL_NL_IPX 0x301
58 #define CL_NL_IP 0x303
59 #define CO_TL_NBF 0x400
60 #define CO_TL_SPX 0x402
61 #define CO_TL_TCP 0x404
62 #define CO_TL_SPP 0x406
63 #define ER_ICMP 0x380
64 #define IF_GENERIC 0x200
65 #define IF_MIB 0x202
66
67 /* TDIObjectID.toi_class constants */
68 #define INFO_CLASS_GENERIC 0x100
69 #define INFO_CLASS_PROTOCOL 0x200
70 #define INFO_CLASS_IMPLEMENTATION 0x300
71
72 /* TDIObjectID.toi_type constants */
73 #define INFO_TYPE_PROVIDER 0x100
74 #define INFO_TYPE_ADDRESS_OBJECT 0x200
75 #define INFO_TYPE_CONNECTION 0x300
76
77 typedef struct _TDIObjectID {
78 TDIEntityID toi_entity;
79 ULONG toi_class;
80 ULONG toi_type;
81 ULONG toi_id;
82 } TDIObjectID;
83
84 #define CONTEXT_SIZE 16
85
86 typedef struct _TCP_REQUEST_QUERY_INFORMATION_EX {
87 TDIObjectID ID;
88 ULONG_PTR Context[CONTEXT_SIZE / sizeof(ULONG_PTR)];
89 } TCP_REQUEST_QUERY_INFORMATION_EX, *PTCP_REQUEST_QUERY_INFORMATION_EX;
90
91 #if defined(_WIN64)
92 typedef struct _TCP_REQUEST_QUERY_INFORMATION_EX32 {
93 TDIObjectID ID;
94 ULONG32 Context[CONTEXT_SIZE / sizeof(ULONG32)];
95 } TCP_REQUEST_QUERY_INFORMATION_EX32, *PTCP_REQUEST_QUERY_INFORMATION_EX32;
96 #endif /* _WIN64 */
97
98 typedef struct _TCP_REQUEST_SET_INFORMATION_EX {
99 TDIObjectID ID;
100 unsigned int BufferSize;
101 unsigned char Buffer[1];
102 } TCP_REQUEST_SET_INFORMATION_EX, *PTCP_REQUEST_SET_INFORMATION_EX;
103
104 #ifdef __cplusplus
105 }
106 #endif
107
108 #endif /* __TDIINFO_H */