if( pDirNode == NULL)
{
- AFSDeleteObjectInfo( &pObjectInfoCB);
+ lCount = AFSObjectInfoDecrement( pObjectInfoCB,
+ AFS_OBJECT_REFERENCE_GLOBAL);
+
+ AFSDbgTrace(( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInitializeGlobalDirectoryEntries Decrement count on object %p Cnt %d\n",
+ pObjectInfoCB,
+ lCount));
+
+ if ( lCount == 0)
+ {
+
+ AFSDeleteObjectInfo( &pObjectInfoCB);
+ }
AFSDbgTrace(( AFS_SUBSYSTEM_LOAD_LIBRARY | AFS_SUBSYSTEM_INIT_PROCESSING | AFS_SUBSYSTEM_DIRENTRY_ALLOCATION,
AFS_TRACE_LEVEL_ERROR,
ExFreePool( pDirNode);
- AFSDeleteObjectInfo( &pObjectInfoCB);
+ lCount = AFSObjectInfoDecrement( pObjectInfoCB,
+ AFS_OBJECT_REFERENCE_GLOBAL);
+
+ AFSDbgTrace(( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInitializeGlobalDirectoryEntries Decrement count on object %p Cnt %d\n",
+ pObjectInfoCB,
+ lCount));
+
+ if ( lCount == 0)
+ {
+
+ AFSDeleteObjectInfo( &pObjectInfoCB);
+ }
AFSDbgTrace(( AFS_SUBSYSTEM_LOAD_LIBRARY | AFS_SUBSYSTEM_INIT_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
AFS_TRACE_LEVEL_ERROR,
"AFSInitializeGlobalDirectoryEntries AFS_DIR_ENTRY_TAG allocation failure\n"));
- AFSDeleteObjectInfo( &pObjectInfoCB);
+ lCount = AFSObjectInfoDecrement( pObjectInfoCB,
+ AFS_OBJECT_REFERENCE_GLOBAL);
+
+ AFSDbgTrace(( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInitializeGlobalDirectoryEntries Decrement count on object %p Cnt %d\n",
+ pObjectInfoCB,
+ lCount));
+
+ if ( lCount == 0)
+ {
+
+ AFSDeleteObjectInfo( &pObjectInfoCB);
+ }
try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES);
}
ExFreePool( pDirNode);
- AFSDeleteObjectInfo( &pObjectInfoCB);
+ lCount = AFSObjectInfoDecrement( pObjectInfoCB,
+ AFS_OBJECT_REFERENCE_GLOBAL);
+
+ AFSDbgTrace(( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInitializeGlobalDirectoryEntries Decrement count on object %p Cnt %d\n",
+ pObjectInfoCB,
+ lCount));
+
+ if ( lCount == 0)
+ {
+
+ AFSDeleteObjectInfo( &pObjectInfoCB);
+ }
try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES);
}
if( AFSGlobalDotDirEntry != NULL)
{
- AFSDeleteObjectInfo( &AFSGlobalDotDirEntry->ObjectInformation);
+ lCount = AFSObjectInfoDecrement( AFSGlobalDotDirEntry->ObjectInformation,
+ AFS_OBJECT_REFERENCE_GLOBAL);
+
+ AFSDbgTrace(( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInitializeGlobalDirectoryEntries Decrement count on object %p Cnt %d\n",
+ AFSGlobalDotDirEntry->ObjectInformation,
+ lCount));
+
+ if ( lCount == 0)
+ {
+
+ AFSDeleteObjectInfo( &AFSGlobalDotDirEntry->ObjectInformation);
+ }
ExDeleteResourceLite( &AFSGlobalDotDirEntry->NonPaged->Lock);
if( AFSGlobalDotDotDirEntry != NULL)
{
- AFSDeleteObjectInfo( &AFSGlobalDotDotDirEntry->ObjectInformation);
+ lCount = AFSObjectInfoDecrement( AFSGlobalDotDotDirEntry->ObjectInformation,
+ AFS_OBJECT_REFERENCE_GLOBAL);
+
+ AFSDbgTrace(( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInitializeGlobalDirectoryEntries Decrement count on object %p Cnt %d\n",
+ AFSGlobalDotDotDirEntry->ObjectInformation,
+ lCount));
+
+ if ( lCount == 0)
+ {
+
+ AFSDeleteObjectInfo( &AFSGlobalDotDotDirEntry->ObjectInformation);
+ }
ExDeleteResourceLite( &AFSGlobalDotDotDirEntry->NonPaged->Lock);
pObjectInfoCB,
lCount));
- if( bAllocatedObjectCB)
+ if( bAllocatedObjectCB &&
+ lCount == 0)
{
- ASSERT( pObjectInfoCB->ObjectReferenceCount == 0);
-
AFSDeleteObjectInfo( &pObjectInfoCB);
}
}
if( pDirNode == NULL)
{
- AFSDeleteObjectInfo( &pObjectInfoCB);
+ lCount = AFSObjectInfoDecrement( pObjectInfoCB,
+ AFS_OBJECT_REFERENCE_GLOBAL);
+
+ AFSDbgTrace(( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInitializeSpecialShareNameList Decrement count on object %p Cnt %d\n",
+ pObjectInfoCB,
+ lCount));
+
+ if ( lCount == 0)
+ {
+
+ AFSDeleteObjectInfo( &pObjectInfoCB);
+ }
try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES);
}
ExFreePool( pDirNode);
- AFSDeleteObjectInfo( &pObjectInfoCB);
+ lCount = AFSObjectInfoDecrement( pObjectInfoCB,
+ AFS_OBJECT_REFERENCE_GLOBAL);
+
+ AFSDbgTrace(( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInitializeSpecialShareNameList Decrement count on object %p Cnt %d\n",
+ pObjectInfoCB,
+ lCount));
+
+ if ( lCount == 0)
+ {
+
+ AFSDeleteObjectInfo( &pObjectInfoCB);
+ }
try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES);
}
if( pDirNode == NULL)
{
- AFSDeleteObjectInfo( &pObjectInfoCB);
+ lCount = AFSObjectInfoDecrement( pObjectInfoCB,
+ AFS_OBJECT_REFERENCE_GLOBAL);
+
+ AFSDbgTrace(( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInitializeSpecialShareNameList Decrement count on object %p Cnt %d\n",
+ pObjectInfoCB,
+ lCount));
+
+ if ( lCount == 0)
+ {
+
+ AFSDeleteObjectInfo( &pObjectInfoCB);
+ }
try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES);
}
ExFreePool( pDirNode);
- AFSDeleteObjectInfo( &pObjectInfoCB);
+ lCount = AFSObjectInfoDecrement( pObjectInfoCB,
+ AFS_OBJECT_REFERENCE_GLOBAL);
+
+ AFSDbgTrace(( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInitializeSpecialShareNameList Decrement count on object %p Cnt %d\n",
+ pObjectInfoCB,
+ lCount));
+
+ if ( lCount == 0)
+ {
+
+ AFSDeleteObjectInfo( &pObjectInfoCB);
+ }
try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES);
}
pLastDirNode = (AFSDirectoryCB *)pDirNode->ListEntry.fLink;
- AFSDeleteObjectInfo( &pDirNode->ObjectInformation);
+ lCount = AFSObjectInfoDecrement( pDirNode->ObjectInformation,
+ AFS_OBJECT_REFERENCE_GLOBAL);
+
+ AFSDbgTrace(( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInitializeSpecialShareNameList Decrement count on object %p Cnt %d\n",
+ pDirNode->ObjectInformation,
+ lCount));
+
+ if ( lCount == 0)
+ {
+
+ AFSDeleteObjectInfo( &pDirNode->ObjectInformation);
+ }
ExDeleteResourceLite( &pDirNode->NonPaged->Lock);
pObjectInfoCB,
lCount));
- AFSDeleteObjectInfo( &pObjectInfoCB);
+ if ( lCount == 0)
+ {
+
+ AFSDeleteObjectInfo( &pObjectInfoCB);
+ }
}
}
}
AFSGlobalDotDirEntry->ObjectInformation,
lCount));
- AFSDeleteObjectInfo( &AFSGlobalDotDirEntry->ObjectInformation);
+ if ( lCount == 0)
+ {
+
+ AFSDeleteObjectInfo( &AFSGlobalDotDirEntry->ObjectInformation);
+ }
ExDeleteResourceLite( &AFSGlobalDotDirEntry->NonPaged->Lock);
AFSGlobalDotDotDirEntry->ObjectInformation,
lCount));
- AFSDeleteObjectInfo( &AFSGlobalDotDotDirEntry->ObjectInformation);
+ if ( lCount == 0)
+ {
+
+ AFSDeleteObjectInfo( &AFSGlobalDotDotDirEntry->ObjectInformation);
+ }
ExDeleteResourceLite( &AFSGlobalDotDotDirEntry->NonPaged->Lock);
pDirNode->ObjectInformation,
lCount));
- AFSDeleteObjectInfo( &pDirNode->ObjectInformation);
+ if ( lCount == 0)
+ {
+
+ AFSDeleteObjectInfo( &pDirNode->ObjectInformation);
+ }
ExDeleteResourceLite( &pDirNode->NonPaged->Lock);