30 if (
FCB->RemoteAddress)
38 if( !
FCB->RemoteAddress )
72 IPAddr->Address[0].AddressType));
74 IPAddr->Address[0].AddressLength));
76 IPAddr->Address[0].Address[0].sin_port));
78 IPAddr->Address[0].Address[0].in_addr));
105 FCB->ListenIrp.InFlightRequest =
NULL;
120 if (
FCB->ListenIrp.ConnectionReturnInfo)
125 FCB->ListenIrp.ConnectionReturnInfo =
NULL;
128 if (
FCB->ListenIrp.ConnectionCallInfo)
133 FCB->ListenIrp.ConnectionCallInfo =
NULL;
146 return Irp->IoStatus.Status;
157 FCB->LocalAddress->Address[0].AddressType;
160 Qelt->
Seq =
FCB->ConnSeq++;
164 ConnectionReturnInfo->RemoteAddress));
170 FCB->ListenIrp.ConnectionReturnInfo->RemoteAddress );
183 Tail.Overlay.ListEntry ),
194 FCB->LocalAddress->Address[0].AddressType);
198 FCB->LocalAddress->Address[0].AddressType);
202 FCB->Connection.Object,
203 &
FCB->ListenIrp.ConnectionCallInfo,
204 &
FCB->ListenIrp.ConnectionReturnInfo,
259 ( &
FCB->ListenIrp.ConnectionCallInfo,
260 FCB->LocalAddress->Address[0].AddressType );
265 ( &
FCB->ListenIrp.ConnectionReturnInfo,
266 FCB->LocalAddress->Address[0].AddressType );
273 FCB->ListenIrp.ConnectionCallInfo =
NULL;
280 FCB->Connection.Object,
281 &
FCB->ListenIrp.ConnectionCallInfo,
282 &
FCB->ListenIrp.ConnectionReturnInfo,
326 }
else if (
FCB->NonBlocking) {
353 for( PendingConn =
FCB->PendingConnections.Flink;
354 PendingConn != &
FCB->PendingConnections;
355 PendingConn = PendingConn->Flink ) {
360 AcceptData->SequenceNumber,
361 PendingConnObj->
Seq));
363 if( PendingConnObj->
Seq == AcceptData->SequenceNumber ) {
369 ( AcceptData->ListenHandle,
VOID SocketStateUnlock(PAFD_FCB FCB)
TRANSPORT_ADDRESS Address
static NTSTATUS SatisfyPreAccept(PIRP Irp, PAFD_TDI_OBJECT_QELT Qelt)
NTSTATUS TdiBuildNullConnectionInfoInPlace(PTDI_CONNECTION_INFORMATION ConnInfo, ULONG Type)
PTDI_CONNECTION_INFORMATION ConnInfo
VOID PollReeval(PAFD_DEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject)
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
#define UNREFERENCED_PARAMETER(P)
#define TAG_AFD_TDI_CONNECTION_INFORMATION
#define STATUS_INVALID_PARAMETER
BOOLEAN UseDelayedAcceptance
PVOID LockRequest(PIRP Irp, PIO_STACK_LOCATION IrpSp, BOOLEAN Output, KPROCESSOR_MODE *LockMode)
struct _TA_ADDRESS_IP * PTA_IP_ADDRESS
struct _AFD_RECEIVED_ACCEPT_DATA * PAFD_RECEIVED_ACCEPT_DATA
#define TAG_AFD_TRANSPORT_ADDRESS
BOOLEAN SocketAcquireStateLock(PAFD_FCB FCB)
NTSTATUS NTAPI UnlockAndMaybeComplete(PAFD_FCB FCB, NTSTATUS Status, PIRP Irp, UINT Information)
#define InsertTailList(ListHead, Entry)
IoSetCancelRoutine(Irp, CancelRoutine)
_Must_inspect_result_ _In_ PFILE_OBJECT NewFileObject
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
_In_ PDEVICE_OBJECT DeviceObject
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
static IO_COMPLETION_ROUTINE ListenComplete
#define FUNCTION_PREACCEPT
#define AFD_DbgPrint(_t_, _x_)
#define IoCompleteRequest
FORCEINLINE PLIST_ENTRY RemoveHeadList(_Inout_ PLIST_ENTRY ListHead)
NTSTATUS AfdWaitForListen(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
#define TAG_AFD_ACCEPT_QUEUE
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)
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
#define IO_NETWORK_INCREMENT
struct _AFD_FCB * PAFD_FCB
NTSTATUS LeaveIrpUntilLater(PAFD_FCB FCB, PIRP Irp, UINT Function)
#define NT_SUCCESS(StatCode)
VOID UnlockRequest(PIRP Irp, PIO_STACK_LOCATION IrpSp)
#define ObDereferenceObject
NTSTATUS TdiListen(PIRP *Irp, PFILE_OBJECT ConnectionObject, PTDI_CONNECTION_INFORMATION *RequestConnectionInfo, PTDI_CONNECTION_INFORMATION *ReturnConnectionInfo, PIO_COMPLETION_ROUTINE CompletionRoutine, PVOID CompletionContext)
NTSTATUS WarmSocketForConnection(PAFD_FCB FCB)
#define STATUS_UNSUCCESSFUL
NTSTATUS TdiBuildConnectionInfo(PTDI_CONNECTION_INFORMATION *ConnectionInfo, PTRANSPORT_ADDRESS Address)
#define ExAllocatePoolWithTag(hernya, size, tag)
static NTSTATUS SatisfyAccept(PAFD_DEVICE_EXTENSION DeviceExt, PIRP Irp, PFILE_OBJECT NewFileObject, PAFD_TDI_OBJECT_QELT Qelt)
struct _AFD_DEVICE_EXTENSION * PAFD_DEVICE_EXTENSION
NTSTATUS AfdListenSocket(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
NTSTATUS MakeSocketIntoConnection(PAFD_FCB FCB)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
VOID TaCopyTransportAddressInPlace(PTRANSPORT_ADDRESS Target, PTRANSPORT_ADDRESS Source)
NTSTATUS LostSocket(PIRP Irp)
_In_ PIO_STACK_LOCATION IrpSp
#define SOCKET_STATE_LISTENING
#define SOCKET_STATE_BOUND
#define SOCKET_STATE_CLOSED
PTRANSPORT_ADDRESS TaCopyTransportAddress(PTRANSPORT_ADDRESS OtherAddress)
NTSTATUS AfdAccept(PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp)
#define ExFreePoolWithTag(_P, _T)
NTSTATUS TdiBuildNullConnectionInfo(PTDI_CONNECTION_INFORMATION *ConnectionInfo, ULONG Type)
#define STATUS_FILE_CLOSED