DIR_CrtTime與mCmdParam.Modify.mFileTime

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è)矛盾的地方,不知道是不是我的理解有誤,能我解釋一下嗎???非常感謝?。?!

前面的是修改文件的創(chuàng)建時(shí)間,后面的是修改文件的屬性,修改時(shí)間以及文件長(zhǎng)度,兩者不矛盾


mCmdParam.Modify.mFileDate = mCmdParam.Modify.mFileTime = 0xFFFF; /* 不修改文件日期和時(shí)間 */ 不太明白?。?! 與上面哪個(gè)時(shí)間有關(guān)呢????


你不用這個(gè)例子試的話,那么你新建的文件是沒有創(chuàng)建時(shí)間的,這個(gè)例子是可以有創(chuàng)建時(shí)間的,可以修改創(chuàng)建時(shí)間,而你提到的這個(gè)是文件的修改時(shí)間,為0XFFFF的時(shí)候是不修改的,這個(gè)和創(chuàng)建時(shí)間的修改是沒什么關(guān)系的


那我的理解是: 如果 // mFileDir -> DIR_WrtTime = MAKE_FILE_TIME( 時(shí), 分, 秒 ); /* 文件修改時(shí)間 */ // mFileDir -> DIR_LstAccDate = MAKE_FILE_DATE( 年, 月, 日 ); /* 最近一次存取操作的日期 */ 這兩行程序沒有被屏蔽掉,而是設(shè)置了修改時(shí)間和最后訪問日期的話, 那么就不能設(shè)置為"0XFFFF",而是將修改時(shí)間和日期填寫進(jìn)去,對(duì)嗎??? 我的理解是這樣的,不知道是否正確??!


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频