}
NTSTATUS
-AFSOpenRedirector( IN PIRP Irp,
- IN AFSFcb **Fcb,
- IN AFSCcb **Ccb)
-{
-
- NTSTATUS ntStatus = STATUS_SUCCESS;
- LONG lCount;
-
- __Enter
- {
-
- //
- // Initialize the Ccb for the file.
- //
-
- ntStatus = AFSInitCcb( Ccb);
-
- if( !NT_SUCCESS( ntStatus))
- {
-
- AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
- AFS_TRACE_LEVEL_ERROR,
- "AFSOpenRedirector (%08lX) Failed to allocate Ccb\n",
- Irp);
-
- try_return( ntStatus);
- }
-
- //
- // Setup the Ccb
- //
-
- (*Ccb)->DirectoryCB = AFSRedirectorRoot->DirectoryCB;
-
- //
- // Increment the open count on this Fcb
- //
-
- lCount = InterlockedIncrement( &AFSRedirectorRoot->RootFcb->OpenReferenceCount);
-
- AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
- AFS_TRACE_LEVEL_VERBOSE,
- "AFSOpenRedirector Increment count on Fcb %08lX Cnt %d\n",
- AFSRedirectorRoot->RootFcb,
- lCount);
-
- lCount = InterlockedIncrement( &AFSRedirectorRoot->RootFcb->OpenHandleCount);
-
- AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
- AFS_TRACE_LEVEL_VERBOSE,
- "AFSOpenRedirector Increment handle count on Fcb %08lX Cnt %d\n",
- AFSRedirectorRoot->RootFcb,
- lCount);
-
- *Fcb = AFSRedirectorRoot->RootFcb;
-
- lCount = InterlockedIncrement( &(*Ccb)->DirectoryCB->OpenReferenceCount);
-
- //
- // Return the open result for this file
- //
-
- Irp->IoStatus.Information = FILE_OPENED;
-
-try_exit:
-
- NOTHING;
- }
-
- return ntStatus;
-}
-
-NTSTATUS
AFSOpenAFSRoot( IN PIRP Irp,
IN AFSFcb **Fcb,
IN AFSCcb **Ccb)