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,
}
}
+ if( FsRtlDoesNameContainWildCards( &uniFullName))
+ {
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
+ AFS_TRACE_LEVEL_ERROR,
+ "AFSParseName (%08lX) Component %wZ contains wild cards\n",
+ Irp,
+ &uniFullName);
+
+ try_return( ntStatus = STATUS_OBJECT_NAME_INVALID);
+ }
+
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE_2,
"AFSParseName (%08lX) Processing full name %wZ\n",
"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;
&uniComponentName,
&uniRemainingPath);
+ if( FsRtlDoesNameContainWildCards( &uniFullName))
+ {
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
+ AFS_TRACE_LEVEL_ERROR,
+ "AFSParseName (%08lX) Component %wZ contains wild cards\n",
+ Irp,
+ &uniComponentName);
+
+ try_return( ntStatus = STATUS_OBJECT_NAME_INVALID);
+ }
+
//
// If this is the ALL access then perform some additional processing
//
- if( RtlCompareUnicodeString( &uniComponentName,
+ if( uniComponentName.Length == 0 ||
+ RtlCompareUnicodeString( &uniComponentName,
&AFSGlobalRootName,
TRUE) == 0)
{
"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;