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

FF_ERROR FF_PutEntry ( FF_IOMAN pIoman,
FF_T_UINT16  Entry,
FF_T_UINT32  DirCluster,
FF_DIRENT pDirent 
)

Definition at line 1759 of file ff_dir.c.

Referenced by FF_Close(), and FF_ExtendFile().

                                                                                                      {
    FF_BUFFER *pBuffer;
    FF_ERROR    Error;
    FF_T_UINT32 itemLBA;
    FF_T_UINT32 clusterNum      = FF_getClusterChainNumber  (pIoman, Entry, (FF_T_UINT16)32);
    FF_T_UINT32 relItem         = FF_getMinorBlockEntry     (pIoman, Entry, (FF_T_UINT16)32);
    FF_T_UINT32 clusterAddress  = FF_TraverseFAT(pIoman, DirCluster, clusterNum, &Error);

    if(Error) {
        return Error;
    }

    itemLBA = FF_Cluster2LBA(pIoman, clusterAddress)    + FF_getMajorBlockNumber(pIoman, Entry, (FF_T_UINT16)32);
    itemLBA = FF_getRealLBA (pIoman, itemLBA)           + FF_getMinorBlockNumber(pIoman, relItem, (FF_T_UINT16)32);
    
    pBuffer = FF_GetBuffer(pIoman, itemLBA, FF_MODE_WRITE);
    {
        if(!pBuffer) {
            return FF_ERR_DEVICE_DRIVER_FAILED;
        }
        // Modify the Entry!
        //memcpy((pBuffer->pBuffer + (32*relItem)), pDirent->FileName, 11);
        relItem *= 32;
        FF_putChar(pBuffer->pBuffer, (FF_T_UINT16)(FF_FAT_DIRENT_ATTRIB + relItem), pDirent->Attrib);
        FF_putShort(pBuffer->pBuffer, (FF_T_UINT16)(FF_FAT_DIRENT_CLUS_HIGH + relItem), (FF_T_UINT16)(pDirent->ObjectCluster >> 16));
        FF_putShort(pBuffer->pBuffer, (FF_T_UINT16)(FF_FAT_DIRENT_CLUS_LOW  + relItem), (FF_T_UINT16)(pDirent->ObjectCluster));
        FF_putLong(pBuffer->pBuffer,  (FF_T_UINT16)(FF_FAT_DIRENT_FILESIZE  + relItem), pDirent->Filesize);
#ifdef FF_TIME_SUPPORT
    FF_PlaceDate((pBuffer->pBuffer + relItem), FF_FAT_DIRENT_LASTACC_DATE); // Last accessed date.
#endif
    }
    FF_ReleaseBuffer(pIoman, pBuffer);
 
    return 0;
}

Generated on Mon May 28 2012 05:57:22 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.