// Be sure we have an Fcb for the current object
//
- if( pObjectInfo->Fcb == NULL)
- {
+ ntStatus = AFSInitFcb( DirectoryCB);
- ntStatus = AFSInitFcb( DirectoryCB);
+ if( !NT_SUCCESS( ntStatus))
+ {
- if( !NT_SUCCESS( ntStatus))
- {
+ AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
+ AFS_TRACE_LEVEL_ERROR,
+ "AFSProcessOpen (%08lX) Failed to init fcb on %wZ Status %08lX\n",
+ Irp,
+ &DirectoryCB->NameInformation.FileName,
+ ntStatus);
- AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
- AFS_TRACE_LEVEL_ERROR,
- "AFSProcessOpen (%08lX) Failed to init fcb on %wZ Status %08lX\n",
- Irp,
- &DirectoryCB->NameInformation.FileName,
- ntStatus);
+ try_return( ntStatus);
+ }
- try_return( ntStatus);
- }
+ if ( ntStatus != STATUS_REPARSE)
+ {
- if ( ntStatus != STATUS_REPARSE)
- {
+ bAllocatedFcb = TRUE;
+ }
- bAllocatedFcb = TRUE;
- }
+ ntStatus = STATUS_SUCCESS;
- ntStatus = STATUS_SUCCESS;
- }
- else
- {
+ //
+ // AFSInitFcb returns the Fcb resource held
+ //
- AFSAcquireExcl( pObjectInfo->Fcb->Header.Resource,
- TRUE);
- }
+ bReleaseFcb = TRUE;
//
// Increment the open count on this Fcb
pObjectInfo->Fcb,
lCount);
- bReleaseFcb = TRUE;
-
//
// Check access on the entry
//
if ( pCurrentObject->ObjectReferenceCount <= 0)
{
- if( pCurrentObject->Fcb != NULL)
- {
-
- AFSRemoveFcb( &pCurrentObject->Fcb);
- }
+ AFSRemoveFcb( &pCurrentObject->Fcb);
if( pCurrentObject->Specific.Directory.PIOCtlDirectoryCB != NULL)
{
- if( pCurrentObject->Specific.Directory.PIOCtlDirectoryCB->ObjectInformation->Fcb != NULL)
- {
-
- AFSRemoveFcb( &pCurrentObject->Specific.Directory.PIOCtlDirectoryCB->ObjectInformation->Fcb);
- }
+ AFSRemoveFcb( &pCurrentObject->Specific.Directory.PIOCtlDirectoryCB->ObjectInformation->Fcb);
AFSDeleteObjectInfo( pCurrentObject->Specific.Directory.PIOCtlDirectoryCB->ObjectInformation);
pCurrentChildObject->Fcb->Specific.File.ExtentCount == 0))
{
- if( pCurrentChildObject->Fcb != NULL)
- {
-
- AFSRemoveFcb( &pCurrentChildObject->Fcb);
- }
+ AFSRemoveFcb( &pCurrentChildObject->Fcb);
if( pCurrentChildObject->FileType == AFS_FILE_TYPE_DIRECTORY &&
pCurrentChildObject->Specific.Directory.PIOCtlDirectoryCB != NULL)
{
- if( pCurrentChildObject->Specific.Directory.PIOCtlDirectoryCB->ObjectInformation->Fcb != NULL)
- {
-
- AFSRemoveFcb( &pCurrentChildObject->Specific.Directory.PIOCtlDirectoryCB->ObjectInformation->Fcb);
- }
+ AFSRemoveFcb( &pCurrentChildObject->Specific.Directory.PIOCtlDirectoryCB->ObjectInformation->Fcb);
AFSDeleteObjectInfo( pCurrentChildObject->Specific.Directory.PIOCtlDirectoryCB->ObjectInformation);
pCurrentObject->Fcb->Specific.File.ExtentCount == 0))
{
- if( pCurrentObject->Fcb != NULL)
- {
-
- AFSRemoveFcb( &pCurrentObject->Fcb);
- }
+ AFSRemoveFcb( &pCurrentObject->Fcb);
AFSDeleteObjectInfo( pCurrentObject);
}