-/* $Id$
+/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* FILE: drivers/net/afd/afd/bind.c
NTSTATUS WarmSocketForBind( PAFD_FCB FCB, ULONG ShareType ) {
NTSTATUS Status;
- AFD_DbgPrint(MID_TRACE,("Called (AF %d)\n",
+ AFD_DbgPrint(MID_TRACE,("Called (AF %u)\n",
FCB->LocalAddress->Address[0].AddressType));
if( !FCB->TdiDeviceName.Length || !FCB->TdiDeviceName.Buffer ) {
if (NT_SUCCESS(Status) && !FCB->Recv.Window)
{
- FCB->Recv.Window = ExAllocatePool(PagedPool, FCB->Recv.Size);
+ FCB->Recv.Window = ExAllocatePoolWithTag(PagedPool,
+ FCB->Recv.Size,
+ TAG_AFD_DATA_BUFFER);
+
if (!FCB->Recv.Window)
Status = STATUS_NO_MEMORY;
}
FCB->Recv.Window,
FCB->Recv.Size,
FCB->AddressFrom,
- &FCB->ReceiveIrp.Iosb,
PacketSocketRecvComplete,
FCB);
PFILE_OBJECT FileObject = IrpSp->FileObject;
PAFD_FCB FCB = FileObject->FsContext;
PAFD_BIND_DATA BindReq;
+ HANDLE UserHandle = NULL;
+
+ UNREFERENCED_PARAMETER(DeviceObject);
AFD_DbgPrint(MID_TRACE,("Called\n"));
return UnlockAndMaybeComplete( FCB, STATUS_NO_MEMORY,
Irp, 0 );
- if( FCB->LocalAddress ) ExFreePool( FCB->LocalAddress );
+ if (FCB->LocalAddress)
+ {
+ ExFreePoolWithTag(FCB->LocalAddress, TAG_AFD_TRANSPORT_ADDRESS);
+ }
+
FCB->LocalAddress = TaCopyTransportAddress( &BindReq->Address );
if( FCB->LocalAddress )
AFD_DbgPrint(MID_TRACE,("FCB->Flags %x\n", FCB->Flags));
if (NT_SUCCESS(Status))
- FCB->State = SOCKET_STATE_BOUND;
+ {
+ Status = ObOpenObjectByPointer(FCB->AddressFile.Object,
+ 0,
+ NULL,
+ MAXIMUM_ALLOWED,
+ *IoFileObjectType,
+ Irp->RequestorMode,
+ &UserHandle);
+ if (NT_SUCCESS(Status))
+ FCB->State = SOCKET_STATE_BOUND;
+ }
/* MSAFD relies on us returning the address file handle in the IOSB */
return UnlockAndMaybeComplete( FCB, Status, Irp,
- (ULONG_PTR)FCB->AddressFile.Handle );
+ (ULONG_PTR)UserHandle);
}
-