ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

static NTSTATUS NtfsOpenFile ( PDEVICE_EXTENSION  DeviceExt,
PFILE_OBJECT  FileObject,
PWSTR  FileName 
) [static]

Definition at line 78 of file create.c.

Referenced by NtfsCreateFile().

{
  PNTFS_FCB ParentFcb;
  PNTFS_FCB Fcb;
  NTSTATUS Status;
  PWSTR AbsFileName = NULL;

  DPRINT("NtfsOpenFile(%p, %p, %S)\n", DeviceExt, FileObject, FileName);

  if (FileObject->RelatedFileObject)
    {
      DPRINT("Converting relative filename to absolute filename\n");

      Status = NtfsMakeAbsoluteFilename(FileObject->RelatedFileObject,
                    FileName,
                    &AbsFileName);
      FileName = AbsFileName;
      if (!NT_SUCCESS(Status))
    {
      return(Status);
    }
      return(STATUS_UNSUCCESSFUL);
    }

  //FIXME: Get cannonical path name (remove .'s, ..'s and extra separators)

  DPRINT("PathName to open: %S\n", FileName);

  /*  try first to find an existing FCB in memory  */
  DPRINT("Checking for existing FCB in memory\n");
  Fcb = NtfsGrabFCBFromTable(DeviceExt,
                 FileName);
  if (Fcb == NULL)
    {
      DPRINT("No existing FCB found, making a new one if file exists.\n");
      Status = NtfsGetFCBForFile(DeviceExt,
                 &ParentFcb,
                 &Fcb,
                 FileName);
      if (ParentFcb != NULL)
    {
      NtfsReleaseFCB(DeviceExt,
             ParentFcb);
    }

      if (!NT_SUCCESS (Status))
    {
      DPRINT("Could not make a new FCB, status: %x\n", Status);

      if (AbsFileName)
        ExFreePool(AbsFileName);

      return(Status);
    }
    }

  DPRINT("Attaching FCB to fileObject\n");
  Status = NtfsAttachFCBToFileObject(DeviceExt,
                     Fcb,
                     FileObject);

  if (AbsFileName)
    ExFreePool (AbsFileName);

  return(Status);
}

Generated on Sun May 27 2012 04:41:21 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.