diff --git a/reactos/drivers/network/afd/afd/info.c b/reactos/drivers/network/afd/afd/info.c index 4af2d8595e3..e0c26c5f032 100644 --- a/reactos/drivers/network/afd/afd/info.c +++ b/reactos/drivers/network/afd/afd/info.c @@ -20,6 +20,7 @@ AfdGetInfo( PDEVICE_OBJECT DeviceObject, PIRP Irp, PAFD_INFO InfoReq = IrpSp->Parameters.DeviceIoControl.Type3InputBuffer; PFILE_OBJECT FileObject = IrpSp->FileObject; PAFD_FCB FCB = FileObject->FsContext; + PLIST_ENTRY CurrentEntry; AFD_DbgPrint(MID_TRACE,("Called %x %x\n", InfoReq, InfoReq ? InfoReq->InformationClass : 0)); @@ -42,7 +43,7 @@ AfdGetInfo( PDEVICE_OBJECT DeviceObject, PIRP Irp, break; case AFD_INFO_BLOCKING_MODE: - InfoReq->Information.Ulong = 0; + InfoReq->Information.Ulong = FCB->BlockingMode; break; case AFD_INFO_RECEIVE_CONTENT_SIZE: @@ -53,6 +54,23 @@ AfdGetInfo( PDEVICE_OBJECT DeviceObject, PIRP Irp, break; + case AFD_INFO_SENDS_IN_PROGRESS: + InfoReq->Information.Ulong = 0; + + /* Count the queued sends */ + CurrentEntry = FCB->PendingIrpList[FUNCTION_SEND].Flink; + while (CurrentEntry != &FCB->PendingIrpList[FUNCTION_SEND]) + { + InfoReq->Information.Ulong++; + CurrentEntry = CurrentEntry->Flink; + } + + /* Count the send in progress */ + if (FCB->SendIrp.InFlightRequest) + InfoReq->Information.Ulong++; + + break; + default: AFD_DbgPrint(MID_TRACE,("Unknown info id %x\n", InfoReq->InformationClass));