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