ReactOS  0.4.14-dev-49-gfb4591c
titypes.h
Go to the documentation of this file.
1 /*
2  * COPYRIGHT: See COPYING in the top level directory
3  * PROJECT: ReactOS TCP/IP protocol driver
4  * FILE: include/titypes.h
5  * PURPOSE: TCP/IP protocol driver types
6  */
7 
8 #pragma once
9 
10 /*
11  * VOID ReferenceObject(
12  * PVOID Object)
13  */
14 #define ReferenceObject(Object) \
15 { \
16  ASSERT((Object)->RefCount); \
17  InterlockedIncrement(&((Object)->RefCount)); \
18 }
19 
20 /*
21  * VOID DereferenceObject(
22  * PVOID Object)
23  */
24 #define DereferenceObject(Object) \
25 { \
26  ASSERT((Object)->RefCount); \
27  if (InterlockedDecrement(&((Object)->RefCount)) == 0) \
28  (((Object)->Free)(Object)); \
29 }
30 
31 /*
32  * VOID LockObject(PVOID Object, PKIRQL OldIrql)
33  */
34 #define LockObject(Object, Irql) \
35 { \
36  ReferenceObject(Object); \
37  KeAcquireSpinLock(&((Object)->Lock), Irql); \
38  memcpy(&(Object)->OldIrql, Irql, sizeof(KIRQL)); \
39 }
40 
41 /*
42  * VOID LockObjectAtDpcLevel(PVOID Object)
43  */
44 #define LockObjectAtDpcLevel(Object) \
45 { \
46  ReferenceObject(Object); \
47  KeAcquireSpinLockAtDpcLevel(&((Object)->Lock)); \
48  (Object)->OldIrql = DISPATCH_LEVEL; \
49 }
50 
51 /*
52  * VOID UnlockObject(PVOID Object, KIRQL OldIrql)
53  */
54 #define UnlockObject(Object, OldIrql) \
55 { \
56  KeReleaseSpinLock(&((Object)->Lock), OldIrql); \
57  DereferenceObject(Object); \
58 }
59 
60 /*
61  * VOID UnlockObjectFromDpcLevel(PVOID Object)
62  */
63 #define UnlockObjectFromDpcLevel(Object) \
64 { \
65  KeReleaseSpinLockFromDpcLevel(&((Object)->Lock)); \
66  DereferenceObject(Object); \
67 }
68 
69 
70 
71 #include <ip.h>
72 
73 struct _ADDRESS_FILE;
74 
75 /***************************************************
76 * Connection-less communication support structures *
77 ***************************************************/
78 
80  struct _ADDRESS_FILE *AddrFile,
82  PCHAR Buffer,
84  PULONG DataUsed);
85 
86 /* Datagram completion handler prototype */
88  PVOID Context,
90  ULONG Count);
91 
93 
94 typedef struct _DATAGRAM_RECEIVE_REQUEST {
95  struct _ADDRESS_FILE *AddressFile; /* AddressFile on behalf of */
96  LIST_ENTRY ListEntry; /* Entry on list */
97  IP_ADDRESS RemoteAddress; /* Remote address we receive from (NULL means any) */
98  USHORT RemotePort; /* Remote port we receive from (0 means any) */
99  PTDI_CONNECTION_INFORMATION ReturnInfo;/* Return information */
100  PCHAR Buffer; /* Pointer to receive buffer */
101  ULONG BufferSize; /* Size of Buffer */
102  DATAGRAM_COMPLETION_ROUTINE Complete; /* Completion routine */
103  PVOID Context; /* Pointer to context information */
104  DATAGRAM_COMPLETION_ROUTINE UserComplete; /* Completion routine */
105  PVOID UserContext; /* Pointer to context information */
106  PIRP Irp; /* IRP on behalf of */
108 
109 /* Datagram build routine prototype */
111  PVOID Context,
113  USHORT LocalPort,
114  PIP_PACKET *IPPacket);
115 
116 typedef struct _DATAGRAM_SEND_REQUEST {
119  DATAGRAM_COMPLETION_ROUTINE Complete; /* Completion routine */
120  PVOID Context; /* Pointer to context information */
125  ULONG Flags; /* Protocol specific flags */
127 
128 /* Transport address file context structure. The FileObject->FsContext2
129  field holds a pointer to this structure */
130 typedef struct _ADDRESS_FILE {
131  LIST_ENTRY ListEntry; /* Entry on list */
132  LONG RefCount; /* Reference count */
133  OBJECT_FREE_ROUTINE Free; /* Routine to use to free resources for the object */
134  KSPIN_LOCK Lock; /* Spin lock to manipulate this structure */
135  KIRQL OldIrql; /* Currently not used */
136  IP_ADDRESS Address; /* Address of this address file */
137  USHORT Family; /* Address family */
138  USHORT Protocol; /* Protocol number */
139  USHORT Port; /* Network port (network byte order) */
140  LONG Sharers; /* Number of file objects with this addr file */
141  UCHAR TTL; /* Time to live stored in packets sent from this address file */
142  UINT DF; /* Don't fragment */
143  UINT BCast; /* Receive broadcast packets */
144  UINT HeaderIncl; /* Include header in RawIP packets */
145  WORK_QUEUE_ITEM WorkItem; /* Work queue item handle */
146  DATAGRAM_COMPLETION_ROUTINE Complete; /* Completion routine for delete request */
147  PVOID Context; /* Delete request context */
148  DATAGRAM_SEND_ROUTINE Send; /* Routine to send a datagram */
149  LIST_ENTRY ReceiveQueue; /* List of outstanding receive requests */
150  LIST_ENTRY TransmitQueue; /* List of outstanding transmit requests */
152  /* Associated connection or NULL if no associated connection exist */
154  /* Associated listener (see transport/tcp/accept.c) */
155  IP_ADDRESS AddrCache; /* One entry address cache (destination
156  address of last packet transmitted) */
157  HANDLE ProcessId; /* Creator process ID */
158  PVOID SubProcessTag; /* Creator process tag */
159  LARGE_INTEGER CreationTime; /* Time of creation */
160 
161  /* The following members are used to control event notification */
162 
163  /* Connection indication handler */
167  /* Disconnect indication handler */
171  /* Error indication handler */
176  /* Receive indication handler */
180  /* Receive datagram indication handler */
184  /* Expedited receive indication handler */
188  /* Chained receive indication handler */
192  /* Chained receive datagram indication handler */
196  /* Chained expedited receive indication handler */
201 
202 /* Structure used to search through Address Files */
203 typedef struct _AF_SEARCH {
204  PLIST_ENTRY Next; /* Next address file to check */
205  PIP_ADDRESS Address; /* Pointer to address to be found */
206  USHORT Port; /* Network port */
207  USHORT Protocol; /* Protocol number */
209 
210 /*******************************************************
211 * Connection-oriented communication support structures *
212 *******************************************************/
213 
214 typedef struct _TCP_RECEIVE_REQUEST {
215  LIST_ENTRY ListEntry; /* Entry on list */
216  PNDIS_BUFFER Buffer; /* Pointer to receive buffer */
217  ULONG BufferSize; /* Size of Buffer */
218  DATAGRAM_COMPLETION_ROUTINE Complete; /* Completion routine */
219  PVOID Context; /* Pointer to context information */
221 
222 /* Connection states */
223 typedef enum {
224  ctListen = 0, /* Waiting for incoming connection requests */
225  ctSynSent, /* Waiting for matching connection request */
226  ctSynReceived, /* Waiting for connection request acknowledgment */
227  ctEstablished, /* Connection is open for data transfer */
228  ctFinWait1, /* Waiting for termination request or ack. for same */
229  ctFinWait2, /* Waiting for termination request from remote TCP */
230  ctCloseWait, /* Waiting for termination request from local user */
231  ctClosing, /* Waiting for termination ack. from remote TCP */
232  ctLastAck, /* Waiting for termination request ack. from remote TCP */
233  ctTimeWait, /* Waiting for enough time to pass to be sure the remote TCP
234  received the ack. of its connection termination request */
235  ctClosed /* Represents a closed connection */
237 
238 
239 /* Structure for an TCP segment */
240 typedef struct _TCP_SEGMENT {
242  PIP_PACKET IPPacket; /* Pointer to IP packet */
243  PVOID SegmentData; /* Pointer to segment data */
244  ULONG SequenceNumber; /* Sequence number of first byte in segment */
245  ULONG Length; /* Number of bytes in segment */
246  ULONG BytesDelivered; /* Number of bytes already delivered to the client */
248 
249 typedef struct _TDI_BUCKET {
256 
257 /* Transport connection context structure A.K.A. Transmission Control Block
258  (TCB) in TCP terminology. The FileObject->FsContext2 field holds a pointer
259  to this structure */
260 typedef struct _CONNECTION_ENDPOINT {
261  PVOID SocketContext; /* Context for lower layer (MUST be first member in struct) */
262  LIST_ENTRY ListEntry; /* Entry on list */
263  LONG RefCount; /* Reference count */
264  OBJECT_FREE_ROUTINE Free; /* Routine to use to free resources for the object */
265  KSPIN_LOCK Lock; /* Spin lock to protect this structure */
266  KIRQL OldIrql; /* The old irql is stored here for use in HandleSignalledConnection */
267  PVOID ClientContext; /* Pointer to client context information */
268  PADDRESS_FILE AddressFile; /* Associated address file object (NULL if none) */
269 
270  /* Requests */
271  LIST_ENTRY ConnectRequest; /* Queued connect requests */
272  LIST_ENTRY ListenRequest; /* Queued listen requests */
273  LIST_ENTRY ReceiveRequest; /* Queued receive requests */
274  LIST_ENTRY SendRequest; /* Queued send requests */
275  LIST_ENTRY ShutdownRequest;/* Queued shutdown requests */
276 
277  LIST_ENTRY PacketQueue; /* Queued received packets waiting to be processed */
278 
279  /* Disconnect Timer */
282 
283  /* Socket state */
288 
289  struct _CONNECTION_ENDPOINT *Next; /* Next connection in address file list */
291 
292 
293 
294 /*************************
295 * TDI support structures *
296 *************************/
297 
298 /* Transport control channel context structure. The FileObject->FsContext2
299  field holds a pointer to this structure */
300 typedef struct _CONTROL_CHANNEL {
301  LIST_ENTRY ListEntry; /* Entry on list */
302  LONG RefCount; /* Reference count */
303  OBJECT_FREE_ROUTINE Free; /* Routine to use to free resources for the object */
304  KSPIN_LOCK Lock; /* Spin lock to protect this structure */
306 
307 /* Transport (TCP/UDP) endpoint context structure. The FileObject->FsContext
308  field holds a pointer to this structure */
309 typedef struct _TRANSPORT_CONTEXT {
310  union {
314  } Handle;
318 
319 typedef struct _TI_QUERY_CONTEXT {
325 
326 /* EOF */
signed char * PCHAR
Definition: retypes.h:7
LIST_ENTRY ListEntry
Definition: titypes.h:117
PTDI_IND_DISCONNECT DisconnectHandler
Definition: titypes.h:168
PVOID ChainedReceiveExpeditedHandlerContext
Definition: titypes.h:198
struct _DATAGRAM_SEND_REQUEST * PDATAGRAM_SEND_REQUEST
BOOLEAN RegisteredReceiveDatagramHandler
Definition: titypes.h:183
PLIST_ENTRY Next
Definition: titypes.h:204
union _TRANSPORT_CONTEXT::@993 Handle
NTSTATUS(NTAPI * PTDI_IND_CHAINED_RECEIVE_EXPEDITED)(_In_opt_ PVOID TdiEventContext, _In_opt_ CONNECTION_CONTEXT ConnectionContext, _In_ ULONG ReceiveFlags, _In_ ULONG ReceiveLength, _In_ ULONG StartingOffset, _In_ PMDL Tsdu, _In_ PVOID TsduDescriptor)
Definition: tdikrnl.h:352
PVOID ChainedReceiveDatagramHandlerContext
Definition: titypes.h:194
KSPIN_LOCK Lock
Definition: titypes.h:265
PNDIS_BUFFER Buffer
Definition: titypes.h:216
NTSTATUS(NTAPI * PTDI_IND_DISCONNECT)(_In_opt_ PVOID TdiEventContext, _In_opt_ CONNECTION_CONTEXT ConnectionContext, _In_ LONG DisconnectDataLength, _In_reads_bytes_opt_(DisconnectDataLength) PVOID DisconnectData, _In_ LONG DisconnectInformationLength, _In_reads_bytes_opt_(DisconnectInformationLength) PVOID DisconnectInformation, _In_ ULONG DisconnectFlags)
Definition: tdikrnl.h:185
enum CONNECTION_STATE * PCONNECTION_STATE
HANDLE ControlChannel
Definition: titypes.h:313
struct _TRANSPORT_CONTEXT TRANSPORT_CONTEXT
UCHAR TTL
Definition: titypes.h:141
PNDIS_PACKET PacketToSend
Definition: titypes.h:118
MDL * PNDIS_BUFFER
Definition: ndis.h:343
OBJECT_FREE_ROUTINE Free
Definition: titypes.h:303
struct _CONTROL_CHANNEL CONTROL_CHANNEL
DATAGRAM_SEND_ROUTINE Send
Definition: titypes.h:148
LONG Sharers
Definition: titypes.h:140
BOOLEAN RegisteredExpeditedReceiveHandler
Definition: titypes.h:187
LONG RefCount
Definition: titypes.h:132
LONG NTSTATUS
Definition: precomp.h:26
USHORT Protocol
Definition: titypes.h:138
struct _CONNECTION_ENDPOINT * PCONNECTION_ENDPOINT
PVOID ReceiveHandlerContext
Definition: titypes.h:178
PTDI_IND_RECEIVE ReceiveHandler
Definition: titypes.h:177
struct _DATAGRAM_RECEIVE_REQUEST DATAGRAM_RECEIVE_REQUEST
_Inout_ __drv_aliasesMem PSLIST_ENTRY _Inout_ PSLIST_ENTRY _In_ ULONG Count
Definition: exfuncs.h:1015
NTSTATUS ReceiveShutdownStatus
Definition: titypes.h:286
PIP_ADDRESS Address
Definition: titypes.h:205
struct _TDI_BUCKET TDI_BUCKET
HANDLE ProcessId
Definition: titypes.h:157
DATAGRAM_COMPLETION_ROUTINE Complete
Definition: titypes.h:218
DATAGRAM_COMPLETION_ROUTINE Complete
Definition: titypes.h:102
NTSTATUS(NTAPI * PTDI_IND_CHAINED_RECEIVE_DATAGRAM)(_In_opt_ PVOID TdiEventContext, _In_ LONG SourceAddressLength, _In_reads_bytes_(SourceAddressLength) PVOID SourceAddress, _In_ LONG OptionsLength, _In_reads_bytes_opt_(OptionsLength) PVOID Options, _In_ ULONG ReceiveDatagramFlags, _In_ ULONG ReceiveDatagramLength, _In_ ULONG StartingOffset, _In_ PMDL Tsdu, _In_ PVOID TsduDescriptor)
Definition: tdikrnl.h:324
struct _TCP_RECEIVE_REQUEST TCP_RECEIVE_REQUEST
KSPIN_LOCK Lock
Definition: titypes.h:134
LIST_ENTRY PacketQueue
Definition: titypes.h:277
struct _CONNECTION_ENDPOINT CONNECTION_ENDPOINT
IP_ADDRESS AddrCache
Definition: titypes.h:155
NTSTATUS(NTAPI * PTDI_IND_ERROR)(_In_opt_ PVOID TdiEventContext, _In_ NTSTATUS Status)
Definition: tdikrnl.h:207
int NDIS_STATUS
Definition: ntddndis.h:471
PVOID SegmentData
Definition: titypes.h:243
HANDLE AddressHandle
Definition: titypes.h:311
struct _CONNECTION_ENDPOINT * Next
Definition: titypes.h:289
Definition: ip.h:23
PADDRESS_FILE AddressFile
Definition: titypes.h:268
PVOID ErrorHandlerOwner
Definition: titypes.h:174
UCHAR KIRQL
Definition: env_spec_w32.h:591
struct _ADDRESS_FILE ADDRESS_FILE
ULONG BytesDelivered
Definition: titypes.h:246
BOOLEAN RegisteredErrorHandler
Definition: titypes.h:175
struct _DATAGRAM_SEND_REQUEST DATAGRAM_SEND_REQUEST
KEVENT CleanupEvent
Definition: titypes.h:316
long LONG
Definition: pedump.c:60
BOOLEAN RegisteredChainedReceiveDatagramHandler
Definition: titypes.h:195
struct _TCP_SEGMENT TCP_SEGMENT
struct _ADDRESS_FILE * PADDRESS_FILE
unsigned char BOOLEAN
CONNECTION_STATE
Definition: titypes.h:223
DATAGRAM_COMPLETION_ROUTINE PDATAGRAM_COMPLETION_ROUTINE
Definition: titypes.h:92
struct _TCP_RECEIVE_REQUEST * PTCP_RECEIVE_REQUEST
DATAGRAM_COMPLETION_ROUTINE Complete
Definition: titypes.h:119
BOOLEAN SendShutdown
Definition: titypes.h:284
OBJECT_FREE_ROUTINE Free
Definition: titypes.h:264
PTDI_IND_RECEIVE_DATAGRAM ReceiveDatagramHandler
Definition: titypes.h:181
BOOLEAN RegisteredChainedReceiveHandler
Definition: titypes.h:191
BOOLEAN RegisteredConnectHandler
Definition: titypes.h:166
ULONG SequenceNumber
Definition: titypes.h:244
PVOID ReceiveDatagramHandlerContext
Definition: titypes.h:182
LIST_ENTRY ListEntry
Definition: titypes.h:241
BOOLEAN CancelIrps
Definition: titypes.h:315
struct _TCP_SEGMENT * PTCP_SEGMENT
KIRQL OldIrql
Definition: titypes.h:135
struct _ADDRESS_FILE * AddressFile
Definition: titypes.h:95
LIST_ENTRY ListEntry
Definition: titypes.h:96
struct _AF_SEARCH AF_SEARCH
PTDI_IND_ERROR ErrorHandler
Definition: titypes.h:172
BOOLEAN RegisteredChainedReceiveExpeditedHandler
Definition: titypes.h:199
LIST_ENTRY ListEntry
Definition: titypes.h:215
IP_ADDRESS RemoteAddress
Definition: titypes.h:97
LIST_ENTRY ShutdownRequest
Definition: titypes.h:275
PIP_PACKET IPPacket
Definition: titypes.h:242
NTSTATUS(NTAPI * PTDI_IND_CHAINED_RECEIVE)(_In_opt_ PVOID TdiEventContext, _In_opt_ CONNECTION_CONTEXT ConnectionContext, _In_ ULONG ReceiveFlags, _In_ ULONG ReceiveLength, _In_ ULONG StartingOffset, _In_ PMDL Tsdu, _In_ PVOID TsduDescriptor)
Definition: tdikrnl.h:302
USHORT Protocol
Definition: titypes.h:207
ULONG Length
Definition: titypes.h:245
struct _DATAGRAM_RECEIVE_REQUEST * PDATAGRAM_RECEIVE_REQUEST
NTSTATUS(NTAPI * PTDI_IND_RECEIVE_DATAGRAM)(_In_opt_ PVOID TdiEventContext, _In_ LONG SourceAddressLength, _In_reads_bytes_(SourceAddressLength) PVOID SourceAddress, _In_ LONG OptionsLength, _In_reads_bytes_opt_(OptionsLength) PVOID Options, _In_ ULONG ReceiveDatagramFlags, _In_ ULONG BytesIndicated, _In_ ULONG BytesAvailable, _Out_ ULONG *BytesTaken, _In_ PVOID Tsdu, _Out_opt_ PIRP *IoRequestPacket)
Definition: tdikrnl.h:249
NTSTATUS(NTAPI * PTDI_IND_CONNECT)(_In_opt_ PVOID TdiEventContext, _In_ LONG RemoteAddressLength, _In_reads_bytes_(RemoteAddressLength) PVOID RemoteAddress, _In_ LONG UserDataLength, _In_reads_bytes_opt_(UserDataLength) PVOID UserData, _In_ LONG OptionsLength, _In_reads_bytes_opt_(OptionsLength) PVOID Options, _Out_ CONNECTION_CONTEXT *ConnectionContext, _Out_ PIRP *AcceptIrp)
Definition: tdikrnl.h:159
unsigned char UCHAR
Definition: xmlstorage.h:181
PTDI_IND_CHAINED_RECEIVE_DATAGRAM ChainedReceiveDatagramHandler
Definition: titypes.h:193
Definition: ketypes.h:687
WORK_QUEUE_ITEM WorkItem
Definition: titypes.h:145
#define NTSTATUS
Definition: precomp.h:20
struct _CONTROL_CHANNEL * PCONTROL_CHANNEL
PTDI_IND_CHAINED_RECEIVE_EXPEDITED ChainedReceiveExpeditedHandler
Definition: titypes.h:197
KTIMER DisconnectTimer
Definition: titypes.h:280
#define VOID
Definition: acefi.h:82
TCP_REQUEST_QUERY_INFORMATION_EX QueryInfo
Definition: titypes.h:323
LIST_ENTRY ReceiveRequest
Definition: titypes.h:273
UINT HeaderIncl
Definition: titypes.h:144
Definition: typedefs.h:117
LIST_ENTRY ListEntry
Definition: titypes.h:301
LIST_ENTRY Entry
Definition: titypes.h:250
VOID(* OBJECT_FREE_ROUTINE)(PVOID Object)
Definition: ip.h:10
struct _CONNECTION_ENDPOINT * Listener
Definition: titypes.h:153
PVOID ExpeditedReceiveHandlerContext
Definition: titypes.h:186
struct _TI_QUERY_CONTEXT * PTI_QUERY_CONTEXT
Status
Definition: gdiplustypes.h:24
PVOID ConnectHandlerContext
Definition: titypes.h:165
PTDI_IND_CHAINED_RECEIVE ChainedReceiveHandler
Definition: titypes.h:189
BOOLEAN RegisteredDisconnectHandler
Definition: titypes.h:170
LIST_ENTRY ListEntry
Definition: titypes.h:131
PTDI_IND_CONNECT ConnectHandler
Definition: titypes.h:164
PVOID ErrorHandlerContext
Definition: titypes.h:173
PVOID SubProcessTag
Definition: titypes.h:158
PVOID ChainedReceiveHandlerContext
Definition: titypes.h:190
struct _TI_QUERY_CONTEXT TI_QUERY_CONTEXT
USHORT Port
Definition: titypes.h:206
IP_ADDRESS RemoteAddress
Definition: titypes.h:123
NTSTATUS(NTAPI * PTDI_IND_RECEIVE_EXPEDITED)(_In_opt_ PVOID TdiEventContext, _In_opt_ CONNECTION_CONTEXT ConnectionContext, _In_ ULONG ReceiveFlags, _In_ ULONG BytesIndicated, _In_ ULONG BytesAvailable, _Out_ ULONG *BytesTaken, _In_ PVOID Tsdu, _Out_opt_ PIRP *IoRequestPacket)
Definition: tdikrnl.h:278
BOOLEAN ReceiveShutdown
Definition: titypes.h:285
unsigned short USHORT
Definition: pedump.c:61
CONNECTION_CONTEXT ConnectionContext
Definition: titypes.h:312
IP_ADDRESS Address
Definition: titypes.h:136
struct _CONNECTION_ENDPOINT * AssociatedEndpoint
Definition: titypes.h:251
UINT BCast
Definition: titypes.h:143
LIST_ENTRY ConnectRequest
Definition: titypes.h:271
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
NTSTATUS(* DATAGRAM_SEND_ROUTINE)(struct _ADDRESS_FILE *AddrFile, PTDI_CONNECTION_INFORMATION ConnInfo, PCHAR Buffer, ULONG DataSize, PULONG DataUsed)
Definition: titypes.h:79
LIST_ENTRY ListenRequest
Definition: titypes.h:272
unsigned int * PULONG
Definition: retypes.h:1
unsigned int UINT
Definition: ndis.h:50
OBJECT_FREE_ROUTINE Free
Definition: titypes.h:133
LIST_ENTRY SendRequest
Definition: titypes.h:274
VOID(* DATAGRAM_COMPLETION_ROUTINE)(PVOID Context, NDIS_STATUS Status, ULONG Count)
Definition: titypes.h:87
PVOID DisconnectHandlerContext
Definition: titypes.h:169
NTSTATUS Status
Definition: titypes.h:253
struct _TRANSPORT_CONTEXT * PTRANSPORT_CONTEXT
struct tagContext Context
Definition: acpixf.h:1024
unsigned int ULONG
Definition: retypes.h:1
struct _TDI_BUCKET * PTDI_BUCKET
LIST_ENTRY TransmitQueue
Definition: titypes.h:150
USHORT Family
Definition: titypes.h:137
DATAGRAM_COMPLETION_ROUTINE UserComplete
Definition: titypes.h:104
TDI_REQUEST Request
Definition: titypes.h:252
struct _CONNECTION_ENDPOINT * Connection
Definition: titypes.h:151
LIST_ENTRY ReceiveQueue
Definition: titypes.h:149
Definition: ip.h:77
USHORT Port
Definition: titypes.h:139
DATAGRAM_COMPLETION_ROUTINE Complete
Definition: titypes.h:146
IN BOOLEAN OUT PSTR Buffer
Definition: progress.h:34
PTDI_IND_RECEIVE_EXPEDITED ExpeditedReceiveHandler
Definition: titypes.h:185
PTDI_CONNECTION_INFORMATION ReturnInfo
Definition: titypes.h:99
BOOLEAN RegisteredReceiveHandler
Definition: titypes.h:179
NTSTATUS(NTAPI * PTDI_IND_RECEIVE)(_In_opt_ PVOID TdiEventContext, _In_opt_ CONNECTION_CONTEXT ConnectionContext, _In_ ULONG ReceiveFlags, _In_ ULONG BytesIndicated, _In_ ULONG BytesAvailable, _Out_ ULONG *BytesTaken, _In_ PVOID Tsdu, _Out_opt_ PIRP *IoRequestPacket)
Definition: tdikrnl.h:225
PVOID Context
Definition: titypes.h:147
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
Definition: ndis.h:4751
LIST_ENTRY ListEntry
Definition: titypes.h:262
NTSTATUS(* DATAGRAM_BUILD_ROUTINE)(PVOID Context, PIP_ADDRESS LocalAddress, USHORT LocalPort, PIP_PACKET *IPPacket)
Definition: titypes.h:110
KSPIN_LOCK Lock
Definition: titypes.h:304
ULONG Information
Definition: titypes.h:254
_Must_inspect_result_ _In_ ULONG _In_ PSOCKADDR LocalAddress
Definition: wsk.h:170
struct _AF_SEARCH * PAF_SEARCH
LARGE_INTEGER CreationTime
Definition: titypes.h:159