117 DbgPrint(
"----------- TCP/IP Active Object Dump -------------\n");
126 DbgPrint(
"Address File (%s, %d, %d) @ 0x%p | Ref count: %d | Sharers: %d\n",
134 DbgPrint(
"\tAssociated endpoints: ");
148 CurrentEntry = CurrentEntry->
Flink;
170 DbgPrint(
"\tRequest lists: Connect: %s | Recv: %s | Send: %s | Shutdown: %s | Listen: %s\n",
181 CurrentEntry = CurrentEntry->
Flink;
186 DbgPrint(
"---------------------------------------------------\n");
215 CurrentEntry = CurrentEntry->
Flink;
252 CurrentEntry = SearchContext->
Next;
268 if ((Current->
Port == SearchContext->
Port) &&
275 CurrentEntry = CurrentEntry->
Flink;
280 SearchContext->
Next = CurrentEntry->
Flink;
411 if ((Shared !=
FALSE) && (
Address->Address[0].Address[0].sin_port != 0))
414 if (AddrFile !=
NULL)
416 Request->Handle.AddressHandle = AddrFile;
472 if (
Address->Address[0].Address[0].sin_port)
478 if (AddrFile->
Port == 0xffff)
493 if (AddrFile->
Port == 0xffff)
515 if ((
Address->Address[0].Address[0].sin_port &&
516 AddrFile->
Port !=
Address->Address[0].Address[0].sin_port) ||
517 AddrFile->
Port == 0xffff)
525 Address->Address[0].Address[0].sin_port));
567 Request->Handle.AddressHandle = AddrFile;
650 Request->Handle.ConnectionContext = Connection;
671 Connection =
Request->Handle.ConnectionContext;
700 if (!ControlChannel) {
721 Request->Handle.ControlChannel = ControlChannel;
#define KeQuerySystemTime(t)
PADDRESS_FILE AddrFindShared(PIP_ADDRESS BindAddress, USHORT Port, USHORT Protocol)
BOOLEAN AddrIsUnspecified(PIP_ADDRESS Address)
#define TI_DbgPrint(_t_, _x_)
IPv4_RAW_ADDRESS IPv4Address
NTSTATUS ICMPSendDatagram(PADDRESS_FILE AddrFile, PTDI_CONNECTION_INFORMATION ConnInfo, PCHAR BufferData, ULONG DataSize, PULONG DataUsed)
UINT UDPAllocatePort(UINT HintPort)
#define STATUS_INSUFFICIENT_RESOURCES
VOID ControlChannelFree(PVOID Object)
#define STATUS_INVALID_PARAMETER
DATAGRAM_SEND_ROUTINE Send
_In_ USHORT _In_ ULONG Protocol
NTSTATUS ExInitializeResourceLite(PULONG res)
NTSTATUS NTAPI ExDeleteResourceLite(IN PERESOURCE Resource)
union IP_ADDRESS::@984 Address
NTSTATUS TCPSocket(PCONNECTION_ENDPOINT Connection, UINT Family, UINT Type, UINT Proto)
NTSTATUS ReceiveShutdownStatus
VOID TCPFreePort(const UINT Port)
DATAGRAM_COMPLETION_ROUTINE Complete
VOID TcpipReleaseSpinLock(PKSPIN_LOCK SpinLock, KIRQL Irql)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
VOID TcpipAcquireSpinLock(PKSPIN_LOCK SpinLock, PKIRQL Irql)
BOOLEAN AddrReceiveMatch(PIP_ADDRESS LocalAddress, PIP_ADDRESS RemoteAddress)
#define STATUS_ADDRESS_ALREADY_EXISTS
#define DereferenceObject(Object)
struct _CONNECTION_ENDPOINT * Next
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
NTSTATUS FileOpenConnection(PTDI_REQUEST Request, PVOID ClientContext)
NTSTATUS TCPClose(PCONNECTION_ENDPOINT Connection)
NTSTATUS FileCloseControlChannel(PTDI_REQUEST Request)
FORCEINLINE VOID KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock)
#define ForEachInterface(n)
NTSTATUS UDPSendDatagram(PADDRESS_FILE AddrFile, PTDI_CONNECTION_INFORMATION ConnInfo, PCHAR BufferData, ULONG DataSize, PULONG DataUsed)
UINT TCPAllocatePort(const UINT HintPort)
FORCEINLINE PLIST_ENTRY RemoveHeadList(_Inout_ PLIST_ENTRY ListHead)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
NTSTATUS FileOpenControlChannel(PTDI_REQUEST Request)
struct _LIST_ENTRY * Flink
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
#define NT_SUCCESS(StatCode)
PADDRESS_FILE AddrSearchFirst(PIP_ADDRESS Address, USHORT Port, USHORT Protocol, PAF_SEARCH SearchContext)
#define EXCEPTION_EXECUTE_HANDLER
PLIST_ENTRY NTAPI ExInterlockedInsertTailList(IN OUT PLIST_ENTRY ListHead, IN OUT PLIST_ENTRY ListEntry, IN OUT PKSPIN_LOCK Lock)
NTSTATUS RawIPSendDatagram(PADDRESS_FILE AddrFile, PTDI_CONNECTION_INFORMATION ConnInfo, PCHAR Buffer, ULONG DataSize, PULONG DataUsed)
BOOLEAN AddrIsBroadcastMatch(PIP_ADDRESS UnicastAddress, PIP_ADDRESS BroadcastAddress)
PVOID NTAPI PsGetCurrentThreadTeb(VOID)
LIST_ENTRY ShutdownRequest
#define ExAllocatePoolWithTag(hernya, size, tag)
VOID UDPFreePort(UINT Port)
VOID AddrFileFree(PVOID Object)
#define InterlockedDecrement
BOOLEAN AddrIsEqual(PIP_ADDRESS Address1, PIP_ADDRESS Address2)
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
VOID LogActiveObjects(VOID)
LIST_ENTRY ReceiveRequest
#define ReferenceObject(Object)
struct _CONNECTION_ENDPOINT * Listener
LIST_ENTRY AddressFileListHead
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
KSPIN_LOCK AddressFileListLock
PADDRESS_FILE AddrSearchNext(PAF_SEARCH SearchContext)
void LibTCPDumpPcb(PVOID SocketContext)
PIP_INTERFACE AddrLocateInterface(PIP_ADDRESS MatchAddress)
#define InterlockedIncrement
#define UnlockObject(Object)
#define STATUS_INVALID_ADDRESS
NTSTATUS FileOpenAddress(PTDI_REQUEST Request, PTA_IP_ADDRESS Address, USHORT Protocol, BOOLEAN Shared, PVOID Options)
#define InitializeListHead(ListHead)
LIST_ENTRY ConnectRequest
HANDLE NTAPI PsGetCurrentProcessId(VOID)
VOID AddEntity(ULONG EntityType, PVOID Context, ULONG Flags)
NTSTATUS FileCloseConnection(PTDI_REQUEST Request)
#define RtlZeroMemory(Destination, Length)
KSPIN_LOCK ConnectionEndpointListLock
struct _CONNECTION_ENDPOINT * Connection
VOID RemoveEntityByContext(PVOID Context)
#define _SEH2_EXCEPT(...)
NTSTATUS FileCloseAddress(PTDI_REQUEST Request)
BOOL SendRequest(PCHAR pInBuffer, ULONG InBufferLength, PCHAR pOutBuffer, PULONG pOutBufferLength)
#define ExFreePoolWithTag(_P, _T)
PCONNECTION_ENDPOINT TCPAllocateConnectionEndpoint(PVOID ClientContext)
_Must_inspect_result_ _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR RemoteAddress
PCHAR A2S(PIP_ADDRESS Address)
_Must_inspect_result_ _In_ ULONG _In_ PSOCKADDR LocalAddress
LIST_ENTRY ConnectionEndpointListHead
#define LockObject(Object)
LARGE_INTEGER CreationTime