-/* $Id$
+/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* FILE: drivers/net/afd/afd/read.c
* UPDATE HISTORY:
* 20040708 Created
*/
+
#include "afd.h"
static VOID RefillSocketBuffer( PAFD_FCB FCB )
TDI_RECEIVE_NORMAL,
FCB->Recv.Window + FCB->Recv.Content,
FCB->Recv.Size - FCB->Recv.Content,
- &FCB->ReceiveIrp.Iosb,
ReceiveComplete,
FCB );
}
*TotalBytesCopied = 0;
- AFD_DbgPrint(MID_TRACE,("Called, BytesAvailable = %d\n",
- BytesAvailable));
+ AFD_DbgPrint(MID_TRACE,("Called, BytesAvailable = %u\n", BytesAvailable));
if( CantReadMore(FCB) ) return STATUS_SUCCESS;
if( !BytesAvailable ) return STATUS_PENDING;
Map = (PAFD_MAPBUF)(RecvReq->BufferArray + RecvReq->BufferCount);
- AFD_DbgPrint(MID_TRACE,("Buffer Count: %d @ %x\n",
+ AFD_DbgPrint(MID_TRACE,("Buffer Count: %u @ %p\n",
RecvReq->BufferCount,
RecvReq->BufferArray));
for( i = 0;
if( Map[i].Mdl ) {
Map[i].BufferAddress = MmMapLockedPages( Map[i].Mdl, KernelMode );
- AFD_DbgPrint(MID_TRACE,("Buffer %d: %x:%d\n",
+ AFD_DbgPrint(MID_TRACE,("Buffer %u: %p:%u\n",
i,
Map[i].BufferAddress,
BytesToCopy));
PIRP NextIrp;
PIO_STACK_LOCATION NextIrpSp;
PAFD_RECV_INFO RecvReq;
- UINT TotalBytesCopied = 0, RetBytesCopied = 0;
+ UINT TotalBytesCopied = 0;
NTSTATUS Status = STATUS_SUCCESS, RetStatus = STATUS_PENDING;
- AFD_DbgPrint(MID_TRACE,("%x %x\n", FCB, Irp));
+ AFD_DbgPrint(MID_TRACE,("%p %p\n", FCB, Irp));
- AFD_DbgPrint(MID_TRACE,("FCB %x Receive data waiting %d\n",
+ AFD_DbgPrint(MID_TRACE,("FCB %p Receive data waiting %u\n",
FCB, FCB->Recv.Content));
if( CantReadMore( FCB ) ) {
NextIrpSp = IoGetCurrentIrpStackLocation( NextIrp );
RecvReq = GetLockedData(NextIrp, NextIrpSp);
- AFD_DbgPrint(MID_TRACE,("Completing recv %x (%d)\n", NextIrp,
+ AFD_DbgPrint(MID_TRACE,("Completing recv %p (%u)\n", NextIrp,
TotalBytesCopied));
UnlockBuffers( RecvReq->BufferArray,
RecvReq->BufferCount, FALSE );
}
else
{
- /* Unexpected disconnect by the remote host or initial read after a graceful disconnnect */
+ /* Unexpected disconnect by the remote host or initial read after a graceful disconnect */
Status = FCB->LastReceiveStatus;
}
NextIrp->IoStatus.Status = Status;
/* Kick the user that receive would be possible now */
/* XXX Not implemented yet */
- AFD_DbgPrint(MID_TRACE,("FCB %x Receive data waiting %d\n",
+ AFD_DbgPrint(MID_TRACE,("FCB %p Receive data waiting %u\n",
FCB, FCB->Recv.Content));
/*OskitDumpBuffer( FCB->Recv.Window, FCB->Recv.Content );*/
NextIrpSp = IoGetCurrentIrpStackLocation( NextIrp );
RecvReq = GetLockedData(NextIrp, NextIrpSp);
- AFD_DbgPrint(MID_TRACE,("RecvReq @ %x\n", RecvReq));
+ AFD_DbgPrint(MID_TRACE,("RecvReq @ %p\n", RecvReq));
Status = TryToSatisfyRecvRequestFromBuffer
( FCB, RecvReq, &TotalBytesCopied );
if( Status == STATUS_PENDING ) {
- AFD_DbgPrint(MID_TRACE,("Ran out of data for %x\n", NextIrp));
+ AFD_DbgPrint(MID_TRACE,("Ran out of data for %p\n", NextIrp));
InsertHeadList(&FCB->PendingIrpList[FUNCTION_RECV],
&NextIrp->Tail.Overlay.ListEntry);
break;
} else {
- AFD_DbgPrint(MID_TRACE,("Completing recv %x (%d)\n", NextIrp,
+ AFD_DbgPrint(MID_TRACE,("Completing recv %p (%u)\n", NextIrp,
TotalBytesCopied));
UnlockBuffers( RecvReq->BufferArray,
RecvReq->BufferCount, FALSE );
NextIrp->IoStatus.Information = TotalBytesCopied;
if( NextIrp == Irp ) {
RetStatus = Status;
- RetBytesCopied = TotalBytesCopied;
}
if( NextIrp->MdlAddress ) UnlockRequest( NextIrp, IoGetCurrentIrpStackLocation( NextIrp ) );
(void)IoSetCancelRoutine(NextIrp, NULL);
PollReeval(FCB->DeviceExt, FCB->FileObject);
}
- AFD_DbgPrint(MID_TRACE,("RetStatus for irp %x is %x\n", Irp, RetStatus));
-
- /* Sometimes we're called with a NULL Irp */
- if( Irp ) {
- Irp->IoStatus.Status = RetStatus;
- Irp->IoStatus.Information = RetBytesCopied;
- }
+ AFD_DbgPrint(MID_TRACE,("RetStatus for irp %p is %x\n", Irp, RetStatus));
return RetStatus;
}
PAFD_RECV_INFO RecvReq;
PIO_STACK_LOCATION NextIrpSp;
+ UNREFERENCED_PARAMETER(DeviceObject);
+
AFD_DbgPrint(MID_TRACE,("Called\n"));
if( !SocketAcquireStateLock( FCB ) )
BytesToCopy = MIN( RecvReq->BufferArray[0].len, BytesAvailable );
- AFD_DbgPrint(MID_TRACE,("BytesToCopy: %d len %d\n", BytesToCopy,
+ AFD_DbgPrint(MID_TRACE,("BytesToCopy: %u len %u\n", BytesToCopy,
RecvReq->BufferArray[0].len));
if( Map[0].Mdl ) {
sizeof(USHORT),
RecvReq->BufferArray[1].len);
- AFD_DbgPrint(MID_TRACE,("Copying %d bytes of address\n", AddrLen));
+ AFD_DbgPrint(MID_TRACE,("Copying %u bytes of address\n", AddrLen));
Map[1].BufferAddress = MmMapLockedPages( Map[1].Mdl, KernelMode );
Map[0].BufferAddress = MmMapLockedPages( Map[0].Mdl, KernelMode );
- AFD_DbgPrint(MID_TRACE,("Buffer %d: %x:%d\n",
+ AFD_DbgPrint(MID_TRACE,("Buffer %d: %p:%u\n",
0,
Map[0].BufferAddress,
BytesToCopy));
if (!(RecvReq->TdiFlags & TDI_RECEIVE_PEEK))
{
FCB->Recv.Content -= DatagramRecv->Len;
- ExFreePool( DatagramRecv->Address );
- ExFreePool( DatagramRecv );
+ ExFreePoolWithTag(DatagramRecv->Address, TAG_AFD_TRANSPORT_ADDRESS);
+ ExFreePoolWithTag(DatagramRecv, TAG_AFD_STORED_DATAGRAM);
}
AFD_DbgPrint(MID_TRACE,("Done\n"));
PLIST_ENTRY ListEntry;
KPROCESSOR_MODE LockMode;
- AFD_DbgPrint(MID_TRACE,("Called on %x\n", FCB));
+ UNREFERENCED_PARAMETER(DeviceObject);
+ UNREFERENCED_PARAMETER(Short);
+
+ AFD_DbgPrint(MID_TRACE,("Called on %p\n", FCB));
if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp );
UINT DGSize = Irp->IoStatus.Information + sizeof( AFD_STORED_DATAGRAM );
PLIST_ENTRY NextIrpEntry, DatagramRecvEntry;
- AFD_DbgPrint(MID_TRACE,("Called on %x\n", FCB));
+ UNREFERENCED_PARAMETER(DeviceObject);
+
+ AFD_DbgPrint(MID_TRACE,("Called on %p\n", FCB));
if( !SocketAcquireStateLock( FCB ) )
return STATUS_FILE_CLOSED;
while( !IsListEmpty( &FCB->DatagramList ) ) {
DatagramRecvEntry = RemoveHeadList(&FCB->DatagramList);
DatagramRecv = CONTAINING_RECORD(DatagramRecvEntry, AFD_STORED_DATAGRAM, ListEntry);
- ExFreePool( DatagramRecv->Address );
- ExFreePool( DatagramRecv );
+ ExFreePoolWithTag(DatagramRecv->Address, TAG_AFD_TRANSPORT_ADDRESS);
+ ExFreePoolWithTag(DatagramRecv, TAG_AFD_STORED_DATAGRAM);
}
SocketStateUnlock( FCB );
return STATUS_FILE_CLOSED;
}
- DatagramRecv = ExAllocatePool( NonPagedPool, DGSize );
+ DatagramRecv = ExAllocatePoolWithTag(NonPagedPool,
+ DGSize,
+ TAG_AFD_STORED_DATAGRAM);
if( DatagramRecv ) {
DatagramRecv->Len = Irp->IoStatus.Information;
RtlCopyMemory( DatagramRecv->Buffer, FCB->Recv.Window,
DatagramRecv->Len );
- AFD_DbgPrint(MID_TRACE,("Received (A %x)\n",
+ AFD_DbgPrint(MID_TRACE,("Received (A %p)\n",
FCB->AddressFrom->RemoteAddress));
DatagramRecv->Address =
TaCopyTransportAddress( FCB->AddressFrom->RemoteAddress );
} else Status = STATUS_NO_MEMORY;
if( !NT_SUCCESS( Status ) ) {
- if( DatagramRecv ) ExFreePool( DatagramRecv );
+
+ if (DatagramRecv)
+ {
+ ExFreePoolWithTag(DatagramRecv, TAG_AFD_STORED_DATAGRAM);
+ }
+
SocketStateUnlock( FCB );
return Status;
} else {
NextIrpSp = IoGetCurrentIrpStackLocation( NextIrp );
RecvReq = GetLockedData(NextIrp, NextIrpSp);
- AFD_DbgPrint(MID_TRACE,("RecvReq: %x, DatagramRecv: %x\n",
+ AFD_DbgPrint(MID_TRACE,("RecvReq: %p, DatagramRecv: %p\n",
RecvReq, DatagramRecv));
AFD_DbgPrint(MID_TRACE,("Satisfying\n"));
FCB->Recv.Window,
FCB->Recv.Size,
FCB->AddressFrom,
- &FCB->ReceiveIrp.Iosb,
PacketSocketRecvComplete,
FCB );
}
PAFD_STORED_DATAGRAM DatagramRecv;
KPROCESSOR_MODE LockMode;
- AFD_DbgPrint(MID_TRACE,("Called on %x\n", FCB));
+ UNREFERENCED_PARAMETER(DeviceObject);
+
+ AFD_DbgPrint(MID_TRACE,("Called on %p\n", FCB));
if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp );