From 40f5fb3a682dcda5365d5def9fb784b014341f67 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sat, 27 May 2017 16:50:29 +0000 Subject: [PATCH] [RXCE] Implement FCB refcounting CORE-11327 svn path=/trunk/; revision=74682 --- reactos/sdk/lib/drivers/rxce/rxce.c | 33 +++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/reactos/sdk/lib/drivers/rxce/rxce.c b/reactos/sdk/lib/drivers/rxce/rxce.c index c53140990e9..ac355e8db98 100644 --- a/reactos/sdk/lib/drivers/rxce/rxce.c +++ b/reactos/sdk/lib/drivers/rxce/rxce.c @@ -4367,12 +4367,25 @@ RxpDereferenceAndFinalizeNetFcb( return Freed; } +/* + * @implemented + */ LONG RxpDereferenceNetFcb( PFCB Fcb) { - UNIMPLEMENTED; - return 0; + LONG NewCount; + + PAGED_CODE(); + + ASSERT(NodeTypeIsFcb(Fcb)); + + NewCount = InterlockedDecrement((volatile long *)&Fcb->NodeReferenceCount); + ASSERT(NewCount >= 0); + + PRINT_REF_COUNT(NETFCB, NewCount); + + return NewCount; } /* @@ -4491,12 +4504,24 @@ RxPrefixTableLookupName( return Container; } +/* + * @implemented + */ LONG RxpReferenceNetFcb( PFCB Fcb) { - UNIMPLEMENTED; - return 0; + LONG NewCount; + + PAGED_CODE(); + + ASSERT(NodeTypeIsFcb(Fcb)); + + NewCount = InterlockedIncrement((volatile long *)&Fcb->NodeReferenceCount); + + PRINT_REF_COUNT(NETFCB, Fcb->NodeReferenceCount); + + return NewCount; } /*