下列技術詳細資料可協助您在 Visual Studio 中可靠地實作原始檔控制外掛程式。
記憶體管理問題
在大部分情況下,整合式開發環境 (IDE) 也就是呼叫端,會釋放並配置記憶體。 原始碼控制外掛程式會在呼叫端配置的緩衝區中傳回字串和其他項目。 例外情況會在其發生的特定函式說明中列出。
檔案名稱陣列
傳遞檔案陣列時,不會以連續的檔案名稱陣列形式傳遞。 它會以檔案名稱的指標陣列形式傳遞。 例如,在 SccGet 中,檔案名稱是由參數 lpFileNames 傳遞,其中 lpFileNames 實際上是指向 char **.
lpFileNames[0] 是指向第一個名稱的指標, lpFileNames[1] 是指向第二個名稱的指標,依此類推。
大模型
所有指標都是 32 位,即使在 16 位操作系統上也是如此。
完整路徑
其中檔案名稱或目錄指定為引數,它們必須是完整路徑或 UNC 路徑,而沒有結尾反斜線。 如果這是基礎原始檔控制系統的需求,則原始檔控制外掛程式負責將這些轉譯為相對路徑。
指定已註冊 DLL 的完整路徑
IDE 不再從相對路徑載入 DLL (例如 .\NewProvider.dll)。 必須指定 DLL 的完整路徑 (例如 C:\Providers\NewProvider.dll)。 此需求可防止載入未經授權或模擬的原始檔控制 DLL,以加強 IDE 的安全性。
安裝原始檔控制外掛程式時,檢查是否有現有的 VSSCI 外掛程式
計劃安裝原始檔控制外掛程式的使用者可能已經在電腦上安裝了現有的原始檔控制外掛程式。 您建立之外掛程式的安裝 (安裝) 程式應該判斷相關登錄機碼是否有現有值。 如果已設定這些金鑰,您的安裝程式應該詢問使用者是否要將外掛程式註冊為預設原始檔控制外掛程式,並取代已安裝的外掛程式。
錯誤結果代碼和報告
SCC_OK原始檔控制函式的傳回碼指出所有檔案的作業都已成功。 如果作業失敗,預期會傳回最後遇到的錯誤碼。
報告的規則是,如果 IDE 發生錯誤,IDE 負責報告。 如果原始碼控制系統發生錯誤,則原始碼控制外掛程式負責報告。 例如,IDE 會報告 [ 目前未選取任何檔案 ],而外掛程式會報告 [ 此檔案已簽出 ]。
內容結構
在呼叫 SccInitialize 期間,呼叫端會傳遞 ppvContext 參數,這是 void 的未初始化控制碼。 原始檔控制外掛程式可以忽略此參數,也可以配置任何類型的結構,並將該結構的指標放入傳遞的指標中。 IDE 不瞭解此結構,但會將此結構的指標傳遞至外掛程式中的每個其他呼叫。 這會為外掛程式提供有價值的內容快取資訊,可用來維護在函式呼叫之間持續存在的全域狀態資訊,而不使用全域變數。 外掛程式負責在呼叫 SccUninitialize 時釋放結構。
如果外掛程式在 SCC_CAP_REENTRANT 中設定位 (特別是在參數lpSccCaps中) ,則會使用多個內容結構來追蹤所有開啟的專案。
位元旗標和其他命令選項
針對每個命令,例如 SccGet,IDE 可以指定許多選項來變更命令的行為。
API 支援透過 fOptions 參數由 IDE 設定特定選項。 這些選項會在 特定命令使用的位旗標 中說明,並列出它們所影響的命令。 一般而言,這些是不會提示使用者的選項。
大部分的使用者可設定設定選項都不會以這種方式定義,因為它們在原始檔控制外掛程式之間差異很大。因此,建議的機制是 進階 按鈕。 例如,在「 取得 」對話方塊中,IDE 只會顯示它所理解的資訊,但如果外掛程式有此命令的選項,它也會顯示「 進階 」按鈕。 當使用者按兩下 [ 進階 ] 按鈕時,IDE 會呼叫 SccGetCommandOptions 來啟用原始檔控制外掛程式,以提示使用者輸入資訊,例如位旗標或日期/時間。 外掛程式會在 SccGet 指令期間,透過傳回的結構傳回此資訊。