成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么 FindFirstFile 會查找短文件名?

開發 前端
由于 API 是一個已經對外公開的調用規范,不可輕易修改,否則會破壞兼容性。為此在最新的操作系統上運行那些老程序,只能最大限度地保留現有 API 的外部接口。同時,通過增加新的 API 來支持操作系統上開發出來的新特性。這就說我們經常說的:對擴展開放,對修改關閉。

?FindFirstFile 函數會嘗試匹配短文件名和長文件名。這可能會產生一些令人驚訝的結果。例如,如果你查找 “*.htm” ,那么它會返回給你文件 “x.html” ,因為它的短文件名是 “X~1.HTM”。 這確實比較令人感到意外。

為什么 FindFirstFile 會匹配短文件名呢?它不應該只匹配長文件名嗎?畢竟,只有舊的 16 位程序才會使用短文件名。

但這就是問題所在:16位程序才會使用短文件名。

通過稱為通用Thunk 的方法,16 位程序可以加載 32 位 DLL 并調用它。Windows 95和Windows NT中的Windows 16位仿真層嚴重依賴通用Thunk,因此他們不必編寫所有內容的兩個版本。相反,16 位版本只是升級到 32 位版本。

但請注意,這意味著 32 位 DLL 將看到文件系統的兩個不同視圖,具體取決于它們是從 16 位進程還是 32 位進程托管的。

“然后讓 FindFirstFile 函數檢查其調用方是誰,并相應地更改其行為”,因為你無法信任返回地址,因此這種方法不會起作用。

即使解決了這個問題,你仍然會遇到跨進程邊界的 16/32 互操作的問題。

例如,假設一個 16 位程序調用 WinExec(”記事本 X~1.HTM”)。32位記事本程序最好打開文件X~1.HTM,即使它是一個短文件名。此外,獲取文件屬性(如上次訪問時間)的常用方法是使用文件名調用 FindFirstFile,因為 WIN32_FIND_DATA 結構將該信息作為查找數據的一部分返回。(注意:GetFileAttributesEx 是更好的選擇,但該功能相對較新。如果 FindFirstFile 函數不適用于短文件名,則上述技巧對于跨 16/32 邊界傳遞的短文件名將失敗。

再舉一個例子,假設 DLL 將文件名保存在進程外部的位置,例如配置文件、注冊表或共享內存塊。如果 16 位程序程序調用此 DLL,它將傳遞短文件名,而如果 32 位程序調用 DLL,它將傳遞長文件名。如果文件系統函數僅返回 32 位程序的長文件名,則在 32 位程序中運行的 DLL 副本將無法讀取在 16 位程序中運行的 DLL 寫入的數據。

總結

由于 API 是一個已經對外公開的調用規范,不可輕易修改,否則會破壞兼容性。為此在最新的操作系統上運行那些老程序,只能最大限度地保留現有 API 的外部接口。同時,通過增加新的 API 來支持操作系統上開發出來的新特性。這就說我們經常說的:對擴展開放,對修改關閉。

所以,”先知性” 是在規劃高層設計的一項特殊能力。?

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2009-06-29 09:57:05

Unix

2012-12-24 15:00:56

sis塞班

2012-03-26 10:26:43

openstackeucalyptus

2012-05-02 10:08:51

桌面Linux微軟

2012-08-17 10:01:07

云計算

2021-07-09 09:24:06

NanoID UUID軟件開發

2020-03-30 15:05:46

Kafka消息數據

2021-01-25 07:14:53

Cloud DevOps云計算

2022-04-13 20:53:15

Spring事務管理

2023-03-22 09:10:18

IT文檔語言

2014-03-05 14:58:00

蘋果CarPlayiOS

2015-12-07 10:49:43

卸載App用戶體驗

2022-05-11 08:22:54

IO負載NFSOS

2010-01-14 10:07:08

VB.NET文件名排序

2021-03-16 12:42:42

FreeDOS開源

2009-03-11 09:28:18

文件名亂碼下載瀏覽器PHP

2009-10-24 10:38:34

2009-11-02 11:13:06

VB.NET讀寫文件

2012-10-09 16:37:20

FastDFS

2020-04-25 20:20:28

蘋果庫克手機
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩在线一区二区三区 | 午夜专区 | 欧美久久久久久久 | 视频一区二区三区四区五区 | 成人午夜影院 | 久久久xx | h视频在线免费观看 | av资源中文在线 | 99精品99| xx性欧美肥妇精品久久久久久 | 久久久久久久久久一区 | 亚洲精品日韩在线 | 一区2区| 国产一区二区影院 | 亚洲一区二区在线视频 | 成人免费视频在线观看 | 玩丰满女领导对白露脸hd | 国产精品久久久久久久三级 | 久久精品免费观看 | 国产在线成人 | 中文字幕亚洲专区 | 狠狠干2020| 久久久成人免费视频 | 亚洲欧美精品在线观看 | 亚洲一二视频 | 在线欧美激情 | 一区二区在线免费观看 | 亚洲国产精品久久久 | 国产精品揄拍一区二区久久国内亚洲精 | 羞羞的视频免费在线观看 | 精精国产xxxx视频在线播放7 | 色又黄又爽网站www久久 | 中文字幕视频一区二区 | 久久亚洲欧美日韩精品专区 | 精品视频免费 | 本道综合精品 | 成人妇女免费播放久久久 | 一区二区三区国产精品 | 福利视频三区 | 天天操天天插 | 日韩一区在线播放 |