-/* $Id$
+/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* FILE: drivers/net/afd/afd/info.c
* UPDATE HISTORY:
* 20040708 Created
*/
+
#include "afd.h"
NTSTATUS NTAPI
PAFD_FCB FCB = FileObject->FsContext;
PLIST_ENTRY CurrentEntry;
- AFD_DbgPrint(MID_TRACE,("Called %x %x\n", InfoReq,
+ UNREFERENCED_PARAMETER(DeviceObject);
+
+ AFD_DbgPrint(MID_TRACE,("Called %p %x\n", InfoReq,
InfoReq ? InfoReq->InformationClass : 0));
if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp );
case AFD_INFO_SEND_WINDOW_SIZE:
InfoReq->Information.Ulong = FCB->Send.Size;
- AFD_DbgPrint(MID_TRACE,("Send window size %d\n", FCB->Send.Size));
+ AFD_DbgPrint(MID_TRACE,("Send window size %u\n", FCB->Send.Size));
break;
case AFD_INFO_GROUP_ID_TYPE:
InfoReq->Information.LargeInteger.u.HighPart = FCB->GroupType;
InfoReq->Information.LargeInteger.u.LowPart = FCB->GroupID;
- AFD_DbgPrint(MID_TRACE, ("Group ID: %d Group Type: %d\n", FCB->GroupID, FCB->GroupType));
+ AFD_DbgPrint(MID_TRACE, ("Group ID: %u Group Type: %u\n", FCB->GroupID, FCB->GroupType));
break;
case AFD_INFO_BLOCKING_MODE:
PAFD_FCB FCB = FileObject->FsContext;
PCHAR NewBuffer;
+ UNREFERENCED_PARAMETER(DeviceObject);
+
if (!SocketAcquireStateLock(FCB)) return LostSocket(Irp);
if (!InfoReq)
_SEH2_TRY {
switch (InfoReq->InformationClass) {
case AFD_INFO_BLOCKING_MODE:
- AFD_DbgPrint(MID_TRACE,("Blocking mode set to %d\n", InfoReq->Information.Boolean));
+ AFD_DbgPrint(MID_TRACE,("Blocking mode set to %u\n", InfoReq->Information.Boolean));
FCB->NonBlocking = InfoReq->Information.Boolean;
break;
case AFD_INFO_INLINING_MODE:
FCB->OobInline = InfoReq->Information.Boolean;
break;
case AFD_INFO_RECEIVE_WINDOW_SIZE:
- NewBuffer = ExAllocatePool(PagedPool, InfoReq->Information.Ulong);
+ NewBuffer = ExAllocatePoolWithTag(PagedPool,
+ InfoReq->Information.Ulong,
+ TAG_AFD_DATA_BUFFER);
+
if (NewBuffer)
{
if (FCB->Recv.Content > InfoReq->Information.Ulong)
FCB->Recv.Window,
FCB->Recv.Content);
- ExFreePool(FCB->Recv.Window);
+ ExFreePoolWithTag(FCB->Recv.Window, TAG_AFD_DATA_BUFFER);
}
FCB->Recv.Size = InfoReq->Information.Ulong;
}
break;
case AFD_INFO_SEND_WINDOW_SIZE:
- NewBuffer = ExAllocatePool(PagedPool, InfoReq->Information.Ulong);
+ NewBuffer = ExAllocatePoolWithTag(PagedPool,
+ InfoReq->Information.Ulong,
+ TAG_AFD_DATA_BUFFER);
+
if (NewBuffer)
{
if (FCB->Send.BytesUsed > InfoReq->Information.Ulong)
FCB->Send.Window,
FCB->Send.BytesUsed);
- ExFreePool(FCB->Send.Window);
+ ExFreePoolWithTag(FCB->Send.Window, TAG_AFD_DATA_BUFFER);
}
FCB->Send.Size = InfoReq->Information.Ulong;
}
break;
default:
- AFD_DbgPrint(MIN_TRACE,("Unknown request %d\n", InfoReq->InformationClass));
+ AFD_DbgPrint(MIN_TRACE,("Unknown request %u\n", InfoReq->InformationClass));
break;
}
} _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
PAFD_FCB FCB = FileObject->FsContext;
PMDL Mdl = NULL;
+ UNREFERENCED_PARAMETER(DeviceObject);
+ ASSERT(Irp->MdlAddress == NULL);
+
if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp );
if( FCB->AddressFile.Object == NULL && FCB->Connection.Object == NULL ) {
TDI_QUERY_ADDRESS_INFO,
Mdl );
}
+
+ /* Check if MmProbeAndLockPages or TdiQueryInformation failed and
+ * clean up Mdl */
+ if (!NT_SUCCESS(Status) && Irp->MdlAddress != Mdl)
+ IoFreeMdl(Mdl);
} else
Status = STATUS_INSUFFICIENT_RESOURCES;
PFILE_OBJECT FileObject = IrpSp->FileObject;
PAFD_FCB FCB = FileObject->FsContext;
+ UNREFERENCED_PARAMETER(DeviceObject);
if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp );