共用方式為


撰寫並行組件的 DLL

建立您自己的並存元件時,請遵循建立並存元件 指導方針,並根據下列指導方針撰寫元件中使用的任何 DLL:

  • 您的 DLL 應該設計成讓多個版本可以同時和在同一個進程中執行,而不會互相干擾。 例如,許多應用程式裝載多個外掛程式,每個外掛程式都需要不同版本的一個元件。 並存元件的開發人員必須設計和測試,以確保在相同進程中同時執行時,多個元件的版本正常運作。

  • 如果您打算在早於 Windows XP 的系統上提供元件作為共用元件,您必須繼續將這些系統上的元件安裝為單一實例共用元件。 在此情況下,您必須確保元件回溯相容。

  • 在系統上執行多個版本的組件時,評估物件的使用方式。 判斷元件的不同版本是否需要個別的數據結構,例如記憶體對應檔案、命名管道、已註冊的 Windows 訊息和類別、共用記憶體、旗號、Mutex 和硬體驅動程式。 各程序集版本使用的任何數據結構都必須向後相容。 決定可在版本之間使用哪些數據結構,以及哪些數據結構必須是版本專用的。 判斷共享數據結構是否需要個別的同步處理物件,例如號誌和 Mutex。

  • 某些物件,例如窗口類別和 Atom,會針對每個進程唯一命名。 物件,例如視窗類別,應該使用指令檔在每個組件中進行版本控制。 對於 Atoms 之類的物件,除非您打算跨版本共用,否則請使用版本特定的標識碼。 如果您使用版本特定的識別碼,請使用四部分版本控制號碼。

  • 在任何 DLL 中不包含自我註冊程序代碼。 並存元件中的 DLL 無法自我註冊。

  • 使用 #define 語句定義 DLL 中的所有版本特定名稱。 這可讓所有登錄機碼從單一位置進行變更。 當您發行新版本的元件時,只需要變更此 #define 語句。 例如:

    #define MyRegistryKey "MyAssembly1.0.0.0"

  • 將任何非永久性數據儲存在 Temp 目錄中。

  • 請勿將用戶資料放入全域性的地方。 將應用程式數據與用戶數據分開。

  • 將所有共用檔案指派相依於應用程式名稱的檔案版本。

  • 指定所有跨過程使用的訊息和數據結構的版本,以避免非預期的跨過程共用。

  • 您的 DLL 不應依賴可能不存在的版本共用,例如那些未在您的元件不同版本中共用的記憶體區段。

  • 如果您新增的新功能未遵循原始 DLL 的二進位介面相容性合約,您必須指派新的 CLSID、ProgId 和檔名。 將來的並存元件版本需要使用此 CLSID、ProgId 和檔名。 當未並存的 DLL 版本在並存版本上註冊時,這可防止發生衝突。

  • 如果您重複使用相同的 CLSID 或 ProgId,請測試以確保元件回溯相容。

  • 在組件程式碼中初始化並設定組件的預設設定。 請勿在登錄中儲存預設值設定。

  • 將版本指派給所有資料結構。

  • 您的 DLL 應該儲存並行組件的狀態,如 在撰寫並行組件狀態儲存時所述,