文章編號: 68827 - 上次校閱: 2003年10月30日 - 版次: 2.0

更新快取的私用設定檔 (.INI 檔案)

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
全部展開 | 全部摺疊

結論

下 Windows 3.1 版,存取私用設定檔 (.INI 檔) 的第一次系統將呼叫 GetFileTime() API,並儲存此值。 WriteProfileString() API 再將呼叫 GetFileTime() API,並比較傳回值至已儲存的值。如果兩個值相符,檔案會被視為有效兩秒鐘。函式,進行變更,並將新的內容寫入磁碟。如果兩個值不相符,設定檔重新讀取至緩衝區,並做變更。相同的原則會保留,則對於從私用設定檔讀取值為 True。

兩個第二個限制背後是大部分的應用程式讀取應用程式啟動時將連拍的私用設定檔,而且在應用程式關閉一個高載中撰寫。二十個讀取序列中的一個讀取懲罰被視為可接受,給定好處。

在 Windows 3.0 版,有私用設定檔的應用程式將不會回應對該私用設定檔的文字編輯器所做的變更。當文字編輯器更新私用設定檔時,磁碟上的檔案是修改過。 不過,GetPrivateProfileString() GetPrivateProfileInt() 做不讀取和從磁碟的檔案而該函式從讀取在快取區中檔案的複本。WritePrivateProfileString() 會更新快取的檔案和磁碟檔案中適當的區段,請重新不過,函式將不載入磁碟檔案到快取除非整個快取失效。 下面所包含的資訊將告訴您,如何強制私用的設定檔至 recached 從磁碟檔案。

其他相關資訊

Windows 會快取來減少存取時間的.INI 檔。此設計可讓您留在記憶體中,直到載入不同的.INI 檔,或直到應用程式會強制 recaching 檔案的檔案。

若要強制.INI 檔來進行 recached,請下列呼叫 (其中 <fname.ini> 是應用程式的私用設定檔的名稱):
   WritePrivateProfileString(NULL, NULL, NULL, <fname.ini>)
				
這個呼叫會強制快取失效中將整個.INI 檔案。下一個呼叫 GetPrivateProfileString()] 或 [GetPrivateProfileInt() 會導致磁碟檔案被 recached。

雖然.INI 檔案的快取最佳化存取時間,以下是範例的時機與方式可能 recached.INI 檔。

  1. 每次應用程式需要從設定檔的資訊時,應用程式可能更新從磁碟快取。呼叫 WritePrivateProfileString 函式上面所述,會清除快取。

    注意: 由於檔案 recached 以每個存取,快取的好處是遺失用這種方法。
  2. 建立個別的程式或使用者會叫用來明確地確認快取的函數。下列是一些程式碼可以放入泛用的範例應用程式提供 Windows 軟體開發套件 (SDK) 與該目的:
       BOOL InitInstance(HANDLE hInstance, int nCmdShow)
       {
          LPSTR lpApplicationName, lpKeyName, lpDefault, lpReturnedString;
    
          int   nSize;
    
          /* initialize variables */ 
          ...
    
          WritePrivateProfileString(NULL, NULL, NULL, "MY.INI");
          GetPrivateProfileString(lpApplicationName, lpKeyName,
             lpDefault, lpReturnedString, nSize, "MY1.INI");
          MessageBox(NULL, "Cache Refreshed", szApp,
             MB_ICONINFORMATION | MB_OK);
          return TRUE;
       }
    						
    使用程式或像這樣的函式將會導致要僅當它變更時由一個編輯器因此快取的好處保留 recached.INI 檔。不過,就必須要呼叫另一個應用程式或函式編輯器與變更設定檔之後使用者。
  3. 如果這些技術都不適合,應用程式可以檢查之前,看看是否有必要快取失效的每個存取.INI 檔案上的時間和日期戳記。這個選項會提供快取的優點,而不需要使用者呼叫另一個程式。相比,recaching GetPrivateProfileString 或 GetPrivateProfileInt 函式每次呼叫具有檔案讀取時間和日期戳記所需的額外負荷器最少。

這篇文章中的資訊適用於:
  • Microsoft Windows Software Development Kit 3.0
  • Microsoft Windows Software Development Kit 3.1
關鍵字:?
kbmt kb16bitonly KB68827 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:68827? (http://support.microsoft.com/kb/68827/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
Retired KB Article依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。