資源描述:
《處理windows 95的長文件名中斷詳解》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、處理Windows95的長文件名中斷詳解處理Windows95的長文件名中斷詳解GoldEagle很多朋友在DOS環(huán)境下寫過程序,而且有許多和文件處理有關(guān)。眾所周知,DOS下的文件名為8.3的格式,而Windows95開始使用長文件名格式,以前的DOS下的程序只能按8.3格式來處理這些長文件名,讀取文件或目錄名時還好,最多只是看起來有些不順眼(都變成PROGRA~1、MYPROD~3.EXE這樣的文件名了),要創(chuàng)建新的目錄和文件時就麻煩了,因為以前的DOS下的開發(fā)環(huán)境(如TubroC2.0,BorlandC++3.1,TurboPascal等)沒有處理長文件名的函數(shù),所有的長文件
2、名在以前的函數(shù)中都被截尾處理了。找了一些資料,發(fā)現(xiàn)Windows95提供了處理長文件名的中斷,翻譯并整理成文,希望對大家有點幫助。本文介紹的所有功能都是通過INT21H來調(diào)用的。Windows95是通過21H號中斷的71H子中斷來處理長文件名的,列表如下:AL值功能===============================================0DH重置驅(qū)動器39H創(chuàng)建子目錄3AH刪除子目錄3BH改變當前目錄41H刪除文件43H讀取/設(shè)置文件屬性47H得到當前目錄4EH查找第一個符合條件的文件(findfirst)4FH查找下一個符合條件的文件(findnext)5
3、6H移動(改名)文件60HTRUENAME6CH創(chuàng)建/打開文件A0H讀取卷信息A1H結(jié)束文件查找(findfirst/findnext)A6H讀取文件信息A7H時間轉(zhuǎn)換A8H產(chǎn)生短文件名(8.3格式)A9H服務(wù)器創(chuàng)建/打開文件AAH開始/結(jié)束SUBST中斷調(diào)用后CF置位表示出錯(AX存儲出錯代碼),CF清零表示成功說明:如果返回出錯代碼7100H,說明不支持此功能,將調(diào)用老式的中斷為與老版本DOS兼容(7.0以前),在調(diào)用前先將CF置位以確認在退出時它被置位另外還有幾個功能是未公開的:AL=A2H,A3H,A4H,A5H,其中AL=A2H的功能已知,與AL=4FH功能類似,這幾個
4、功能是Windows內(nèi)部使用的,在本文就不介紹了。一、重置驅(qū)動器入口:AX=710DHCX=0000H將文件系統(tǒng)緩沖區(qū)(buffer)實際寫盤,并重置驅(qū)動器0001H將文件系統(tǒng)緩沖區(qū)(buffer)和緩存(cache)實際寫盤,并重置驅(qū)動器0002H重新掛接DriveSpace卷DX=驅(qū)動器號(00H=A:,01H=B:,等等)出口:CF清零對應(yīng)老式的調(diào)用:AH=0DH二、創(chuàng)建子目錄入口:AX=7139HDS:DX->長目錄名(ASCIZ串)出口:中斷調(diào)用后CF置位表示出錯(AX存儲出錯代碼),CF清零表示成功對應(yīng)老式的調(diào)用:AH=39H三、刪除子目錄入口:AX=713AHDS:
5、DX->要刪除的長目錄名(ASCIZ串)出口:中斷調(diào)用后CF置位表示出錯(AX存儲出錯代碼),CF清零表示成功對應(yīng)老式的調(diào)用:AH=3AH四、改變當前目錄入口:AX=713BHDS:DX->要設(shè)為當前目錄的長目錄名(ASCIZ串)出口:中斷調(diào)用后CF置位表示出錯(AX存儲出錯代碼),CF清零表示成功對應(yīng)老式的調(diào)用:AH=3BH五、刪除文件入口:AX=7141HDS:DX->要刪除的文件的長文件名(ASCIZ串)SI=通配符和屬性標志0000H不支持通配符,搜索屬性也被忽略0001H支持通配符,只有名字和屬性匹配的才刪除CL=搜索屬性CH=必匹配(must-match)屬性出口:中
6、斷調(diào)用后CF置位表示出錯(AX存儲出錯代碼),CF清零表示成功對應(yīng)老式的調(diào)用:AH=41H六、讀取/設(shè)置文件屬性入口:AX=7143HDS:DX->文件名(ASCIZ串)BL=00H讀取屬性返回:CX=文件屬性01H設(shè)置屬性CX=文件屬性02H讀取壓縮文件的物理大小返回:DX:AX=文件的實際使用磁盤空間字節(jié)數(shù)03H設(shè)置最后寫入日期/時間DI=新的最后寫入日期CX=新的最后寫入時間04H讀取最后寫入日期/時間返回:DI=最后寫入日期CX=最后寫入時間05H設(shè)置最后訪問日期DI=新的最后訪問日期06H讀取最后訪問日期返回:DI=最后訪問日期07H設(shè)置創(chuàng)建日期/時間DI=新的創(chuàng)建日期
7、CX=新的創(chuàng)建時間SI=百分秒數(shù)08h讀取創(chuàng)建日期/時間返回:DI=創(chuàng)建日期CX=創(chuàng)建時間SI=百分秒數(shù)出口:中斷調(diào)用后CF置位表示出錯(AX存儲出錯代碼),CF清零表示成功成功時返回值請參看本小節(jié)的“入口”部分對應(yīng)老式的調(diào)用:AH=43H請參考:附一、附二、附三七、得到當前目錄入口:AX=7147HDL=驅(qū)動器號(00H=當前驅(qū)動器,01H=A:,等等)DS:SI->用于存儲目錄名(ASCIZ串)的內(nèi)存區(qū)出口:中斷調(diào)用后CF置位表示出錯(AX存儲出錯代碼),CF清零表示成功目錄