-
Notifications
You must be signed in to change notification settings - Fork 158
/
Copy pathtdisup.h
169 lines (147 loc) · 4.28 KB
/
tdisup.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Module: tdisup.h
// Author: Zufyxe, July 2010
// Description:
// TDI based socket interface.
//
typedef struct _TDI_IP_ADDRESS {
USHORT AddressLength;
USHORT AddressType;
TDI_ADDRESS_IP Address;
} TDI_IP_ADDRESS, *PTDI_IP_ADDRESS;
// Tdi status codes
#define TDI_SUCCESS STATUS_SUCCESS
#define TDI_NO_RESOURCES STATUS_INSUFFICIENT_RESOURCES
#define TDI_ADDR_IN_USE STATUS_ADDRESS_ALREADY_EXISTS
#define TDI_BAD_ADDR STATUS_INVALID_ADDRESS_COMPONENT
#define TDI_NO_FREE_ADDR STATUS_TOO_MANY_ADDRESSES
#define TDI_ADDR_INVALID STATUS_INVALID_ADDRESS
#define TDI_ADDR_DELETED STATUS_ADDRESS_CLOSED
#define TDI_BUFFER_OVERFLOW STATUS_BUFFER_OVERFLOW
#define TDI_BAD_EVENT_TYPE STATUS_INVALID_PARAMETER
#define TDI_BAD_OPTION STATUS_INVALID_PARAMETER
#define TDI_CONN_REFUSED STATUS_CONNECTION_REFUSED
#define TDI_INVALID_CONNECTION STATUS_CONNECTION_INVALID
#define TDI_ALREADY_ASSOCIATED STATUS_ADDRESS_ALREADY_ASSOCIATED
#define TDI_NOT_ASSOCIATED STATUS_ADDRESS_NOT_ASSOCIATED
#define TDI_CONNECTION_ACTIVE STATUS_CONNECTION_ACTIVE
#define TDI_CONNECTION_ABORTED STATUS_CONNECTION_ABORTED
#define TDI_CONNECTION_RESET STATUS_CONNECTION_RESET
#define TDI_TIMED_OUT STATUS_IO_TIMEOUT
#define TDI_GRACEFUL_DISC STATUS_GRACEFUL_DISCONNECT
#define TDI_NOT_ACCEPTED STATUS_DATA_NOT_ACCEPTED
#define TDI_MORE_PROCESSING STATUS_MORE_PROCESSING_REQUIRED
#define TDI_INVALID_STATE STATUS_INVALID_DEVICE_STATE
#define TDI_INVALID_PARAMETER STATUS_INVALID_PARAMETER
#define TDI_DEST_NET_UNREACH STATUS_NETWORK_UNREACHABLE
#define TDI_DEST_HOST_UNREACH STATUS_HOST_UNREACHABLE
#define TDI_DEST_UNREACHABLE TDI_DEST_HOST_UNREACH
#define TDI_DEST_PROT_UNREACH STATUS_PROTOCOL_UNREACHABLE
#define TDI_DEST_PORT_UNREACH STATUS_PORT_UNREACHABLE
#define TDI_INVALID_QUERY STATUS_INVALID_DEVICE_REQUEST
#define TDI_REQ_ABORTED STATUS_REQUEST_ABORTED
#define TDI_BUFFER_TOO_SMALL STATUS_BUFFER_TOO_SMALL
#define TDI_CANCELLED STATUS_CANCELLED
#define TDI_BUFFER_TOO_BIG STATUS_INVALID_BUFFER_SIZE
#define TDI_INVALID_REQUEST STATUS_INVALID_DEVICE_REQUEST
#define TDI_PENDING STATUS_PENDING
#define TDI_ITEM_NOT_FOUND STATUS_OBJECT_NAME_NOT_FOUND
NTSTATUS
TdiCreateConnection(
PHANDLE Handle,
PFILE_OBJECT *ConnectionObject
);
NTSTATUS
TdiCreateAddress(
PHANDLE Handle,
PFILE_OBJECT *FileObject,
ULONG Type,
ULONG Address,
USHORT Port
);
NTSTATUS
TdiSetEventHandler(
PFILE_OBJECT FileObject,
LONG EventType,
PVOID EventHandler,
PVOID EventContext
);
NTSTATUS
TdiBind(
PFILE_OBJECT FileObject,
HANDLE Address
);
NTSTATUS
TdiConnect(
PFILE_OBJECT FileObject,
ULONG Addr,
USHORT Port,
PIO_STATUS_BLOCK pIoStatus
);
NTSTATUS
TdiDisconnect(
PFILE_OBJECT FileObject
);
NTSTATUS
TdiSend(
PFILE_OBJECT FileObject,
PVOID Data,
ULONG Length
);
NTSTATUS
TdiRecv(
PFILE_OBJECT FileObject,
PVOID Data,
ULONG Length
);
NTSTATUS
TdiEventDisconnect(
PVOID EventContext,
CONNECTION_CONTEXT cContext,
LONG Unused0,
PVOID Unused1,
LONG Unused2,
PVOID Unused3,
ULONG Flags
);
NTSTATUS
TdiEventError(
PVOID Unused0,
NTSTATUS Status
);
NTSTATUS
TdiEventReceive(
PVOID Unused0,
CONNECTION_CONTEXT Unused1,
ULONG Flags,
ULONG Indicated,
ULONG Available,
PULONG Taken,
PVOID Unused2,
PIRP *Irp
);
NTSTATUS
TdiSendto(
PFILE_OBJECT FileObject,
PVOID Data,
ULONG Length,
ULONG Addr,
USHORT Port,
PKEVENT WriteEvent
);
NTSTATUS
TdiRecvfrom(
PFILE_OBJECT FileObject,
PVOID Data,
ULONG Length,
ULONG Addr,
USHORT Port,
PULONG pRead,
PKEVENT ReadEvent
);
NTSTATUS
TdiQueryAddress(
PFILE_OBJECT AddressObject,
PTDI_ADDRESS_INFO AddressInfo,
PULONG pInfoLength
);