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());
if( pConnection->Comment.Buffer != NULL)
{
- AFSExFreePool( pConnection->Comment.Buffer);
+ AFSExFreePoolWithTag( pConnection->Comment.Buffer, 0);
}
ConnectionResult->LocalName = pConnection->LocalName;
- AFSExFreePool( pConnection);
+ AFSExFreePoolWithTag( pConnection, AFS_PROVIDER_CB);
ConnectionResult->Status = WN_SUCCESS;
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());
if( uniRemoteName.Buffer != NULL)
{
- AFSExFreePool( uniRemoteName.Buffer);
+ AFSExFreePoolWithTag( uniRemoteName.Buffer, 0);
}
}
{
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());
}
}
- InterlockedIncrement( &pShareDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pShareDirEntry->DirOpenReferenceCount);
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);
//
// Setup the request to evaluate the entry
+ // On success, pTargetDirEntry has the DirOpenReferenceCount held
//
ntStatus = AFSEvaluateRootEntry( pShareDirEntry,
pDirEntry = (AFSDirectoryCB *)pDirEntry->ListEntry.fLink;
}
- InterlockedDecrement( &pTargetDirEntry->OpenReferenceCount);
+ //
+ // Release the DirOpenReferenceCount obtained from AFSEvaluateRootEntry
+ //
+
+ lCount = InterlockedDecrement( &pTargetDirEntry->DirOpenReferenceCount);
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);
+
+ ASSERT( lCount >= 0);
*CopiedLength = ulCopiedLength;
if( pShareDirEntry != NULL)
{
- InterlockedDecrement( &pShareDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pShareDirEntry->DirOpenReferenceCount);
+
+ 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);
+
+ 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());
if( pConnection == NULL)
{
UNICODE_STRING uniFullName;
- AFSFileID stFileID;
AFSDirEnumEntry *pDirEnumEntry = NULL;
AFSDbgLogMsg( AFS_SUBSYSTEM_NETWORK_PROVIDER,
AFSReleaseResource( &pRDRDevExt->Specific.RDR.ProviderListLock);
//
- // Perform a case insensitive search
- //
-
- //
// OK, ask the CM about this component name
//
- stFileID = AFSGlobalRoot->ObjectInformation.FileId;
-
ntStatus = AFSEvaluateTargetByName( NULL,
- &stFileID,
+ &AFSGlobalRoot->ObjectInformation,
&uniShareName,
&pDirEnumEntry);
// Don't need this
//
- AFSExFreePool( pDirEnumEntry);
+ AFSExFreePoolWithTag( pDirEnumEntry, AFS_GENERIC_MEMORY_3_TAG);
//
// The share name is valid
AFSReleaseResource( AFSGlobalRoot->ObjectInformation.Specific.Directory.DirectoryNodeHdr.TreeLock);
- AFSExFreePool( uniFullName.Buffer);
+ AFSExFreePoolWithTag( uniFullName.Buffer, 0);
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());
if ( uniRemainingPathLocal.Buffer )
{
- AFSExFreePool( uniRemainingPathLocal.Buffer);
+ AFSExFreePoolWithTag( uniRemainingPathLocal.Buffer, 0);
}
}