AFSFileCleanupResultCB *pResultCB = NULL;
ULONG ulResultLen = 0;
ULONG ulNotificationFlags = 0;
+ LONG lCount;
__try
{
ASSERT( pFcb->OpenHandleCount != 0);
- InterlockedDecrement( &pFcb->OpenHandleCount);
+ AFSReleaseResource( &pFcb->NPFcb->Resource);
+
+ lCount = InterlockedDecrement( &pFcb->OpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSCleanup (RootAll) Decrement handle count on Fcb %08lX Cnt %d\n",
pFcb,
- pFcb->OpenHandleCount);
-
- AFSReleaseResource( &pFcb->NPFcb->Resource);
+ lCount);
FsRtlNotifyCleanup( pControlDeviceExt->Specific.Control.NotifySync,
&pControlDeviceExt->Specific.Control.DirNotifyList,
pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount > 0)
{
- InterlockedDecrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount = InterlockedDecrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSCleanup (IOCtl) Decrement child open handle count on Parent object %08lX Cnt %d\n",
pObjectInfo->ParentObjectInformation,
- pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount);
}
- InterlockedDecrement( &pFcb->OpenHandleCount);
+ AFSReleaseResource( &pFcb->NPFcb->Resource);
+
+ lCount = InterlockedDecrement( &pFcb->OpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSCleanup (IOCtl) Decrement handle count on Fcb %08lX Cnt %d\n",
pFcb,
- pFcb->OpenHandleCount);
-
- //
- // And finally, release the Fcb if we acquired it.
- //
-
- AFSReleaseResource( &pFcb->NPFcb->Resource);
+ lCount);
break;
}
ASSERT( pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount > 0);
- InterlockedDecrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount = InterlockedDecrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSCleanup (File) Decrement child open handle count on Parent object %08lX Cnt %d\n",
pObjectInfo->ParentObjectInformation,
- pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount);
}
- InterlockedDecrement( &pFcb->OpenHandleCount);
+ AFSReleaseResource( &pFcb->NPFcb->Resource);
+
+ lCount = InterlockedDecrement( &pFcb->OpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSCleanup (File) Decrement handle count on Fcb %08lX Cnt %d\n",
pFcb,
- pFcb->OpenHandleCount);
-
- //
- // And finally, release the Fcb if we acquired it.
- //
-
- AFSReleaseResource( &pFcb->NPFcb->Resource);
+ lCount);
break;
}
ASSERT( pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount > 0);
- InterlockedDecrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount = InterlockedDecrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSCleanup (Dir) Decrement child open handle count on Parent object %08lX Cnt %d\n",
pObjectInfo->ParentObjectInformation,
- pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount);
}
- InterlockedDecrement( &pFcb->OpenHandleCount);
+ AFSReleaseResource( &pFcb->NPFcb->Resource);
+
+ lCount = InterlockedDecrement( &pFcb->OpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSCleanup (Dir) Decrement handle count on Fcb %08lX Cnt %d\n",
pFcb,
- pFcb->OpenHandleCount);
-
- //
- // And finally, release the Fcb if we acquired it.
- //
-
- AFSReleaseResource( &pFcb->NPFcb->Resource);
+ lCount);
break;
}
ASSERT( pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount > 0);
- InterlockedDecrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount = InterlockedDecrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSCleanup (MP/SL) Decrement child open handle count on Parent object %08lX Cnt %d\n",
pObjectInfo->ParentObjectInformation,
- pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount);
}
- InterlockedDecrement( &pFcb->OpenHandleCount);
+ AFSReleaseResource( &pFcb->NPFcb->Resource);
+
+ lCount = InterlockedDecrement( &pFcb->OpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSCleanup (MP/SL) Decrement handle count on Fcb %08lX Cnt %d\n",
pFcb,
- pFcb->OpenHandleCount);
-
- //
- // And finally, release the Fcb if we acquired it.
- //
-
- AFSReleaseResource( &pFcb->NPFcb->Resource);
+ lCount);
break;
}
pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount > 0)
{
- InterlockedDecrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount = InterlockedDecrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSCleanup (Share) Decrement child open handle count on Parent object %08lX Cnt %d\n",
pObjectInfo->ParentObjectInformation,
- pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount);
}
- InterlockedDecrement( &pFcb->OpenHandleCount);
+ AFSReleaseResource( &pFcb->NPFcb->Resource);
+
+ lCount = InterlockedDecrement( &pFcb->OpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSCleanup (Share) Decrement handle count on Fcb %08lX Cnt %d\n",
pFcb,
- pFcb->OpenHandleCount);
-
- //
- // And finally, release the Fcb if we acquired it.
- //
-
- AFSReleaseResource( &pFcb->NPFcb->Resource);
+ lCount);
break;
}
GUID stAuthGroup;
ULONG ulNameProcessingFlags = 0;
BOOLEAN bOpenedReparsePoint = FALSE;
+ LONG lCount;
__Enter
{
"AFSCommonCreate Failed to open root Status %08lX\n",
ntStatus);
- InterlockedDecrement( &AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCreate Decrement1 count on &wZ DE %p Ccb %p Cnt %d\n",
+ "AFSCommonCreate Decrement1 count on &wZ DE %p Ccb %p Cnt %d\n",
&AFSGlobalRoot->DirectoryCB->NameInformation.FileName,
AFSGlobalRoot->DirectoryCB,
NULL,
- AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
+ lCount);
}
try_return( ntStatus);
// Perform in this order to prevent thrashing
//
- InterlockedIncrement( &pParentDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pParentDirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCreate Increment1 count on %wZ DE %p Ccb %p Cnt %d\n",
+ "AFSCommonCreate Increment1 count on %wZ DE %p Ccb %p Cnt %d\n",
&pParentDirectoryCB->NameInformation.FileName,
pParentDirectoryCB,
NULL,
- pParentDirectoryCB->OpenReferenceCount);
+ lCount);
//
// Do NOT decrement the reference count on the pDirectoryCB yet.
//
// It is now safe to drop the Reference Count
//
- InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCreate Decrement2 count on %wZ DE %p Ccb %p Cnt %d\n",
+ "AFSCommonCreate Decrement2 count on %wZ DE %p Ccb %p Cnt %d\n",
&pDirectoryCB->NameInformation.FileName,
pDirectoryCB,
NULL,
- pDirectoryCB->OpenReferenceCount);
+ lCount);
}
if( !NT_SUCCESS( ntStatus))
// Decrement the reference on the parent
//
- InterlockedDecrement( &pParentDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCreate Decrement3 count on %wZ DE %p Ccb %p Cnt %d\n",
+ "AFSCommonCreate Decrement3 count on %wZ DE %p Ccb %p Cnt %d\n",
&pParentDirectoryCB->NameInformation.FileName,
pParentDirectoryCB,
NULL,
- pParentDirectoryCB->OpenReferenceCount);
+ lCount);
}
try_return( ntStatus);
&pDirectoryCB->NameInformation.FileName,
ntStatus);
- InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCreate Decrement4 count on %wZ DE %p Ccb %p Cnt %d\n",
+ "AFSCommonCreate Decrement4 count on %wZ DE %p Ccb %p Cnt %d\n",
&pDirectoryCB->NameInformation.FileName,
pDirectoryCB,
NULL,
- pDirectoryCB->OpenReferenceCount);
+ lCount);
}
else
{
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCreate Decrement5 count on %wZ DE %p Ccb %p Cnt %d\n",
+ "AFSCommonCreate Decrement5 count on %wZ DE %p Ccb %p Cnt %d\n",
&pParentDirectoryCB->NameInformation.FileName,
pParentDirectoryCB,
NULL,
// Dereference the parent entry
//
- InterlockedDecrement( &pParentDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pParentDirectoryCB->NameInformation.FileName,
pParentDirectoryCB,
NULL,
- pParentDirectoryCB->OpenReferenceCount);
+ lCount);
try_return( ntStatus);
}
if( pDirectoryCB != NULL)
{
- InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCreate Decrement7a count on %wZ DE %p Ccb %p Cnt %d\n",
+ "AFSCommonCreate Decrement7a count on %wZ DE %p Ccb %p Cnt %d\n",
&pDirectoryCB->NameInformation.FileName,
pDirectoryCB,
NULL,
- pDirectoryCB->OpenReferenceCount);
+ lCount);
}
else
{
- InterlockedDecrement( &pParentDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCreate Decrement7b count on %wZ DE %p Ccb %p Cnt %d\n",
+ "AFSCommonCreate Decrement7b count on %wZ DE %p Ccb %p Cnt %d\n",
&pParentDirectoryCB->NameInformation.FileName,
pParentDirectoryCB,
NULL,
- pParentDirectoryCB->OpenReferenceCount);
+ lCount);
}
}
"AFSCommonCreate (%08lX) Attempt to open root as delete on close\n",
Irp);
- InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCreate Decrement8 count on %wZ DE %p Ccb %p Cnt %d\n",
+ "AFSCommonCreate Decrement8 count on %wZ DE %p Ccb %p Cnt %d\n",
&pDirectoryCB->NameInformation.FileName,
pDirectoryCB,
NULL,
- pDirectoryCB->OpenReferenceCount);
+ lCount);
try_return( ntStatus = STATUS_CANNOT_DELETE);
}
"AFSCommonCreate (%08lX) Attempt to open root as target directory\n",
Irp);
- InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCreate Decrement9 count on %wZ DE %p Ccb %p Cnt %d\n",
+ "AFSCommonCreate Decrement9 count on %wZ DE %p Ccb %p Cnt %d\n",
&pDirectoryCB->NameInformation.FileName,
pDirectoryCB,
NULL,
- pDirectoryCB->OpenReferenceCount);
+ lCount);
try_return( ntStatus = STATUS_INVALID_PARAMETER);
}
pVolumeCB->ObjectInformation.FileId.Volume,
ntStatus);
- InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCreate Decrement10 count on %wZ DE %p Ccb %p Cnt %d\n",
+ "AFSCommonCreate Decrement10 count on %wZ DE %p Ccb %p Cnt %d\n",
&pDirectoryCB->NameInformation.FileName,
pDirectoryCB,
NULL,
- pDirectoryCB->OpenReferenceCount);
+ lCount);
}
try_return( ntStatus);
&pDirectoryCB->NameInformation.FileName,
ntStatus);
- InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCreate Decrement11 count on %wZ DE %p Ccb %p Cnt %d\n",
+ "AFSCommonCreate Decrement11 count on %wZ DE %p Ccb %p Cnt %d\n",
&pDirectoryCB->NameInformation.FileName,
pDirectoryCB,
NULL,
- pDirectoryCB->OpenReferenceCount);
+ lCount);
}
try_return( ntStatus);
&pDirectoryCB->NameInformation.FileName,
ntStatus);
- InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCreate Decrement12 count on %wZ DE %p Ccb %p Cnt %d\n",
+ "AFSCommonCreate Decrement12 count on %wZ DE %p Ccb %p Cnt %d\n",
&pDirectoryCB->NameInformation.FileName,
pDirectoryCB,
NULL,
- pDirectoryCB->OpenReferenceCount);
+ lCount);
}
try_exit:
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCreate Count on %wZ DE %p Ccb %p Cnt %d\n",
+ "AFSCommonCreate Count on %wZ DE %p Ccb %p Cnt %d\n",
&pCcb->DirectoryCB->NameInformation.FileName,
pCcb->DirectoryCB,
pCcb,
if( bReleaseVolume)
{
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSCommonCreate Decrement count on Volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
}
//
{
NTSTATUS ntStatus = STATUS_SUCCESS;
+ LONG lCount;
__Enter
{
// Increment the open count on this Fcb
//
- InterlockedIncrement( &AFSRedirectorRoot->RootFcb->OpenReferenceCount);
+ lCount = InterlockedIncrement( &AFSRedirectorRoot->RootFcb->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenRedirector Increment count on Fcb %08lX Cnt %d\n",
AFSRedirectorRoot->RootFcb,
- AFSRedirectorRoot->RootFcb->OpenReferenceCount);
+ lCount);
- InterlockedIncrement( &AFSRedirectorRoot->RootFcb->OpenHandleCount);
+ lCount = InterlockedIncrement( &AFSRedirectorRoot->RootFcb->OpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenRedirector Increment handle count on Fcb %08lX Cnt %d\n",
AFSRedirectorRoot->RootFcb,
- AFSRedirectorRoot->RootFcb->OpenHandleCount);
+ lCount);
*Fcb = AFSRedirectorRoot->RootFcb;
- InterlockedIncrement( &(*Ccb)->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &(*Ccb)->DirectoryCB->OpenReferenceCount);
//
// Return the open result for this file
{
NTSTATUS ntStatus = STATUS_SUCCESS;
+ LONG lCount;
__Enter
{
// Increment the open count on this Fcb
//
- InterlockedIncrement( &AFSGlobalRoot->RootFcb->OpenReferenceCount);
+ lCount = InterlockedIncrement( &AFSGlobalRoot->RootFcb->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenAFSRoot Increment count on Fcb %08lX Cnt %d\n",
AFSGlobalRoot->RootFcb,
- AFSGlobalRoot->RootFcb->OpenReferenceCount);
+ lCount);
- InterlockedIncrement( &AFSGlobalRoot->RootFcb->OpenHandleCount);
+ lCount = InterlockedIncrement( &AFSGlobalRoot->RootFcb->OpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenAFSRoot Increment handle count on Fcb %08lX Cnt %d\n",
AFSGlobalRoot->RootFcb,
- AFSGlobalRoot->RootFcb->OpenHandleCount);
+ lCount);
*Fcb = AFSGlobalRoot->RootFcb;
AFSFileOpenCB stOpenCB;
AFSFileOpenResultCB stOpenResultCB;
ULONG ulResultLen = 0;
+ LONG lCount;
__Enter
{
// Increment the open count on this Fcb
//
- InterlockedIncrement( &VolumeCB->RootFcb->OpenReferenceCount);
+ lCount = InterlockedIncrement( &VolumeCB->RootFcb->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenRoot Increment count on Fcb %08lX Cnt %d\n",
VolumeCB->RootFcb,
- VolumeCB->RootFcb->OpenReferenceCount);
+ lCount);
- InterlockedIncrement( &VolumeCB->RootFcb->OpenHandleCount);
+ lCount = InterlockedIncrement( &VolumeCB->RootFcb->OpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenRoot Increment handle count on Fcb %08lX Cnt %d\n",
VolumeCB->RootFcb,
- VolumeCB->RootFcb->OpenHandleCount);
+ lCount);
//
// Indicate the object is held
AFSDirectoryCB *pDirEntry = NULL;
AFSObjectInfoCB *pParentObjectInfo = NULL;
AFSObjectInfoCB *pObjectInfo = NULL;
+ LONG lCount;
__Enter
{
// Increment the open count on this Fcb
//
- InterlockedIncrement( &(*Fcb)->OpenReferenceCount);
+ lCount = InterlockedIncrement( &(*Fcb)->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessCreate Increment count on Fcb %08lX Cnt %d\n",
*Fcb,
- (*Fcb)->OpenReferenceCount);
+ lCount);
- InterlockedIncrement( &(*Fcb)->OpenHandleCount);
+ lCount = InterlockedIncrement( &(*Fcb)->OpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessCreate Increment handle count on Fcb %08lX Cnt %d\n",
(*Fcb),
- (*Fcb)->OpenHandleCount);
+ lCount);
//
// Increment the open reference and handle on the parent node
//
- InterlockedIncrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount = InterlockedIncrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessCreate Increment child open handle count on Parent object %08lX Cnt %d\n",
pObjectInfo->ParentObjectInformation,
- pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount);
- InterlockedIncrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessCreate Increment child open ref count on Parent object %08lX Cnt %d\n",
pObjectInfo->ParentObjectInformation,
- pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
+ lCount);
if( ulOptions & FILE_DELETE_ON_CLOSE)
{
// Decrement the reference added during initialization of the DE
//
- InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessCreate Decrement count on %wZ DE %p Cnt %d\n",
&pDirEntry->NameInformation.FileName,
pDirEntry,
- pDirEntry->OpenReferenceCount);
+ lCount);
//
// Pull the directory entry from the parent
BOOLEAN bReleaseFcb = FALSE, bAllocatedFcb = FALSE;
AFSObjectInfoCB *pParentObject = NULL, *pTargetObject = NULL;
UNICODE_STRING uniTargetName;
+ LONG lCount;
__Enter
{
// Increment the open count on this Fcb
//
- InterlockedIncrement( &pParentObject->Fcb->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pParentObject->Fcb->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenTargetDirectory Increment count on Fcb %08lX Cnt %d\n",
pParentObject->Fcb,
- pParentObject->Fcb->OpenReferenceCount);
+ lCount);
- InterlockedIncrement( &pParentObject->Fcb->OpenHandleCount);
+ lCount = InterlockedIncrement( &pParentObject->Fcb->OpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenTargetDirectory Increment handle count on Fcb %08lX Cnt %d\n",
pParentObject->Fcb,
- pParentObject->Fcb->OpenHandleCount);
+ lCount);
//
// Increment the open reference and handle on the parent node
if( pParentObject->ParentObjectInformation != NULL)
{
- InterlockedIncrement( &pParentObject->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount = InterlockedIncrement( &pParentObject->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenTargetDirectory Increment child open handle count on Parent object %08lX Cnt %d\n",
pParentObject->ParentObjectInformation,
- pParentObject->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount);
- InterlockedIncrement( &pParentObject->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
+ lCount = InterlockedIncrement( &pParentObject->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenTargetDirectory Increment child open ref count on Parent object %08lX Cnt %d\n",
pParentObject->ParentObjectInformation,
- pParentObject->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
+ lCount);
}
try_exit:
AFSObjectInfoCB *pObjectInfo = NULL;
ULONG ulFileAccess = 0;
AFSFileAccessReleaseCB stReleaseFileAccess;
+ LONG lCount;
__Enter
{
// Reference the Fcb so it won't go away while we call into the service for processing
//
- InterlockedIncrement( &pObjectInfo->Fcb->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfo->Fcb->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessOpen Increment count on Fcb %08lX Cnt %d\n",
pObjectInfo->Fcb,
- pObjectInfo->Fcb->OpenReferenceCount);
+ lCount);
//
// Check access on the entry
// Increment the open count on this Fcb
//
- InterlockedIncrement( &pObjectInfo->Fcb->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfo->Fcb->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessOpen Increment2 count on Fcb %08lX Cnt %d\n",
pObjectInfo->Fcb,
- pObjectInfo->Fcb->OpenReferenceCount);
+ lCount);
- InterlockedIncrement( &pObjectInfo->Fcb->OpenHandleCount);
+ lCount = InterlockedIncrement( &pObjectInfo->Fcb->OpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessOpen Increment handle count on Fcb %08lX Cnt %d\n",
pObjectInfo->Fcb,
- pObjectInfo->Fcb->OpenHandleCount);
+ lCount);
//
// Increment the open reference and handle on the parent node
//
- InterlockedIncrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount = InterlockedIncrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessOpen Increment child open handle count on Parent object %08lX Cnt %d\n",
pObjectInfo->ParentObjectInformation,
- pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount);
- InterlockedIncrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessOpen Increment child open ref count on Parent object %08lX Cnt %d\n",
pObjectInfo->ParentObjectInformation,
- pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
+ lCount);
if( BooleanFlagOn( ulOptions, FILE_DELETE_ON_CLOSE))
{
// Remove the reference we added initially
//
- InterlockedDecrement( &pObjectInfo->Fcb->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pObjectInfo->Fcb->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessOpen Decrement count on Fcb %08lX Cnt %d\n",
pObjectInfo->Fcb,
- pObjectInfo->Fcb->OpenReferenceCount);
+ lCount);
AFSReleaseResource( pObjectInfo->Fcb->Header.Resource);
}
USHORT usShareAccess;
AFSObjectInfoCB *pParentObjectInfo = NULL;
AFSObjectInfoCB *pObjectInfo = NULL;
+ LONG lCount;
__Enter
{
// Reference the Fcb so it won't go away while processing the request
//
- InterlockedIncrement( &pObjectInfo->Fcb->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfo->Fcb->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessOverwriteSupersede Increment count on Fcb %08lX Cnt %d\n",
pObjectInfo->Fcb,
- pObjectInfo->Fcb->OpenReferenceCount);
+ lCount);
//
// Check access on the entry
// Increment the open count on this Fcb.
//
- InterlockedIncrement( &pObjectInfo->Fcb->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfo->Fcb->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessOverwriteSupersede Increment2 count on Fcb %08lX Cnt %d\n",
pObjectInfo->Fcb,
- pObjectInfo->Fcb->OpenReferenceCount);
+ lCount);
- InterlockedIncrement( &pObjectInfo->Fcb->OpenHandleCount);
+ lCount = InterlockedIncrement( &pObjectInfo->Fcb->OpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessOverwriteSupersede Increment handle count on Fcb %08lX Cnt %d\n",
pObjectInfo->Fcb,
- pObjectInfo->Fcb->OpenHandleCount);
+ lCount);
//
// Increment the open reference and handle on the parent node
//
- InterlockedIncrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount = InterlockedIncrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessOverwriteSupersede Increment child open handle count on Parent object %08lX Cnt %d\n",
pObjectInfo->ParentObjectInformation,
- pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount);
- InterlockedIncrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessOverwriteSupersede Increment child open ref count on Parent object %08lX Cnt %d\n",
pObjectInfo->ParentObjectInformation,
- pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
+ lCount);
*Fcb = pObjectInfo->Fcb;
// Remove the reference we added above to prevent tear down
//
- InterlockedDecrement( &pObjectInfo->Fcb->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pObjectInfo->Fcb->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessOverwriteSupersede Decrement count on Fcb %08lX Cnt %d\n",
pObjectInfo->Fcb,
- pObjectInfo->Fcb->OpenReferenceCount);
+ lCount);
AFSReleaseResource( pObjectInfo->Fcb->Header.Resource);
}
AFSPIOCtlOpenCloseRequestCB stPIOCtlOpen;
AFSFileID stFileID;
AFSObjectInfoCB *pParentObjectInfo = NULL;
+ LONG lCount;
__Enter
{
// Reference the directory entry
//
- InterlockedIncrement( &((*Ccb)->DirectoryCB->OpenReferenceCount));
+ lCount = InterlockedIncrement( &((*Ccb)->DirectoryCB->OpenReferenceCount));
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&(*Ccb)->DirectoryCB->NameInformation.FileName,
(*Ccb)->DirectoryCB,
(*Ccb),
- (*Ccb)->DirectoryCB->OpenReferenceCount);
+ lCount);
//
// Increment the open reference and handle on the node
//
- InterlockedIncrement( &(*Fcb)->OpenReferenceCount);
+ lCount = InterlockedIncrement( &(*Fcb)->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenIOCtlFcb Increment count on Fcb %08lX Cnt %d\n",
(*Fcb),
- (*Fcb)->OpenReferenceCount);
+ lCount);
- InterlockedIncrement( &(*Fcb)->OpenHandleCount);
+ lCount = InterlockedIncrement( &(*Fcb)->OpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenIOCtlFcb Increment handle count on Fcb %08lX Cnt %d\n",
(*Fcb),
- (*Fcb)->OpenHandleCount);
+ lCount);
//
// Increment the open reference and handle on the parent node
//
- InterlockedIncrement( &pParentObjectInfo->Specific.Directory.ChildOpenHandleCount);
+ lCount = InterlockedIncrement( &pParentObjectInfo->Specific.Directory.ChildOpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenIOCtlFcb Increment child open handle count on Parent object %08lX Cnt %d\n",
pParentObjectInfo,
- pParentObjectInfo->Specific.Directory.ChildOpenHandleCount);
+ lCount);
- InterlockedIncrement( &pParentObjectInfo->Specific.Directory.ChildOpenReferenceCount);
+ lCount = InterlockedIncrement( &pParentObjectInfo->Specific.Directory.ChildOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenIOCtlFcb Increment child open ref count on Parent object %08lX Cnt %d\n",
pParentObjectInfo,
- pParentObjectInfo->Specific.Directory.ChildOpenReferenceCount);
+ lCount);
//
// Return the open result for this file
// is already referenced
//
- InterlockedDecrement( &ParentDirCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &ParentDirCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&ParentDirCB->NameInformation.FileName,
ParentDirCB,
NULL,
- ParentDirCB->OpenReferenceCount);
+ lCount);
//
// If we created the Fcb we need to release the resources
BOOLEAN bReleaseFcb = FALSE, bAllocatedCcb = FALSE, bAllocateFcb = FALSE;
AFSObjectInfoCB *pParentObjectInfo = NULL;
AFSPipeOpenCloseRequestCB stPipeOpen;
+ LONG lCount;
__Enter
{
// Increment the open count on this Fcb
//
- InterlockedIncrement( &(*Fcb)->OpenReferenceCount);
+ lCount = InterlockedIncrement( &(*Fcb)->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenSpecialShareFcb Increment count on Fcb %08lX Cnt %d\n",
(*Fcb),
- (*Fcb)->OpenReferenceCount);
+ lCount);
- InterlockedIncrement( &(*Fcb)->OpenHandleCount);
+ lCount = InterlockedIncrement( &(*Fcb)->OpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenSpecialShareFcb Increment handle count on Fcb %08lX Cnt %d\n",
(*Fcb),
- (*Fcb)->OpenHandleCount);
+ lCount);
//
// Increment the open reference and handle on the parent node
//
- InterlockedIncrement( &pParentObjectInfo->Specific.Directory.ChildOpenHandleCount);
+ lCount = InterlockedIncrement( &pParentObjectInfo->Specific.Directory.ChildOpenHandleCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenSpecialShareFcb Increment child open handle count on Parent object %08lX Cnt %d\n",
pParentObjectInfo,
- pParentObjectInfo->Specific.Directory.ChildOpenHandleCount);
+ lCount);
- InterlockedIncrement( &pParentObjectInfo->Specific.Directory.ChildOpenReferenceCount);
+ lCount = InterlockedIncrement( &pParentObjectInfo->Specific.Directory.ChildOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSOpenSpecialShareFcb Increment child open ref count on Parent object %08lX Cnt %d\n",
pParentObjectInfo,
- pParentObjectInfo->Specific.Directory.ChildOpenReferenceCount);
+ lCount);
//
// Return the open result for this file
BOOLEAN bUseFileInfo = TRUE;
AFSObjectInfoCB *pObjectInfo = NULL;
ULONG ulAdditionalAttributes = 0;
+ LONG lCount;
__Enter
{
BooleanFlagOn( pDirEntry->Flags, AFS_DIR_ENTRY_DELETED))
{
- InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
continue;
}
if( !FlagOn( pObjectInfo->FileAttributes, FILE_ATTRIBUTE_DIRECTORY))
{
- InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
continue;
}
NULL))
{
- InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
continue;
}
TRUE))
{
- InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
continue;
}
pCcb->CurrentDirIndex--;
- InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
try_return( ntStatus = STATUS_SUCCESS);
}
Irp,
FileInformationClass);
- InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
try_return( ntStatus = STATUS_INVALID_INFO_CLASS);
if( ulBytesConverted < pDirEntry->NameInformation.FileName.Length)
{
- InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
try_return( ntStatus = STATUS_BUFFER_OVERFLOW);
}
- InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
dStatus = STATUS_SUCCESS;
AFSSnapshotHdr *pSnapshotHdr = NULL;
AFSSnapshotEntry *pSnapshotEntry = NULL;
ULONG ulCount = 0;
+ LONG lCount;
__Enter
{
if( pDirEntry != NULL)
{
- InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+
+ lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
}
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
if( pDirEntry != NULL)
{
- InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+
+ lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
}
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
if( pDirEntry != NULL)
{
- InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+
+ lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
}
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
ObjectInfo->FileId.Vnode,
ObjectInfo->FileId.Unique);
- InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
}
else
{
AFSDeviceExt *pControlDevExt = (AFSDeviceExt *)AFSControlDeviceObject->DeviceExtension;
GUID *pAuthGroup = AuthGroup;
GUID stAuthGroup;
+ LONG lCount;
__Enter
{
le = le->Flink;
AFSExFreePool( pEntry);
- InterlockedDecrement( &Fcb->Specific.File.ExtentCount);
+ lCount = InterlockedDecrement( &Fcb->Specific.File.ExtentCount);
- if( InterlockedDecrement( &pControlDevExt->Specific.Control.ExtentCount) == 0)
+ lCount = InterlockedDecrement( &pControlDevExt->Specific.Control.ExtentCount);
+
+ if( lCount == 0)
{
KeSetEvent( &pControlDevExt->Specific.Control.ExtentsHeldEvent,
BOOLEAN bFoundExtent = FALSE;
LIST_ENTRY *pSkipEntries[AFS_NUM_EXTENT_LISTS] = { 0 };
AFSDeviceExt *pControlDevExt = (AFSDeviceExt *)AFSControlDeviceObject->DeviceExtension;
+ LONG lCount;
//
// Grab the extents exclusive for the duration
InterlockedExchangeAdd( &Fcb->Specific.File.ExtentLength, (LONG)(pExtent->Size/1024));
- InterlockedIncrement( &Fcb->Specific.File.ExtentCount);
+ lCount = InterlockedIncrement( &Fcb->Specific.File.ExtentCount);
+
+ lCount = InterlockedIncrement( &pControlDevExt->Specific.Control.ExtentCount);
- if( InterlockedIncrement( &pControlDevExt->Specific.Control.ExtentCount) == 1)
+ if( lCount == 1)
{
KeClearEvent( &pControlDevExt->Specific.Control.ExtentsHeldEvent);
AFSDeviceExt *pDevExt = (AFSDeviceExt *)AFSRDRDeviceObject->DeviceExtension;
ULONGLONG ullIndex = 0;
AFSObjectInfoCB *pObjectInfo = NULL;
+ LONG lCount;
__Enter
{
pVolumeCB->ObjectInfoTree.TreeLock,
PsGetCurrentThread());
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
}
AFSReleaseResource( &pDevExt->Specific.RDR.VolumeTreeLock);
AFSAcquireShared( pVolumeCB->ObjectInfoTree.TreeLock,
TRUE);
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
//
// Now locate the Object in this volume
// Reference the node so it won't be torn down
//
- InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessSetFileExtents Increment count on object %08lX Cnt %d\n",
pObjectInfo,
- pObjectInfo->ObjectReferenceCount);
+ lCount);
}
AFSReleaseResource( pVolumeCB->ObjectInfoTree.TreeLock);
if( pObjectInfo != NULL)
{
- InterlockedDecrement( &pObjectInfo->ObjectReferenceCount);
+ lCount = InterlockedDecrement( &pObjectInfo->ObjectReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessSetFileExtents Decrement count on object %08lX Cnt %d\n",
pObjectInfo,
- pObjectInfo->ObjectReferenceCount);
+ lCount);
}
}
NTSTATUS ntStatus = STATUS_SUCCESS;
BOOLEAN bReleaseAll = FALSE;
AFSDeviceExt *pControlDevExt = (AFSDeviceExt *)AFSControlDeviceObject->DeviceExtension;
+ LONG lCount;
__Enter
{
FileExtents[*ExtentCount].Flags |= AFS_EXTENT_FLAG_DIRTY;
- InterlockedDecrement( &Fcb->Specific.File.ExtentsDirtyCount);
+ lCount = InterlockedDecrement( &Fcb->Specific.File.ExtentsDirtyCount);
*DirtyExtents = TRUE;
}
//
AFSExFreePool( pExtent);
- InterlockedDecrement( &Fcb->Specific.File.ExtentCount);
+ lCount = InterlockedDecrement( &Fcb->Specific.File.ExtentCount);
- if( InterlockedDecrement( &pControlDevExt->Specific.Control.ExtentCount) == 0)
+ lCount = InterlockedDecrement( &pControlDevExt->Specific.Control.ExtentCount);
+
+ if( lCount == 0)
{
KeSetEvent( &pControlDevExt->Specific.Control.ExtentsHeldEvent,
BOOLEAN bLocatedEntry = FALSE;
AFSObjectInfoCB *pCurrentObject = NULL;
BOOLEAN bReleaseVolumeListLock = FALSE;
+ LONG lCount;
pRDRDeviceExt = (AFSDeviceExt *)AFSRDRDeviceObject->DeviceExtension;
pControlDeviceExt = (AFSDeviceExt *)AFSControlDeviceObject->DeviceExtension;
pVolumeCB->ObjectInfoTree.TreeLock,
PsGetCurrentThread());
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
AFSReleaseResource( &pRDRDeviceExt->Specific.RDR.VolumeListLock);
AFSAcquireShared( pVolumeCB->ObjectInfoTree.TreeLock,
TRUE);
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
if( NULL == LastFcb)
{
// A hit a very palpable hit. Pin it
//
- InterlockedIncrement( &pCurrentObject->ObjectReferenceCount);
+ lCount = InterlockedIncrement( &pCurrentObject->ObjectReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSFindFcbToClean Increment count on Fcb %08lX Cnt %d\n",
pCurrentObject,
- pCurrentObject->ObjectReferenceCount);
+ lCount);
bLocatedEntry = TRUE;
AFSVolumeCB *pVolumeCB = NULL;
ULONGLONG ullIndex = 0;
AFSObjectInfoCB *pObjectInfo = NULL;
+ LONG lCount;
__Enter
{
pVolumeCB->ObjectInfoTree.TreeLock,
PsGetCurrentThread());
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
}
AFSReleaseResource( &pDevExt->Specific.RDR.VolumeTreeLock);
AFSAcquireShared( pVolumeCB->ObjectInfoTree.TreeLock,
TRUE);
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
//
// Now locate the Object in this volume
// Reference the node so it won't be torn down
//
- InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessExtentFailure Increment count on object %08lX Cnt %d\n",
pObjectInfo,
- pObjectInfo->ObjectReferenceCount);
+ lCount);
}
AFSReleaseResource( pVolumeCB->ObjectInfoTree.TreeLock);
AFSReleaseResource( &pObjectInfo->Fcb->NPFcb->Specific.File.ExtentsResource);
- InterlockedDecrement( &pObjectInfo->ObjectReferenceCount);
+ lCount = InterlockedDecrement( &pObjectInfo->ObjectReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessExtentFailure Decrement count on object %08lX Cnt %d\n",
pObjectInfo,
- pObjectInfo->ObjectReferenceCount);
+ lCount);
try_exit:
BOOLEAN bLocked = FALSE;
BOOLEAN bDirtyExtents = FALSE;
GUID stAuthGroup;
+ LONG lCount;
__Enter
{
pVolumeCB->ObjectInfoTree.TreeLock,
PsGetCurrentThread());
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
}
AFSReleaseResource( &pDevExt->Specific.RDR.VolumeTreeLock);
AFSAcquireShared( pVolumeCB->ObjectInfoTree.TreeLock,
TRUE);
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
//
// Now locate the Object in this volume
// Reference the node so it won't be torn down
//
- InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessReleaseFileExtents Increment count on object %08lX Cnt %d\n",
pObjectInfo,
- pObjectInfo->ObjectReferenceCount);
+ lCount);
}
AFSReleaseResource( pVolumeCB->ObjectInfoTree.TreeLock);
if( pObjectInfo != NULL)
{
- InterlockedDecrement( &pObjectInfo->ObjectReferenceCount);
+ lCount = InterlockedDecrement( &pObjectInfo->ObjectReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSProcessReleaseFileExtents Decrement count on object %08lX Cnt %d\n",
pObjectInfo,
- pObjectInfo->ObjectReferenceCount);
+ lCount);
}
}
AFSDeviceExt *pControlDevExt = (AFSDeviceExt *)AFSControlDeviceObject->DeviceExtension;
GUID *pAuthGroup = AuthGroup;
GUID stAuthGroup;
+ LONG lCount;
ASSERT( Fcb->Header.NodeTypeCode == AFS_FILE_FCB);
bExtentsLocked = TRUE;
- InterlockedIncrement( &Fcb->Specific.File.QueuedFlushCount);
+ lCount = InterlockedIncrement( &Fcb->Specific.File.QueuedFlushCount);
//
// Clear our queued flush event
pExtent->DirtyList.fLink = NULL;
pExtent->DirtyList.bLink = NULL;
- InterlockedDecrement( &Fcb->Specific.File.ExtentsDirtyCount);
+ lCount = InterlockedDecrement( &Fcb->Specific.File.ExtentsDirtyCount);
//
// Clear the flag in advance of the write. If we do
AFSExFreePool( pExtent);
- InterlockedDecrement( &Fcb->Specific.File.ExtentCount);
+ lCount = InterlockedDecrement( &Fcb->Specific.File.ExtentCount);
+
+ lCount = InterlockedDecrement( &pControlDevExt->Specific.Control.ExtentCount);
- if( InterlockedDecrement( &pControlDevExt->Specific.Control.ExtentCount) == 0)
+ if( lCount == 0)
{
KeSetEvent( &pControlDevExt->Specific.Control.ExtentsHeldEvent,
try_exit:
- if( InterlockedDecrement( &Fcb->Specific.File.QueuedFlushCount) == 0)
+ lCount = InterlockedDecrement( &Fcb->Specific.File.QueuedFlushCount);
+
+ if( lCount == 0)
{
KeSetEvent( &pNPFcb->Specific.File.QueuedFlushEvent,
AFSDeviceExt *pControlDevExt = (AFSDeviceExt *)AFSControlDeviceObject->DeviceExtension;
GUID *pAuthGroup = AuthGroup;
GUID stAuthGroup;
+ LONG lCount;
ASSERT( Fcb->Header.NodeTypeCode == AFS_FILE_FCB);
pRelease->FileExtents[count].Flags |= AFS_EXTENT_FLAG_DIRTY;
- InterlockedDecrement( &Fcb->Specific.File.ExtentsDirtyCount);
+ lCount = InterlockedDecrement( &Fcb->Specific.File.ExtentsDirtyCount);
}
AFSReleaseResource( &pNPFcb->Specific.File.DirtyExtentsListLock);
AFSExFreePool( pExtent);
- InterlockedDecrement( &Fcb->Specific.File.ExtentCount);
+ lCount = InterlockedDecrement( &Fcb->Specific.File.ExtentCount);
+
+ lCount = InterlockedDecrement( &pControlDevExt->Specific.Control.ExtentCount);
- if( InterlockedDecrement( &pControlDevExt->Specific.Control.ExtentCount) == 0)
+ if( lCount == 0)
{
KeSetEvent( &pControlDevExt->Specific.Control.ExtentsHeldEvent,
AFSExtent *pNextExtent, *pCurrentExtent = NULL;
ULONG ulCount = 0;
BOOLEAN bInsertTail = FALSE, bInsertHead = FALSE;
+ LONG lCount;
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
// Up the dirty count
//
- InterlockedIncrement( &Fcb->Specific.File.ExtentsDirtyCount);
+ lCount = InterlockedIncrement( &Fcb->Specific.File.ExtentsDirtyCount);
}
else
{
ASSERT( pExtent->ActiveCount > 0);
- InterlockedDecrement( &pExtent->ActiveCount);
+ lCount = InterlockedDecrement( &pExtent->ActiveCount);
pExtent = pNextExtent;
LARGE_INTEGER liAlignedOffset = {0,0};
AFSDeviceExt *pDevExt = (AFSDeviceExt *)AFSRDRDeviceObject->DeviceExtension;
AFSDeviceExt *pControlDevExt = (AFSDeviceExt *)AFSControlDeviceObject->DeviceExtension;
+ LONG lCount;
__Enter
{
//
AFSExFreePool( pExtent);
- InterlockedDecrement( &Fcb->Specific.File.ExtentCount);
+ lCount = InterlockedDecrement( &Fcb->Specific.File.ExtentCount);
- if( InterlockedDecrement( &pControlDevExt->Specific.Control.ExtentCount) == 0)
+ lCount = InterlockedDecrement( &pControlDevExt->Specific.Control.ExtentCount);
+
+ if( lCount == 0)
{
KeSetEvent( &pControlDevExt->Specific.Control.ExtentsHeldEvent,
NTSTATUS ntStatus = STATUS_SUCCESS;
AFSDeviceExt *pDevExt = (AFSDeviceExt *)AFSRDRDeviceObject->DeviceExtension;
AFSDeviceExt *pControlDevExt = (AFSDeviceExt *)AFSControlDeviceObject->DeviceExtension;
+ LONG lCount;
__Enter
{
//
AFSExFreePool( pExtent);
- InterlockedDecrement( &Fcb->Specific.File.ExtentCount);
+ lCount = InterlockedDecrement( &Fcb->Specific.File.ExtentCount);
+
+ lCount = InterlockedDecrement( &pControlDevExt->Specific.Control.ExtentCount);
- if( InterlockedDecrement( &pControlDevExt->Specific.Control.ExtentCount) == 0)
+ if( lCount == 0)
{
KeSetEvent( &pControlDevExt->Specific.Control.ExtentsHeldEvent,
AFSExtent *pExtent = StartExtent;
AFSExtent *pNextExtent;
ULONG ulCount = 0;
+ LONG lCount;
while( ulCount < ExtentsCount)
{
pNextExtent = NextExtent( pExtent, AFS_EXTENTS_LIST);
- InterlockedIncrement( &pExtent->ActiveCount);
+ lCount = InterlockedIncrement( &pExtent->ActiveCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_EXTENT_ACTIVE_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSReferenceActiveExtents Increment count on extent %08lX Cnt %d\n",
pExtent,
- pExtent->ActiveCount);
+ lCount);
pExtent = pNextExtent;
AFSExtent *pExtent = StartExtent;
AFSExtent *pNextExtent;
ULONG ulCount = 0;
+ LONG lCount;
while( ulCount < ExtentsCount)
{
pNextExtent = NextExtent( pExtent, AFS_EXTENTS_LIST);
+ ASSERT( pExtent->ActiveCount > 0);
+
+ lCount = InterlockedDecrement( &pExtent->ActiveCount);
+
AFSDbgLogMsg( AFS_SUBSYSTEM_EXTENT_ACTIVE_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSDereferenceActiveExtents Decrement count on extent %08lX Cnt %d\n",
pExtent,
- pExtent->ActiveCount);
-
- ASSERT( pExtent->ActiveCount > 0);
-
- InterlockedDecrement( &pExtent->ActiveCount);
+ lCount);
pExtent = pNextExtent;
BOOLEAN bReleaseLocks = FALSE;
AFSVolumeInfoCB stVolumeInformation;
AFSNonPagedDirectoryCB *pNonPagedDirEntry = NULL;
+ LONG lCount;
__Enter
{
// So we don't lock with an invalidation call ...
//
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
AFSReleaseResource( pDeviceExt->Specific.RDR.VolumeTree.TreeLock);
AFSAcquireExcl( pVolumeCB->VolumeLock,
TRUE);
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
*VolumeCB = pVolumeCB;
BOOLEAN bReleaseTargetDirLock = FALSE;
BOOLEAN bReleaseSourceDirLock = FALSE;
PERESOURCE pSourceDirLock = NULL;
+ LONG lCount;
__Enter
{
ASSERT( pTargetParentObject == pTargetDirEntry->ObjectInformation->ParentObjectInformation);
- InterlockedIncrement( &pTargetDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pTargetDirEntry->OpenReferenceCount);
if( !bReplaceIfExists)
{
if( pSrcCcb->DirectoryCB->ObjectInformation->ParentObjectInformation != pTargetParentObject)
{
- InterlockedDecrement( &pSrcCcb->DirectoryCB->ObjectInformation->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
+ lCount = InterlockedDecrement( &pSrcCcb->DirectoryCB->ObjectInformation->ParentObjectInformation->Specific.Directory.ChildOpenHandleCount);
- InterlockedDecrement( &pSrcCcb->DirectoryCB->ObjectInformation->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
+ lCount = InterlockedDecrement( &pSrcCcb->DirectoryCB->ObjectInformation->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
- InterlockedIncrement( &pTargetParentObject->Specific.Directory.ChildOpenHandleCount);
+ lCount = InterlockedIncrement( &pTargetParentObject->Specific.Directory.ChildOpenHandleCount);
- InterlockedIncrement( &pTargetParentObject->Specific.Directory.ChildOpenReferenceCount);
+ lCount = InterlockedIncrement( &pTargetParentObject->Specific.Directory.ChildOpenReferenceCount);
pSrcCcb->DirectoryCB->ObjectInformation->ParentObjectInformation = pTargetParentObject;
ASSERT( pTargetDirEntry->OpenReferenceCount > 0);
- InterlockedDecrement( &pTargetDirEntry->OpenReferenceCount); // The count we added above
+ lCount = InterlockedDecrement( &pTargetDirEntry->OpenReferenceCount); // The count we added above
- if( pTargetDirEntry->OpenReferenceCount == 0)
+ if( lCount == 0)
{
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
if( pTargetDirEntry != NULL)
{
- InterlockedDecrement( &pTargetDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pTargetDirEntry->OpenReferenceCount);
}
if( bReleaseTargetDirLock)
AFSDeviceExt *pDeviceExt = (AFSDeviceExt *)AFSRDRDeviceObject->DeviceExtension;
AFSObjectInfoCB *pObjectInfoCB = NULL;
AFSNonPagedDirectoryCB *pNonPagedDirEntry = NULL;
+ LONG lCount;
__Enter
{
try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES);
}
- InterlockedIncrement( &pObjectInfoCB->ObjectReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfoCB->ObjectReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSInitializeGlobalDirectoryEntries Increment count on object %08lX Cnt %d\n",
pObjectInfoCB,
- pObjectInfoCB->ObjectReferenceCount);
+ lCount);
ntStatus = STATUS_SUCCESS;
try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES);
}
- InterlockedIncrement( &pObjectInfoCB->ObjectReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfoCB->ObjectReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSInitializeGlobalDirectoryEntries Increment count on object %08lX Cnt %d\n",
pObjectInfoCB,
- pObjectInfoCB->ObjectReferenceCount);
+ lCount);
ntStatus = STATUS_SUCCESS;
BOOLEAN bAllocatedObjectCB = FALSE;
ULONGLONG ullIndex = 0;
AFSNonPagedDirectoryCB *pNonPagedDirEntry = NULL;
+ LONG lCount;
__Enter
{
FileName);
}
- InterlockedIncrement( &pObjectInfoCB->ObjectReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfoCB->ObjectReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSInitDirEntry Increment count on object %08lX Cnt %d\n",
pObjectInfoCB,
- pObjectInfoCB->ObjectReferenceCount);
+ lCount);
AFSReleaseResource( ParentObjectInfo->VolumeCB->ObjectInfoTree.TreeLock);
if( pObjectInfoCB != NULL)
{
- InterlockedDecrement( &pObjectInfoCB->ObjectReferenceCount);
+ lCount = InterlockedDecrement( &pObjectInfoCB->ObjectReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSInitDirEntry Decrement count on object %08lX Cnt %d\n",
pObjectInfoCB,
- pObjectInfoCB->ObjectReferenceCount);
+ lCount);
if( bAllocatedObjectCB)
{
AFSObjectInfoCB *pObjectInfo = NULL;
IO_STATUS_BLOCK stIoStatus;
ULONG ulFilter = 0;
+ LONG lCount;
__Enter
{
if( pVolumeCB != NULL)
{
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSInvalidateCache Increment count on volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
}
AFSReleaseResource( &pDevExt->Specific.RDR.VolumeTreeLock);
FILE_NOTIFY_CHANGE_SIZE,
FILE_ACTION_MODIFIED);
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
try_return( ntStatus);
}
AFSAcquireShared( pVolumeCB->ObjectInfoTree.TreeLock,
TRUE);
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
// Reference the node so it won't be torn down
//
- InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSInvalidateCache Increment count on object %08lX Cnt %d\n",
pObjectInfo,
- pObjectInfo->ObjectReferenceCount);
+ lCount);
}
AFSReleaseResource( pVolumeCB->ObjectInfoTree.TreeLock);
if( pObjectInfo != NULL)
{
- InterlockedDecrement( &pObjectInfo->ObjectReferenceCount);
+ lCount = InterlockedDecrement( &pObjectInfo->ObjectReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSInvalidateCache Decrement count on object %08lX Cnt %d\n",
pObjectInfo,
- pObjectInfo->ObjectReferenceCount);
+ lCount);
}
}
AFSVolumeCB *pVolumeCB = NULL;
AFSFcb *pFcb = NULL;
AFSObjectInfoCB *pCurrentObject = NULL;
+ LONG lCount;
__Enter
{
if( pVolumeCB != NULL)
{
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
AFSReleaseResource( &pDevExt->Specific.RDR.VolumeTreeLock);
AFSReleaseResource( pVolumeCB->ObjectInfoTree.TreeLock);
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
}
else
{
AFSNameArrayHdr *pNameArray = NULL;
AFSDeviceExt *pDevExt = (AFSDeviceExt *) AFSRDRDeviceObject->DeviceExtension;
+ LONG lCount;
__Enter
{
pNameArray->CurrentEntry = &pNameArray->ElementArray[ 0];
- InterlockedIncrement( &pNameArray->Count);
+ lCount = InterlockedIncrement( &pNameArray->Count);
- InterlockedIncrement( &DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &DirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSInitNameArray Increment count on %wZ DE %p Cnt %d\n",
&DirectoryCB->NameInformation.FileName,
DirectoryCB,
- DirectoryCB->OpenReferenceCount);
+ lCount);
pNameArray->CurrentEntry->DirectoryCB = DirectoryCB;
ULONG ulTotalCount = 0;
ULONG ulIndex = 0;
USHORT usLength = 0;
+ LONG lCount;
__Enter
{
pCurrentElement->DirectoryCB = DirectoryCB->ObjectInformation->VolumeCB->DirectoryCB;
- InterlockedIncrement( &pCurrentElement->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pCurrentElement->DirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSPopulateNameArray Increment count on volume %wZ DE %p Cnt %d\n",
&pCurrentElement->DirectoryCB->NameInformation.FileName,
pCurrentElement->DirectoryCB,
- pCurrentElement->DirectoryCB->OpenReferenceCount);
+ lCount);
pCurrentElement->Component = DirectoryCB->ObjectInformation->VolumeCB->DirectoryCB->NameInformation.FileName;
ULONG ulTotalCount = 0;
ULONG ulIndex = 0;
USHORT usLength = 0;
+ LONG lCount;
__Enter
{
pCurrentElement->FileId = pCurrentElement->DirectoryCB->ObjectInformation->FileId;
- InterlockedIncrement( &pCurrentElement->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pCurrentElement->DirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSPopulateNameArrayFromRelatedArray Increment count on %wZ DE %p Cnt %d\n",
&pCurrentElement->DirectoryCB->NameInformation.FileName,
pCurrentElement->DirectoryCB,
- pCurrentElement->DirectoryCB->OpenReferenceCount);
+ lCount);
- InterlockedIncrement( &NameArray->Count);
+ lCount = InterlockedIncrement( &NameArray->Count);
if( pCurrentElement->DirectoryCB == DirectoryCB ||
NameArray->Count == RelatedNameArray->Count)
NTSTATUS ntStatus = STATUS_SUCCESS;
AFSNameArrayCB *pCurrentElement = NULL;
+ LONG lCount;
__Enter
{
break;
}
- InterlockedDecrement( &pCurrentElement->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pCurrentElement->DirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSFreeNameArray Decrement count on %wZ DE %p Cnt %d\n",
&pCurrentElement->DirectoryCB->NameInformation.FileName,
pCurrentElement->DirectoryCB,
- pCurrentElement->DirectoryCB->OpenReferenceCount);
+ lCount);
pCurrentElement++;
}
NTSTATUS ntStatus = STATUS_SUCCESS;
AFSDeviceExt *pDevExt = (AFSDeviceExt *) AFSRDRDeviceObject->DeviceExtension;
+ LONG lCount;
__Enter
{
NameArray->CurrentEntry = &NameArray->ElementArray[ 0];
}
- InterlockedIncrement( &NameArray->Count);
+ lCount = InterlockedIncrement( &NameArray->Count);
- InterlockedIncrement( &DirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &DirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSInsertNextElement Increment count on %wZ DE %p Cnt %d\n",
&DirEntry->NameInformation.FileName,
DirEntry,
- DirEntry->OpenReferenceCount);
+ lCount);
NameArray->CurrentEntry->DirectoryCB = DirEntry;
AFSReplaceCurrentElement( IN AFSNameArrayHdr *NameArray,
IN AFSDirectoryCB *DirectoryCB)
{
+ LONG lCount;
ASSERT( NameArray->CurrentEntry != NULL);
- InterlockedDecrement( &NameArray->CurrentEntry->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &NameArray->CurrentEntry->DirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSReplaceCurrentElement Decrement count on %wZ DE %p Cnt %d\n",
&NameArray->CurrentEntry->DirectoryCB->NameInformation.FileName,
NameArray->CurrentEntry->DirectoryCB,
- NameArray->CurrentEntry->DirectoryCB->OpenReferenceCount);
+ lCount);
- InterlockedIncrement( &DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &DirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSReplaceCurrentElement Increment count on %wZ DE %p Cnt %d\n",
&DirectoryCB->NameInformation.FileName,
DirectoryCB,
- DirectoryCB->OpenReferenceCount);
+ lCount);
NameArray->CurrentEntry->DirectoryCB = DirectoryCB;
{
AFSDirectoryCB *pCurrentDirEntry = NULL;
+ LONG lCount;
__Enter
{
try_return( pCurrentDirEntry);
}
- InterlockedDecrement( &NameArray->CurrentEntry->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &NameArray->CurrentEntry->DirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSBackupEntry Decrement count on %wZ DE %p Cnt %d\n",
&NameArray->CurrentEntry->DirectoryCB->NameInformation.FileName,
NameArray->CurrentEntry->DirectoryCB,
- NameArray->CurrentEntry->DirectoryCB->OpenReferenceCount);
+ lCount);
NameArray->CurrentEntry->DirectoryCB = NULL;
- if( InterlockedDecrement( &NameArray->Count) == 0)
+ lCount = InterlockedDecrement( &NameArray->Count);
+
+ if( lCount == 0)
{
NameArray->CurrentEntry = NULL;
}
AFSNameArrayCB *pCurrentElement = NULL;
AFSDeviceExt *pDevExt = (AFSDeviceExt *) AFSRDRDeviceObject->DeviceExtension;
+ LONG lCount;
__Enter
{
break;
}
- InterlockedDecrement( &pCurrentElement->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pCurrentElement->DirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSResetNameArray Decrement count on %wZ DE %p Cnt %d\n",
&pCurrentElement->DirectoryCB->NameInformation.FileName,
pCurrentElement->DirectoryCB,
- pCurrentElement->DirectoryCB->OpenReferenceCount);
+ lCount);
pCurrentElement++;
}
NameArray->CurrentEntry = &NameArray->ElementArray[ 0];
- InterlockedIncrement( &NameArray->Count);
+ lCount = InterlockedIncrement( &NameArray->Count);
- InterlockedIncrement( &DirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &DirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSResetNameArray Increment count on %wZ DE %p Cnt %d\n",
&DirEntry->NameInformation.FileName,
DirEntry,
- DirEntry->OpenReferenceCount);
+ lCount);
NameArray->CurrentEntry->DirectoryCB = DirEntry;
void
AFSSetEnumerationEvent( IN AFSFcb *Fcb)
{
+ LONG lCount;
//
// Depending on the type of node, set the event
0,
FALSE);
- InterlockedIncrement( &Fcb->NPFcb->Specific.Directory.DirectoryEnumCount);
+ lCount = InterlockedIncrement( &Fcb->NPFcb->Specific.Directory.DirectoryEnumCount);
break;
}
0,
FALSE);
- InterlockedIncrement( &Fcb->NPFcb->Specific.Directory.DirectoryEnumCount);
+ lCount = InterlockedIncrement( &Fcb->NPFcb->Specific.Directory.DirectoryEnumCount);
break;
}
AFSClearEnumerationEvent( IN AFSFcb *Fcb)
{
+ LONG lCount;
+
//
// Depending on the type of node, set the event
//
ASSERT( Fcb->NPFcb->Specific.Directory.DirectoryEnumCount > 0);
- if( InterlockedDecrement( &Fcb->NPFcb->Specific.Directory.DirectoryEnumCount) == 0)
+ lCount = InterlockedDecrement( &Fcb->NPFcb->Specific.Directory.DirectoryEnumCount);
+
+ if( lCount == 0)
{
KeClearEvent( &Fcb->NPFcb->Specific.Directory.DirectoryEnumEvent);
ASSERT( Fcb->NPFcb->Specific.Directory.DirectoryEnumCount > 0);
- if( InterlockedDecrement( &Fcb->NPFcb->Specific.Directory.DirectoryEnumCount) == 0)
+ lCount = InterlockedDecrement( &Fcb->NPFcb->Specific.Directory.DirectoryEnumCount);
+
+ if( lCount == 0)
{
KeClearEvent( &Fcb->NPFcb->Specific.Directory.DirectoryEnumEvent);
WCHAR *pwchBuffer = NULL;
UNICODE_STRING uniComponentName, uniRemainingPath, uniParsedName;
ULONG ulNameDifference = 0;
+ LONG lCount;
__Enter
{
// Increment the ref count on the volume and dir entry for correct processing below
//
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSRetrieveFileAttributes Increment count on volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
- InterlockedIncrement( &pParentDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pParentDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pParentDirEntry->NameInformation.FileName,
pParentDirEntry,
NULL,
- pParentDirEntry->OpenReferenceCount);
+ lCount);
ntStatus = AFSLocateNameEntry( NULL,
NULL,
if( pVolumeCB != NULL)
{
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSRetrieveFileAttributes Decrement count on volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
}
if( pDirectoryEntry != NULL)
{
- InterlockedDecrement( &pDirectoryEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirectoryEntry->NameInformation.FileName,
pDirectoryEntry,
NULL,
- pDirectoryEntry->OpenReferenceCount);
+ lCount);
}
else
{
- InterlockedDecrement( &pParentDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pParentDirEntry->NameInformation.FileName,
pParentDirEntry,
NULL,
- pParentDirEntry->OpenReferenceCount);
+ lCount);
}
}
// Remove the reference made above
//
- InterlockedDecrement( &pDirectoryEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirectoryEntry->NameInformation.FileName,
pDirectoryEntry,
NULL,
- pDirectoryEntry->OpenReferenceCount);
+ lCount);
try_exit:
if( pVolumeCB != NULL)
{
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSRetrieveFileAttributes Decrement2 count on volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
}
if( pNameArray != NULL)
NTSTATUS ntStatus = STATUS_SUCCESS;
AFSObjectInfoCB *pObjectInfo = NULL;
+ LONG lCount;
__Enter
{
if( ParentObjectInfo != NULL)
{
- InterlockedIncrement( &ParentObjectInfo->ObjectReferenceCount);
+ lCount = InterlockedIncrement( &ParentObjectInfo->ObjectReferenceCount);
}
//
{
BOOLEAN bAcquiredTreeLock = FALSE;
+ LONG lCount;
if( !ExIsResourceAcquiredExclusiveLite( ObjectInfo->VolumeCB->ObjectInfoTree.TreeLock))
{
if( ObjectInfo->ParentObjectInformation != NULL)
{
- InterlockedDecrement( &ObjectInfo->ParentObjectInformation->ObjectReferenceCount);
+
+ lCount = InterlockedDecrement( &ObjectInfo->ParentObjectInformation->ObjectReferenceCount);
}
if( bAcquiredTreeLock)
UNICODE_STRING uniComponentName, uniRemainingPath, uniParsedName;
ULONG ulNameDifference = 0;
GUID stAuthGroup;
+ LONG lCount;
__Enter
{
pParentDirEntry = AFSGlobalRoot->DirectoryCB;
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSEvaluateRootEntry Increment count on volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
- InterlockedIncrement( &pParentDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pParentDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pParentDirEntry->NameInformation.FileName,
pParentDirEntry,
NULL,
- pParentDirEntry->OpenReferenceCount);
+ lCount);
ntStatus = AFSLocateNameEntry( NULL,
NULL,
if( pVolumeCB != NULL)
{
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSEvaluateRootEntry Decrement count on volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
}
if( pDirectoryEntry != NULL)
{
- InterlockedDecrement( &pDirectoryEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirectoryEntry->NameInformation.FileName,
pDirectoryEntry,
NULL,
- pDirectoryEntry->OpenReferenceCount);
+ lCount);
}
else
{
- InterlockedDecrement( &pParentDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pParentDirEntry->NameInformation.FileName,
pParentDirEntry,
NULL,
- pParentDirEntry->OpenReferenceCount);
+ lCount);
}
}
if( pVolumeCB != NULL)
{
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSEvaluateRootEntry2 Decrement count on volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
}
if( pNameArray != NULL)
UNICODE_STRING uniFullPathName, uniRemainingPath, uniComponentName, uniParsedName;
AFSNameArrayHdr *pNameArray = NULL;
AFSDirectoryCB *pDirectoryEntry = NULL, *pParentDirEntry = NULL;
+ LONG lCount;
__Enter
{
if( pVolumeCB != NULL)
{
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSGetObjectStatus Increment count on volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
}
AFSReleaseResource( &pDevExt->Specific.RDR.VolumeTreeLock);
pObjectInfo = &pVolumeCB->ObjectInformation;
- InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
}
else
{
AFSAcquireShared( pVolumeCB->ObjectInfoTree.TreeLock,
TRUE);
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSGetObjectStatus Decrement count on volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
ullIndex = AFSCreateLowIndex( &GetStatusInfo->FileID);
// Reference the node so it won't be torn down
//
- InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSGetObjectStatus Increment count on object %08lX Cnt %d\n",
pObjectInfo,
- pObjectInfo->ObjectReferenceCount);
+ lCount);
}
AFSReleaseResource( pVolumeCB->ObjectInfoTree.TreeLock);
// Increment the ref count on the volume and dir entry for correct processing below
//
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSGetObjectStatus Increment count on volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
- InterlockedIncrement( &pParentDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pParentDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pParentDirEntry->NameInformation.FileName,
pParentDirEntry,
NULL,
- pParentDirEntry->OpenReferenceCount);
+ lCount);
ntStatus = AFSLocateNameEntry( NULL,
NULL,
if( pVolumeCB != NULL)
{
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSGetObjectStatus Decrement count on volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
}
if( pDirectoryEntry != NULL)
{
- InterlockedDecrement( &pDirectoryEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirectoryEntry->NameInformation.FileName,
pDirectoryEntry,
NULL,
- pDirectoryEntry->OpenReferenceCount);
+ lCount);
}
else
{
- InterlockedDecrement( &pParentDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pParentDirEntry->NameInformation.FileName,
pParentDirEntry,
NULL,
- pParentDirEntry->OpenReferenceCount);
+ lCount);
}
}
// Remove the reference made above
//
- InterlockedDecrement( &pDirectoryEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryEntry->OpenReferenceCount);
pObjectInfo = pDirectoryEntry->ObjectInformation;
- InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
+ lCount = InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
if( pVolumeCB != NULL)
{
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
if( pObjectInfo != NULL)
{
- InterlockedDecrement( &pObjectInfo->ObjectReferenceCount);
+ lCount = InterlockedDecrement( &pObjectInfo->ObjectReferenceCount);
}
if( pNameArray != NULL)
NTSTATUS ntStatus = STATUS_SUCCESS;
AFSDirectoryCB *pDirEntry = NULL;
ULONG ulCRC = 0;
+ LONG lCount;
__Enter
{
if( pDirEntry != NULL)
{
- InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
}
AFSReleaseResource( ParentDirectoryCB->ObjectInformation->Specific.Directory.DirectoryNodeHdr.TreeLock);
ntStatus = STATUS_REPARSE_POINT_NOT_RESOLVED;
- InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
try_exit:
PIRP pIrp;
NTSTATUS ntStatus = STATUS_SUCCESS;
PDEVICE_OBJECT pDeviceObject = NULL;
+ LONG lCount;
__Enter
{
// Bump the count *before* we start the IO, that way if it
// completes real fast it will still not set the event
//
- InterlockedIncrement(&Gather->Count);
+ lCount = InterlockedIncrement(&Gather->Count);
//
// Set the completion routine.
AFSCompleteIo( IN AFSGatherIo *Gather,
IN NTSTATUS Status)
{
+ LONG lCount;
+
if (!NT_SUCCESS(Status)) {
Gather->Status = Status;
}
- if (0 == InterlockedDecrement( &Gather->Count )) {
+ lCount = InterlockedDecrement( &Gather->Count );
+
+ if (0 == lCount) {
//
// Last outstanding IO. Complete the parent and
// do whatever it takes to clean up
AFSVolumeCB *pCurrentVolume = *VolumeCB;
BOOLEAN bReleaseCurrentVolume = TRUE;
BOOLEAN bSubstitutedName = FALSE;
+ LONG lCount;
__Enter
{
// Dereference the current entry ..
//
- InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirEntry->NameInformation.FileName,
pDirEntry,
NULL,
- pDirEntry->OpenReferenceCount);
+ lCount);
//
// OK, need to back up one entry for the correct parent since the current
// Increment our reference on this dir entry
//
- InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirEntry->NameInformation.FileName,
pDirEntry,
NULL,
- pDirEntry->OpenReferenceCount);
+ lCount);
if( BooleanFlagOn( pDirEntry->ObjectInformation->Flags, AFS_OBJECT_ROOT_VOLUME))
{
pCurrentObject->FileId.Vnode,
pCurrentObject->FileId.Unique);
- InterlockedDecrement( &pCurrentVolume->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pCurrentVolume->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSLocateNameEntry Decrement count on volume %08lX Cnt %d\n",
pCurrentVolume,
- pCurrentVolume->VolumeReferenceCount);
+ lCount);
pCurrentVolume = AFSGlobalRoot;
- InterlockedIncrement( &pCurrentVolume->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pCurrentVolume->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSLocateNameEntry Increment count on volume %08lX Cnt %d\n",
pCurrentVolume,
- pCurrentVolume->VolumeReferenceCount);
+ lCount);
}
//
// Dereference our current dir entry
//
- InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirEntry->NameInformation.FileName,
pDirEntry,
NULL,
- pDirEntry->OpenReferenceCount);
+ lCount);
pDirEntry = pCurrentVolume->DirectoryCB;
// Reference the new dir entry
//
- InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirEntry->NameInformation.FileName,
pDirEntry,
NULL,
- pDirEntry->OpenReferenceCount);
+ lCount);
//
// Reset the name array
// Increment our link count
//
- InterlockedIncrement( &pNameArray->LinkCount);
+ lCount = InterlockedIncrement( &pNameArray->LinkCount);
continue;
}
ASSERT( pCurrentVolume->VolumeReferenceCount > 1);
- InterlockedDecrement( &pCurrentVolume->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pCurrentVolume->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
// Deref and ref count the entries
//
- InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirEntry->NameInformation.FileName,
pDirEntry,
NULL,
- pDirEntry->OpenReferenceCount);
+ lCount);
pDirEntry = pCurrentVolume->DirectoryCB;
- InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirEntry->NameInformation.FileName,
pDirEntry,
NULL,
- pDirEntry->OpenReferenceCount);
+ lCount);
pParentDirEntry = NULL;
// Increment our link count
//
- InterlockedIncrement( &pNameArray->LinkCount);
+ lCount = InterlockedIncrement( &pNameArray->LinkCount);
continue;
}
//
// Need to back up one entry in the name array
//
-
- InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirEntry->NameInformation.FileName,
pDirEntry,
NULL,
- pDirEntry->OpenReferenceCount);
+ lCount);
pDirEntry = AFSBackupEntry( NameArray);
try_return(ntStatus = STATUS_OBJECT_PATH_INVALID);
}
- InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
if( BooleanFlagOn( pDirEntry->ObjectInformation->Flags, AFS_OBJECT_ROOT_VOLUME))
{
// Increment our dir entry ref count
//
- InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirEntry->NameInformation.FileName,
pDirEntry,
NULL,
- pDirEntry->OpenReferenceCount);
+ lCount);
}
AFSReleaseResource( pParentDirEntry->ObjectInformation->Specific.Directory.DirectoryNodeHdr.TreeLock);
AFSAcquireExcl( pCurrentObject->VolumeCB->ObjectInfoTree.TreeLock,
TRUE);
- if( InterlockedDecrement( &pDirEntry->OpenReferenceCount) == 0)
+ lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+
+ if( lCount == 0)
{
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING|AFS_SUBSYSTEM_CLEANUP_PROCESSING,
// Decrement the previous parent
//
- InterlockedDecrement( &pParentDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pParentDirEntry->NameInformation.FileName,
pParentDirEntry,
NULL,
- pParentDirEntry->OpenReferenceCount);
+ lCount);
//
// If we ended up substituting a name in the component then update
if( pDirEntry != NULL)
{
- InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirEntry->NameInformation.FileName,
pDirEntry,
NULL,
- pDirEntry->OpenReferenceCount);
+ lCount);
}
else if( pParentDirEntry != NULL)
{
- InterlockedDecrement( &pParentDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pParentDirEntry->NameInformation.FileName,
pParentDirEntry,
NULL,
- pParentDirEntry->OpenReferenceCount);
+ lCount);
}
if( bReleaseCurrentVolume)
ASSERT( pCurrentVolume->VolumeReferenceCount > 1);
- InterlockedDecrement( &pCurrentVolume->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pCurrentVolume->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSLocateNameEntry Decrement3 count on volume %08lX Cnt %d\n",
pCurrentVolume,
- pCurrentVolume->VolumeReferenceCount);
+ lCount);
}
if( RootPathName->Buffer != uniFullPathName.Buffer)
AFSDirectoryCB *pDirNode = NULL, *pExistingDirNode = NULL;
UNICODE_STRING uniShortName;
LARGE_INTEGER liFileSize = {0,0};
+ LONG lCount;
__Enter
{
AFSDeleteDirEntry( ParentObjectInfo,
pDirNode);
- InterlockedIncrement( &pExistingDirNode->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pExistingDirNode->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSCreateDirEntry Increment count on %wZ DE %p Cnt %d\n",
&pExistingDirNode->NameInformation.FileName,
pExistingDirNode,
- pExistingDirNode->OpenReferenceCount);
+ lCount);
*DirEntry = pExistingDirNode;
pDirNode,
TRUE);
- InterlockedIncrement( &pDirNode->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirNode->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSCreateDirEntry Increment2 count on %wZ DE %p Cnt %d\n",
&pDirNode->NameInformation.FileName,
pDirNode,
- pDirNode->OpenReferenceCount);
+ lCount);
//
// Pass back the dir entry
IN BOOLEAN InsertInEnumList)
{
+ LONG lCount;
+
__Enter
{
SetFlag( DirEntry->Flags, AFS_DIR_ENTRY_INSERTED_ENUM_LIST);
- InterlockedIncrement( &ParentObjectInfo->Specific.Directory.DirectoryNodeCount);
+ lCount = InterlockedIncrement( &ParentObjectInfo->Specific.Directory.DirectoryNodeCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIR_NODE_COUNT,
AFS_TRACE_LEVEL_VERBOSE,
"AFSInsertDirectoryNode Adding entry %wZ Inc Count %d to parent FID %08lX-%08lX-%08lX-%08lX\n",
- &DirEntry->NameInformation.FileName,
- ParentObjectInfo->Specific.Directory.DirectoryNodeCount,
- ParentObjectInfo->FileId.Cell,
- ParentObjectInfo->FileId.Volume,
- ParentObjectInfo->FileId.Vnode,
- ParentObjectInfo->FileId.Unique);
+ &DirEntry->NameInformation.FileName,
+ lCount,
+ ParentObjectInfo->FileId.Cell,
+ ParentObjectInfo->FileId.Volume,
+ ParentObjectInfo->FileId.Vnode,
+ ParentObjectInfo->FileId.Unique);
}
}
{
NTSTATUS ntStatus = STATUS_SUCCESS;
+ LONG lCount;
__Enter
{
ASSERT( DirEntry->ObjectInformation->ObjectReferenceCount > 0);
- if( InterlockedDecrement( &DirEntry->ObjectInformation->ObjectReferenceCount) == 0)
+ lCount = InterlockedDecrement( &DirEntry->ObjectInformation->ObjectReferenceCount);
+
+ if( lCount == 0)
{
SetFlag( DirEntry->ObjectInformation->Flags, AFS_OBJECT_FLAGS_DELETED);
}
{
NTSTATUS ntStatus = STATUS_SUCCESS;
+ LONG lCount;
__Enter
{
ASSERT( ParentObjectInfo->Specific.Directory.DirectoryNodeCount > 0);
- InterlockedDecrement( &ParentObjectInfo->Specific.Directory.DirectoryNodeCount);
+ lCount = InterlockedDecrement( &ParentObjectInfo->Specific.Directory.DirectoryNodeCount);
ClearFlag( DirEntry->Flags, AFS_DIR_ENTRY_INSERTED_ENUM_LIST);
AFS_TRACE_LEVEL_VERBOSE,
"AFSRemoveDirNodeFromParent Removing entry %wZ Dec Count %d to parent FID %08lX-%08lX-%08lX-%08lX\n",
&DirEntry->NameInformation.FileName,
- ParentObjectInfo->Specific.Directory.DirectoryNodeCount,
+ lCount,
ParentObjectInfo->FileId.Cell,
ParentObjectInfo->FileId.Volume,
ParentObjectInfo->FileId.Vnode,
AFSFcb *pRelatedFcb = NULL;
BOOLEAN bReleaseTreeLock = FALSE;
BOOLEAN bIsAllShare = FALSE;
+ LONG lCount;
__Enter
{
// Increment our volume reference count
//
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSParseName Increment count on volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
*ParentDirectoryCB = pDirEntry;
- InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirEntry->NameInformation.FileName,
pDirEntry,
NULL,
- pDirEntry->OpenReferenceCount);
+ lCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE_2,
"AFSParseName (%08lX) Returning global root access\n",
Irp);
- InterlockedIncrement( &AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&AFSGlobalRoot->DirectoryCB->NameInformation.FileName,
AFSGlobalRoot->DirectoryCB,
NULL,
- AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
+ lCount);
*VolumeCB = NULL;
"AFSParseName (%08lX) Returning global root access\n",
Irp);
- InterlockedIncrement( &AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&AFSGlobalRoot->DirectoryCB->NameInformation.FileName,
AFSGlobalRoot->DirectoryCB,
NULL,
- AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
+ lCount);
*VolumeCB = NULL;
"AFSParseName (%08lX) Returning root PIOCtl access\n",
Irp);
- InterlockedIncrement( &AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&AFSGlobalRoot->DirectoryCB->NameInformation.FileName,
AFSGlobalRoot->DirectoryCB,
NULL,
- AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
+ lCount);
ClearFlag( *ParseFlags, AFS_PARSE_FLAG_ROOT_ACCESS);
ClearFlag( *ParseFlags, AFS_PARSE_FLAG_ROOT_ACCESS);
- InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirEntry->NameInformation.FileName,
pDirEntry,
NULL,
- pDirEntry->OpenReferenceCount);
+ lCount);
try_return( ntStatus = STATUS_SUCCESS);
}
uniRemainingPath.Length += sizeof( WCHAR);
uniRemainingPath.MaximumLength += sizeof( WCHAR);
- InterlockedIncrement( &pVolumeCB->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->DirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pVolumeCB->DirectoryCB->NameInformation.FileName,
pVolumeCB->DirectoryCB,
NULL,
- pVolumeCB->DirectoryCB->OpenReferenceCount);
+ lCount = pVolumeCB->DirectoryCB->OpenReferenceCount);
//
// Pass back the parent being the volume root
// Increment our reference on the volume
//
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSParseName Increment2 count on global volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
try_exit:
AFSDirectoryCB *pDirNode = NULL;
UNICODE_STRING uniDirName, uniTargetName;
AFSVolumeCB *pVolumeCB = NULL;
+ LONG lCount;
__Enter
{
*ShareDirEntry = pVolumeCB->DirectoryCB;
- InterlockedIncrement( &pVolumeCB->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->DirectoryCB->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pVolumeCB->DirectoryCB->NameInformation.FileName,
pVolumeCB->DirectoryCB,
NULL,
- pVolumeCB->DirectoryCB->OpenReferenceCount);
+ lCount);
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
}
else
{
+ lCount = InterlockedIncrement( &pDirHdr->ContentIndex);
+
pDirNode = AFSInitDirEntry( &AFSGlobalRoot->ObjectInformation,
&uniDirName,
&uniTargetName,
pDirEnumEntry,
- (ULONG)InterlockedIncrement( &pDirHdr->ContentIndex));
+ (ULONG)lCount);
if( pDirNode == NULL)
{
SetFlag( pDirNode->Flags, AFS_DIR_ENTRY_INSERTED_ENUM_LIST);
- InterlockedIncrement( &AFSGlobalRoot->ObjectInformation.Specific.Directory.DirectoryNodeCount);
+ lCount = InterlockedIncrement( &AFSGlobalRoot->ObjectInformation.Specific.Directory.DirectoryNodeCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIR_NODE_COUNT,
AFS_TRACE_LEVEL_VERBOSE,
"AFSCheckCellName Adding entry %wZ Inc Count %d to parent FID %08lX-%08lX-%08lX-%08lX\n",
- &pDirNode->NameInformation.FileName,
- AFSGlobalRoot->ObjectInformation.Specific.Directory.DirectoryNodeCount,
- AFSGlobalRoot->ObjectInformation.FileId.Cell,
- AFSGlobalRoot->ObjectInformation.FileId.Volume,
- AFSGlobalRoot->ObjectInformation.FileId.Vnode,
- AFSGlobalRoot->ObjectInformation.FileId.Unique);
+ &pDirNode->NameInformation.FileName,
+ lCount,
+ AFSGlobalRoot->ObjectInformation.FileId.Cell,
+ AFSGlobalRoot->ObjectInformation.FileId.Volume,
+ AFSGlobalRoot->ObjectInformation.FileId.Vnode,
+ AFSGlobalRoot->ObjectInformation.FileId.Unique);
- InterlockedIncrement( &pDirNode->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirNode->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirNode->NameInformation.FileName,
pDirNode,
NULL,
- pDirNode->OpenReferenceCount);
+ lCount);
AFSReleaseResource( AFSGlobalRoot->ObjectInformation.Specific.Directory.DirectoryNodeHdr.TreeLock);
ULONGLONG ullIndex = 0;
AFSVolumeCB *pVolumeCB = NULL;
AFSFileID stTargetFileID;
+ LONG lCount;
__Enter
{
// deadlock with invalidation
//
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
AFSReleaseResource( &pDevExt->Specific.RDR.VolumeTreeLock);
AFSAcquireExcl( pVolumeCB->VolumeLock,
TRUE);
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
}
if( pVolumeCB->RootFcb == NULL)
pVolumeCB->ObjectInformation.FileId.Vnode,
pVolumeCB->ObjectInformation.FileId.Unique);
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
AFSReleaseResource( pVolumeCB->VolumeLock);
AFS_TRACE_LEVEL_VERBOSE,
"AFSBuildMountPointTarget Increment count on volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
*TargetVolumeCB = pVolumeCB;
UNICODE_STRING uniDirName, uniTargetName;
ULONGLONG ullIndex = 0;
AFSVolumeCB *pVolumeCB = NULL;
+ LONG lCount;
__Enter
{
// deadlock with invalidation
//
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
AFSReleaseResource( &pDevExt->Specific.RDR.VolumeTreeLock);
AFSAcquireExcl( pVolumeCB->VolumeLock,
TRUE);
- InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
}
pVolumeCB->ObjectInformation.FileId.Vnode,
pVolumeCB->ObjectInformation.FileId.Unique);
- InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
AFSReleaseResource( pVolumeCB->VolumeLock);
AFS_TRACE_LEVEL_VERBOSE,
"AFSBuildRootVolume Increment count on volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
*TargetVolumeCB = pVolumeCB;
ULONG ulIndex = 0;
BOOLEAN bContinueProcessing = TRUE;
AFSFileInfoCB stFileInformation;
+ LONG lCount;
__Enter
{
}
}
- InterlockedIncrement( &pShareDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pShareDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pShareDirEntry->NameInformation.FileName,
pShareDirEntry,
NULL,
- pShareDirEntry->OpenReferenceCount);
+ lCount);
AFSReleaseResource( AFSGlobalRoot->ObjectInformation.Specific.Directory.DirectoryNodeHdr.TreeLock);
pDirEntry = (AFSDirectoryCB *)pDirEntry->ListEntry.fLink;
}
- InterlockedDecrement( &pTargetDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pTargetDirEntry->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSEnumerateConnection Decrement count on %wZ DE %p Ccb %p Cnt %d\n",
- &pTargetDirEntry->NameInformation.FileName,
- pTargetDirEntry,
- NULL,
- pTargetDirEntry->OpenReferenceCount);
+ &pTargetDirEntry->NameInformation.FileName,
+ pTargetDirEntry,
+ NULL,
+ lCount);
*CopiedLength = ulCopiedLength;
if( pShareDirEntry != NULL)
{
- InterlockedDecrement( &pShareDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pShareDirEntry->OpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSEnumerateConnection1 Decrement count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pShareDirEntry->NameInformation.FileName,
+ pShareDirEntry,
+ NULL,
+ lCount);
}
}
HANDLE hThread;
AFSDeviceExt *pControlDeviceExt = (AFSDeviceExt *)AFSControlDeviceObject->DeviceExtension;
PKSTART_ROUTINE pStartRoutine = NULL;
+ LONG lCount;
__Enter
{
FALSE,
NULL);
- if( InterlockedIncrement( &pControlDeviceExt->Specific.Control.VolumeWorkerThreadCount) > 0)
+ lCount = InterlockedIncrement( &pControlDeviceExt->Specific.Control.VolumeWorkerThreadCount);
+
+ if( lCount > 0)
{
KeClearEvent( &pControlDeviceExt->Specific.Control.VolumeWorkerCloseEvent);
BOOLEAN freeWorkItem = TRUE;
BOOLEAN exitThread = FALSE;
AFSDeviceExt *pLibraryDevExt = NULL;
+ LONG lCount;
pLibraryDevExt = (AFSDeviceExt *)AFSLibraryDeviceObject->DeviceExtension;
ASSERT( pWorkItem->Specific.Fcb.Fcb->OpenReferenceCount != 0);
- InterlockedDecrement( &pWorkItem->Specific.Fcb.Fcb->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pWorkItem->Specific.Fcb.Fcb->OpenReferenceCount);
break;
}
AFSVolumeCB *pVolumeCB = NULL, *pNextVolume = NULL;
LARGE_INTEGER liCurrentTime;
BOOLEAN bVolumeObject = FALSE;
+ LONG lCount;
pControlDeviceExt = (AFSDeviceExt *)AFSControlDeviceObject->DeviceExtension;
AFS_TRACE_LEVEL_VERBOSE,
"AFSPrimaryVolumeWorkerThread Exiting\n");
- if( InterlockedDecrement( &pControlDeviceExt->Specific.Control.VolumeWorkerThreadCount) == 0)
+ lCount = InterlockedDecrement( &pControlDeviceExt->Specific.Control.VolumeWorkerThreadCount);
+
+ if( lCount == 0)
{
KeSetEvent( &pControlDeviceExt->Specific.Control.VolumeWorkerCloseEvent,
LARGE_INTEGER DueTime;
LONG TimeOut;
KTIMER Timer;
+ LONG lCount;
pControlDeviceExt = (AFSDeviceExt *)AFSControlDeviceObject->DeviceExtension;
KeCancelTimer( &Timer);
- if( InterlockedDecrement( &pControlDeviceExt->Specific.Control.VolumeWorkerThreadCount) == 0)
+ lCount = InterlockedDecrement( &pControlDeviceExt->Specific.Control.VolumeWorkerThreadCount);
+
+ if( lCount == 0)
{
KeSetEvent( &pControlDeviceExt->Specific.Control.VolumeWorkerCloseEvent,
NTSTATUS ntStatus = STATUS_SUCCESS;
AFSDeviceExt *pDevExt = NULL;
+ LONG lCount;
pDevExt = (AFSDeviceExt *)AFSLibraryDeviceObject->DeviceExtension;
AFSAcquireExcl( &pDevExt->Specific.Library.QueueLock,
TRUE);
+ lCount = InterlockedIncrement( &pDevExt->Specific.Library.QueueItemCount);
+
AFSDbgLogMsg( AFS_SUBSYSTEM_WORKER_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSInsertWorkitem Inserting work item %08lX Count %08lX\n",
WorkItem,
- InterlockedIncrement( &pDevExt->Specific.Library.QueueItemCount));
+ lCount);
if( pDevExt->Specific.Library.QueueTail != NULL) // queue already has nodes
{
NTSTATUS ntStatus = STATUS_SUCCESS;
AFSDeviceExt *pDevExt = NULL;
+ LONG lCount;
pDevExt = (AFSDeviceExt *)AFSLibraryDeviceObject->DeviceExtension;
AFSAcquireExcl( &pDevExt->Specific.Library.IOQueueLock,
TRUE);
+ lCount = InterlockedIncrement( &pDevExt->Specific.Library.IOQueueItemCount);
+
AFSDbgLogMsg( AFS_SUBSYSTEM_WORKER_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSInsertWorkitem Inserting IO work item %08lX Count %08lX\n",
WorkItem,
- InterlockedIncrement( &pDevExt->Specific.Library.IOQueueItemCount));
+ lCount);
if( pDevExt->Specific.Library.IOQueueTail != NULL) // queue already has nodes
{
NTSTATUS ntStatus = STATUS_SUCCESS;
AFSDeviceExt *pDevExt = NULL;
+ LONG lCount;
pDevExt = (AFSDeviceExt *)AFSLibraryDeviceObject->DeviceExtension;
pDevExt->Specific.Library.QueueHead = WorkItem;
+ lCount = InterlockedIncrement( &pDevExt->Specific.Library.QueueItemCount);
+
AFSDbgLogMsg( AFS_SUBSYSTEM_WORKER_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSInsertWorkitemAtHead Inserting work item %08lX Count %08lX\n",
WorkItem,
- InterlockedIncrement( &pDevExt->Specific.Library.QueueItemCount));
+ lCount);
//
// indicate that the queue has nodes
NTSTATUS ntStatus = STATUS_SUCCESS;
AFSWorkItem *pWorkItem = NULL;
AFSDeviceExt *pDevExt = NULL;
+ LONG lCount;
pDevExt = (AFSDeviceExt *)AFSLibraryDeviceObject->DeviceExtension;
pWorkItem = pDevExt->Specific.Library.QueueHead;
+ lCount = InterlockedDecrement( &pDevExt->Specific.Library.QueueItemCount);
+
AFSDbgLogMsg( AFS_SUBSYSTEM_WORKER_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSRemoveWorkItem Removing work item %08lX Count %08lX Thread %08lX\n",
pWorkItem,
- InterlockedDecrement( &pDevExt->Specific.Library.QueueItemCount),
+ lCount,
PsGetCurrentThreadId());
pDevExt->Specific.Library.QueueHead = pDevExt->Specific.Library.QueueHead->next;
NTSTATUS ntStatus = STATUS_SUCCESS;
AFSWorkItem *pWorkItem = NULL;
AFSDeviceExt *pDevExt = NULL;
+ LONG lCount;
pDevExt = (AFSDeviceExt *)AFSLibraryDeviceObject->DeviceExtension;
pWorkItem = pDevExt->Specific.Library.IOQueueHead;
+ lCount = InterlockedDecrement( &pDevExt->Specific.Library.IOQueueItemCount);
+
AFSDbgLogMsg( AFS_SUBSYSTEM_WORKER_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSRemoveWorkItem Removing work item %08lX Count %08lX Thread %08lX\n",
pWorkItem,
- InterlockedDecrement( &pDevExt->Specific.Library.IOQueueItemCount),
+ lCount,
PsGetCurrentThreadId());
pDevExt->Specific.Library.IOQueueHead = pDevExt->Specific.Library.IOQueueHead->next;
NTSTATUS ntStatus = STATUS_SUCCESS;
AFSDeviceExt *pRDRDeviceExt = (AFSDeviceExt *)AFSRDRDeviceObject->DeviceExtension;
AFSWorkItem *pWorkItem = NULL;
+ LONG lCount;
__try
{
// queue down. We'll decrement it just below.
//
- if( InterlockedIncrement( &Fcb->Specific.File.QueuedFlushCount) > 3)
+ lCount = InterlockedIncrement( &Fcb->Specific.File.QueuedFlushCount);
+
+ if( lCount > 3)
{
AFSDbgLogMsg( AFS_SUBSYSTEM_WORKER_PROCESSING,
pWorkItem->Specific.Fcb.Fcb = Fcb;
- InterlockedIncrement( &Fcb->OpenReferenceCount);
+ lCount = InterlockedIncrement( &Fcb->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSQueueFlushExtents Increment count on Fcb %08lX Cnt %d\n",
- Fcb,
- Fcb->OpenReferenceCount);
+ Fcb,
+ lCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_WORKER_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
// Remove the count we added above
//
- if( InterlockedDecrement( &Fcb->Specific.File.QueuedFlushCount) == 0)
+ lCount = InterlockedDecrement( &Fcb->Specific.File.QueuedFlushCount);
+
+ if( lCount == 0)
{
KeSetEvent( &Fcb->NPFcb->Specific.File.QueuedFlushEvent,
if( pWorkItem != NULL)
{
- InterlockedDecrement( &Fcb->OpenReferenceCount);
+ lCount = InterlockedDecrement( &Fcb->OpenReferenceCount);
ExFreePoolWithTag( pWorkItem, AFS_WORK_ITEM_TAG);
}