212 while (LastConnection->Next != Connection && LastConnection->
Next !=
NULL)
213 LastConnection = LastConnection->
Next;
214 if (LastConnection->Next == Connection)
216 LastConnection->Next = Connection->
Next;
310 PVOID SendBuffer = 0;
322 (
"Getting the user buffer from %x\n",
Mdl));
327 (
"Writing %d bytes to %x\n", SendLen, SendBuffer));
332 (
"Connection->SocketContext: %x\n",
337 SendLen, &BytesSent,
TRUE));
350 (
"Completing Send request: %x %x\n",
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
_In_ PIO_STACK_LOCATION IrpSp
#define TI_DbgPrint(_t_, _x_)
VOID FlushConnectQueue(PCONNECTION_ENDPOINT Connection, const NTSTATUS Status)
static VOID BucketCompletionWorker(PVOID Context)
VOID TCPSendEventHandler(void *arg, const u16_t space)
VOID FlushShutdownQueue(PCONNECTION_ENDPOINT Connection, const NTSTATUS Status)
VOID FlushListenQueue(PCONNECTION_ENDPOINT Connection, const NTSTATUS Status)
VOID CompleteBucket(PCONNECTION_ENDPOINT Connection, PTDI_BUCKET Bucket, const BOOLEAN Synchronous)
VOID FlushReceiveQueue(PCONNECTION_ENDPOINT Connection, const NTSTATUS Status)
VOID TCPAcceptEventHandler(void *arg, PTCP_PCB newpcb)
NPAGED_LOOKASIDE_LIST TdiBucketLookasideList
VOID TCPRecvEventHandler(void *arg)
VOID TCPConnectEventHandler(void *arg, const err_t err)
VOID TCPFinEventHandler(void *arg, const err_t err)
VOID FlushAllQueues(PCONNECTION_ENDPOINT Connection, NTSTATUS Status)
VOID FlushSendQueue(PCONNECTION_ENDPOINT Connection, const NTSTATUS Status)
#define InsertHeadList(ListHead, Entry)
#define IsListEmpty(ListHead)
#define RemoveHeadList(ListHead)
pRequest Complete(RequestStatus)
NTSTATUS TCPCheckPeerForAccept(PVOID Context, PTDI_REQUEST_KERNEL Request)
NTSTATUS TCPTranslateError(const INT8 err)
VOID(* PTCP_COMPLETION_ROUTINE)(PVOID Context, NTSTATUS Status, ULONG Count)
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] STATPROPSETSTG *rgelt, [out] ULONG *pceltFetched)
struct tcp_pcb * PTCP_PCB
NTSTATUS LibTCPGetDataFromConnectionQueue(PCONNECTION_ENDPOINT Connection, PUCHAR RecvBuffer, UINT RecvLen, UINT *Received)
err_t LibTCPClose(PCONNECTION_ENDPOINT Connection, const int safe, const int callback)
void LibTCPAccept(PTCP_PCB pcb, struct tcp_pcb *listen_pcb, void *arg)
err_t LibTCPSend(PCONNECTION_ENDPOINT Connection, void *const dataptr, const u16_t len, ULONG *sent, const int safe)
#define NdisQueryBuffer(_Buffer, _VirtualAddress, _Length)
#define STATUS_FILE_CLOSED
base of all file and directory entries
struct _CONNECTION_ENDPOINT * Connection
struct _CONNECTION_ENDPOINT * Listener
LIST_ENTRY ConnectRequest
LIST_ENTRY ShutdownRequest
PADDRESS_FILE AddressFile
struct _CONNECTION_ENDPOINT * Next
LIST_ENTRY ReceiveRequest
union _IO_STACK_LOCATION::@1579 Parameters
struct _CONNECTION_ENDPOINT * AssociatedEndpoint
PVOID RequestNotifyObject
BOOLEAN NTAPI KeCancelTimer(IN OUT PKTIMER Timer)
#define UnlockObject(Object)
#define ReferenceObject(Object)
#define ASSERT_TCPIP_OBJECT_LOCKED(Object)
#define LockObject(Object)
#define DereferenceObject(Object)
struct _CONNECTION_ENDPOINT * PCONNECTION_ENDPOINT
struct _TDI_BUCKET * PTDI_BUCKET
#define CONTAINING_RECORD(address, type, field)
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
BOOLEAN ChewCreate(VOID(*Worker)(PVOID), PVOID WorkerContext)
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST NPAGED_LOOKASIDE_LIST