NTSTATUS ntStatus = STATUS_SUCCESS;
AFSProviderConnectionCB *pConnection = NULL, *pLastConnection = NULL;
UNICODE_STRING uniRemoteName;
- USHORT usIndex = 0;
AFSDeviceExt *pRDRDevExt = (AFSDeviceExt *)AFSRDRDeviceObject->DeviceExtension;
__Enter
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSAddConnection Acquiring AFSProviderListLock lock %08lX EXCL %08lX\n",
+ "AFSAddConnection Acquiring AFSProviderListLock lock %p EXCL %08lX\n",
&pRDRDevExt->Specific.RDR.ProviderListLock,
PsGetCurrentThread());
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSCancelConnection Acquiring AFSProviderListLock lock %08lX EXCL %08lX\n",
+ "AFSCancelConnection Acquiring AFSProviderListLock lock %p EXCL %08lX\n",
&pRDRDevExt->Specific.RDR.ProviderListLock,
PsGetCurrentThread());
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSGetConnection Acquiring AFSProviderListLock lock %08lX SHARED %08lX\n",
+ "AFSGetConnection Acquiring AFSProviderListLock lock %p SHARED %08lX\n",
&pRDRDevExt->Specific.RDR.ProviderListLock,
PsGetCurrentThread());
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSListConnections Acquiring AFSProviderListLock lock %08lX SHARED %08lX\n",
+ "AFSListConnections Acquiring AFSProviderListLock lock %p SHARED %08lX\n",
&pRDRDevExt->Specific.RDR.ProviderListLock,
PsGetCurrentThread());
{
AFSProviderConnectionCB *pConnection = NULL;
- UNICODE_STRING uniServerName, uniRemoteName = *RemoteName;
+ UNICODE_STRING uniRemoteName = *RemoteName;
AFSDeviceExt *pRDRDevExt = (AFSDeviceExt *)AFSRDRDeviceObject->DeviceExtension;
__Enter
{
NTSTATUS ntStatus = STATUS_SUCCESS;
- AFSDeviceExt *pDeviceExt = (AFSDeviceExt *)AFSRDRDeviceObject->DeviceExtension;
ULONG ulCRC = 0, ulCopiedLength = 0;
AFSDirectoryCB *pShareDirEntry = NULL;
AFSDirectoryCB *pDirEntry = NULL, *pTargetDirEntry = NULL;
ULONG ulIndex = 0;
- BOOLEAN bContinueProcessing = TRUE;
- AFSFileInfoCB stFileInformation;
LONG lCount;
__Enter
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSEnumerateConnection Acquiring GlobalRoot DirectoryNodeHdr.TreeLock lock %08lX SHARED %08lX\n",
+ "AFSEnumerateConnection Acquiring GlobalRoot DirectoryNodeHdr.TreeLock lock %p SHARED %08lX\n",
AFSGlobalRoot->ObjectInformation.Specific.Directory.DirectoryNodeHdr.TreeLock,
PsGetCurrentThread());
}
}
- lCount = InterlockedIncrement( &pShareDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pShareDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
//
// Setup the request to evaluate the entry
+ // On success, pTargetDirEntry has the DirOpenReferenceCount held
//
ntStatus = AFSEvaluateRootEntry( pShareDirEntry,
pDirEntry = (AFSDirectoryCB *)pDirEntry->ListEntry.fLink;
}
- lCount = InterlockedDecrement( &pTargetDirEntry->OpenReferenceCount);
+ //
+ // Release the DirOpenReferenceCount obtained from AFSEvaluateRootEntry
+ //
+
+ lCount = InterlockedDecrement( &pTargetDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
NULL,
lCount);
+ ASSERT( lCount >= 0);
+
*CopiedLength = ulCopiedLength;
AFSReleaseResource( pTargetDirEntry->ObjectInformation->Specific.Directory.DirectoryNodeHdr.TreeLock);
if( pShareDirEntry != NULL)
{
- lCount = InterlockedDecrement( &pShareDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pShareDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pShareDirEntry,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
}
try_return( ntStatus = STATUS_DEVICE_NOT_READY);
}
- uniFullName = uniRemoteName;
+ uniFullName = uniRemoteName;
if( uniRemoteName.Buffer[ 0] == L'\\' &&
uniRemoteName.Buffer[ 1] == L'\\')
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSGetConnectionInfo Acquiring AFSProviderListLock lock %08lX SHARED %08lX\n",
+ "AFSGetConnectionInfo Acquiring AFSProviderListLock lock %p SHARED %08lX\n",
&pRDRDevExt->Specific.RDR.ProviderListLock,
PsGetCurrentThread());
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSGetConnectionInfo Acquiring AFSProviderListLock lock %08lX SHARED %08lX\n",
+ "AFSGetConnectionInfo Acquiring AFSProviderListLock lock %p SHARED %08lX\n",
&pRDRDevExt->Specific.RDR.ProviderListLock,
PsGetCurrentThread());