UINT8 SetFileCreateTime( UINT16 iCreateDate, UINT16 iCreateTime ) { UINT8 i; P_FAT_DIR_INFO mFileDir; i = CH375FileOpen( ); /* 打開文件 */ if ( i == ERR_SUCCESS ) { /* 文件讀寫操作等... */ i = CH375FileQuery( ); /* 查詢文件屬性,以便將相關(guān)數(shù)據(jù)調(diào)到內(nèi)存中再修改 */ if ( i == ERR_SUCCESS ) { mFileDir = (P_FAT_DIR_INFO)( (PUINT8X)(&DISK_BASE_BUF[0]) + CH375vFdtOffset ); /* 在內(nèi)存中,當(dāng)前FDT的起始地址 */ // mFileDir -> DIR_CrtTime = iCreateTime; /* 文件創(chuàng)建的時(shí)間,適用于小端格式 */ mFileDir -> DIR_CrtTime = SwapUINT16( iCreateTime ); /* MCS51單片機(jī)是大端格式 */ // mFileDir -> DIR_CrtDate = iCreateDate; /* 文件創(chuàng)建的日期,適用于小端格式 */ mFileDir -> DIR_CrtDate = SwapUINT16( iCreateDate ); /* MCS51單片機(jī)是大端格式 */
// mFileDir -> DIR_WrtTime = MAKE_FILE_TIME( 時(shí), 分, 秒 ); /* 文件修改時(shí)間 */ // mFileDir -> DIR_LstAccDate = MAKE_FILE_DATE( 年, 月, 日 ); /* 最近一次存取操作的日期 */
/* 以下將修改過的內(nèi)容從內(nèi)存中真正刷新到U盤中 */ mCmdParam.Modify.mFileAttr = mFileDir -> DIR_Attr; /* 準(zhǔn)備假修改文件屬性,實(shí)際保持原值 */ mCmdParam.Modify.mFileDate = mCmdParam.Modify.mFileTime = 0xFFFF; /* 不修改文件日期和時(shí)間 */ mCmdParam.Modify.mFileSize = 0xFFFFFFFF; /* 不修改文件長(zhǎng)度 */ i = CH375FileModify( ); /* 實(shí)際是將內(nèi)存中剛剛修改過的文件名保存 */ if ( i == ERR_SUCCESS ) { /* 文件讀寫操作等... */ mCmdParam.Close.mUpdateLen = 0; i = CH375FileClose( ); /* 關(guān)閉文件 */ } } } return( i ); }
在這個(gè)函數(shù)里面,有個(gè)地方我始終都沒有理解. 問題是這樣的: 在前面: // mFileDir -> DIR_CrtTime = iCreateTime; /* 文件創(chuàng)建的時(shí)間,適用于小端格式 */ mFileDir -> DIR_CrtTime = SwapUINT16( iCreateTime ); /* MCS51單片機(jī)是大端格式 */ // mFileDir -> DIR_CrtDate = iCreateDate; /* 文件創(chuàng)建的日期,適用于小端格式 */ mFileDir -> DIR_CrtDate = SwapUINT16( iCreateDate ); /* MCS51單片機(jī)是大端格式 */
這一段修改了創(chuàng)建時(shí)間和日期,而后面又是: mCmdParam.Modify.mFileAttr = mFileDir -> DIR_Attr; /* 準(zhǔn)備假修改文件屬性,實(shí)際保持原值 */ mCmdParam.Modify.mFileDate = mCmdParam.Modify.mFileTime = 0xFFFF; /* 不修改文件日期和時(shí)間 */ mCmdParam.Modify.mFileSize = 0xFFFFFFFF; /* 不修改文件長(zhǎng)度 */
這個(gè)應(yīng)該是不修改時(shí)間和日期函數(shù). 我總覺得這兩個(gè)是一個(gè)矛盾的地方,不知道是不是我的理解有誤,能我解釋一下嗎???非常感謝?。?!