FileNameBuffer[ FileCount ].DirStartClust = CurrentDirStartClust; /* 記錄當(dāng)前目錄的起始簇號,用于加快文件打開速度 */
RT,如何獲取??! 先謝謝各位了。
FileNameBuffer[ FileCount ].DirStartClust = CurrentDirStartClust; /* 記錄當(dāng)前目錄的起始簇號,用于加快文件打開速度 */
RT,如何獲取??! 先謝謝各位了。
這個簇號一般是通過打開文件的時候獲取,你使用的是哪款芯片?需要根據(jù)你的實際應(yīng)用才能給你解釋。
用的是CH376。問題是,在多級目錄下的文件的短文件名已經(jīng)知道(但是絕對路徑不知道)。而且該文件當(dāng)前處于打開狀態(tài)。我能否通過某種方式得到該文件的長文件名?于是我提出了上面的那個問題。
望賜教。
問題也可以轉(zhuǎn)化為:,在多級目錄下的文件的短文件名已經(jīng)知道(但是絕對路徑不知道)。而且該文件當(dāng)前處于打開狀態(tài)。這種情況下我能否獲取到該文件絕對路徑,進(jìn)而獲取該文件的長文件名?如果該方法不行,還有其他方法獲取到長文件名嗎?
需要完整的路徑才能獲取長文件名,或者你可以去修改CH376GetLongName函數(shù)里面打開文件部分獲取目錄屬性程序應(yīng)該是可以通過相對路徑來獲取的。
真的可以嗎?有人實現(xiàn)過嗎?我也在嘗試修改CH376GetLongName函數(shù),但是比較難!
修改CH376GetLongName里面打開文件那個,其他不需要修改的。
謝謝hcn的回應(yīng),給我很大的幫助。 我看了CH376GetLongName函數(shù)后發(fā)現(xiàn)有兩處要修改的: 1: s = CH376FileOpenPath( PathName ); /* 打開多級目錄下的文件或者目錄 */ 2: if ( GlobalBuf[33] == 0 ) { /* 當(dāng)前的文件目錄信息扇區(qū)處理結(jié)束,轉(zhuǎn)到前一個扇區(qū) */ s = CH376LocateInUpDir( PathName ); /* 在上級目錄中移動文件指針到當(dāng)前 文件目錄信息所在的扇區(qū) */ if ( s != USB_INT_SUCCESS ) break; if ( CH376ReadVar32( VAR_CURRENT_OFFSET ) == 0 ) { /* 當(dāng)前已經(jīng)處于目錄扇區(qū)的開始,無法獲取長文件名 */ s = ERR_LONG_NAME_ERR; break; } GlobalBuf[33] = DEF_SECTOR_SIZE / sizeof( FAT_DIR_INFO ); /* 指向前一個扇區(qū)的最后一個文件目錄信息 */ } GlobalBuf[33] --; /* 從后向前搜索文件目錄信息 */
其中第一處很容易修改,因為文件本身已經(jīng)打開了,所以1處完成。 但是第二處修改涉及到該函數(shù)的調(diào)用: s = CH376LocateInUpDir( PathName );
這個函數(shù)牽扯到上一級目錄的處理,很是復(fù)雜。 我在想這個函數(shù)會否不能修改了(在我所描述的情況里)。 hcn兄有經(jīng)驗嗎?