配置檔管理功能
配置檔管理功能
下列 API 函式在設定檔管理中很有用。
功能 | 描述 |
---|---|
AssociateColorProfileWithDeviceW | 將指定的色彩配置檔與指定的裝置產生關聯。 |
[CreateProfileFromLogColorSpaceW]((/windows/win32/api/icm/nf-icm-createprofilefromlogcolorspacew) | 將邏輯 色彩空間 轉換為 裝置設定檔。 |
DisassociateColorProfileFromDeviceW | 將指定的色彩配置檔與指定計算機上的指定裝置解除關聯。 |
EnumColorProfilesW | 列舉滿足指定列舉準則的所有配置檔。 |
GetColorDirectoryW | 擷取指定電腦上的 Windows COLOR 目錄路徑。 |
GetDeviceGammaRamp | 從直接色彩顯示板取得伽瑪坡度。 |
GetStandardColorSpaceProfileW | 擷取為指定標準 色彩空間註冊的色彩配置檔,。 |
InstallColorProfileW | 安裝指定的設定檔,以在指定的計算機上使用。 配置檔也會複製到 COLOR 目錄。 |
RegisterCMMW | 將指定的識別值與指定的色彩管理模組動態連結庫 (CMM DLL) 產生關聯。 當此標識碼出現在色彩配置檔中時,Windows 就可以找到對應的 CMM,以便建立轉換。 |
SetDeviceGammaRamp | 設定直接色彩顯示面板上的伽瑪坡形。 |
SetStandardColorSpaceProfileW | 為指定的標準 色彩空間註冊指定的設定檔,。 您可以使用 getStandardColorSpaceProfileW 來查詢配置檔。 |
UninstallColorProfileW | 從指定的電腦移除指定的色彩配置檔。 相關聯的檔案會選擇性地從系統刪除。 |
UnregisterCMMW | 將指定的識別碼值與指定的色彩管理模組動態連結庫 (CMM DLL) 解除關聯。 |
WcsAssociateColorProfileWithDevice | 將指定的 WCS 色彩設定檔與指定的裝置產生關聯。 |
WcsCreateIccProfile | 將 WCS 設定檔轉換成 ICC 設定檔。 |
WcsDisassociateColorProfileFromDevice | 將指定的 WCS 色彩設定檔與指定電腦上的指定裝置解除關聯。 |
WcsEnumColorProfiles | 列舉符合指定之配置檔管理範圍中列舉準則的所有色彩配置檔。 |
WcsEnumColorProfilesSize | 傳回 WcsEnumColorProfiles 函式列舉色彩配置檔所需的緩衝區大小,以位元組為單位。 |
WcsGetDefaultColorProfile | 擷取裝置的預設色彩配置檔,如果未指定裝置,則擷取與裝置無關的預設值。 |
WcsGetDefaultColorProfileSize | 傳回裝置的預設色彩配置檔名稱大小,包括 NULL 終止符。 |
WcsGetDefaultRenderingIntent | 擷取指定之配置檔管理範圍中的預設轉譯意圖。 |
WcsGetUsePerUserProfiles | 判斷使用者是否選擇針對指定的裝置使用個別使用者配置檔關聯清單。 |
WcsOpenColorProfileW | 建立指定之色彩配置檔的句柄。 |
WcsSetDefaultColorProfile | 在指定的設定檔管理範圍中,設定指定設定檔類型的預設色彩配置檔名稱。 |
WcsSetDefaultRenderingIntent | 在指定的配置檔管理範圍中設定預設轉譯意圖。 |
WcsSetUsePerUserProfiles | 允許使用者指定是否要使用指定裝置的個別使用者配置檔關聯清單。 |
配置檔取用函式
配置檔耗用量 API 是 ICM2 中的 API,採用 ICC 或 WCS XML 設定檔、設定檔句柄或轉譯意圖做為參數,以及一組適用於應用程式色彩管理程式碼之 WCS 設定檔支援的新 API。
配置檔和配置檔管理功能
配置檔管理工作流程是以現有的ICM2 API為基礎,這些API已增強以提供其他功能來修訂應用程式程序代碼。
配置檔包含色彩處理演算法用來在不同色彩空間之間轉譯色彩的資訊。 配置檔管理提供一種方式來查詢及指定色彩處理模型在不同階段使用的配置檔,以管理具有不同色彩特性的各種周邊裝置的色彩輸出。
設定檔案管理提供下列一組功能:
- 安裝色彩配置檔以在系統中使用。
- 將一或多個已安裝的色彩配置檔與任何特定裝置產生關聯。
- 在可用於特定色彩處理階段的配置檔中,選擇特定類型的預設色彩配置檔。 這可能適用於與它相關聯的配置檔中的裝置,或安裝在系統中的配置檔,而不是裝置特定。
- 列舉符合系統中所安裝之配置檔中特定準則的色彩配置檔。
WCS 配置檔擴展名是 DMP 的 “.cdmp”、CAMP 的 “.camp” 和 GMMP 的 “.gmmp”。
個別使用者配置檔管理和在 LUA 內容中啟用執行
目前檔所述之設計的目標如下:
- 舊版ICM2實作不支援個別使用者配置檔管理。 不同的使用者不能有自己的配置檔設定。 在 Vista 中,WCS 設定檔管理基礎結構可讓使用者設定大部分功能的個別配置檔設定。
- 所有舊版 ICM2 配置檔管理 API 都會修改全系統設定,而且需要系統管理許可權。 在 Windows Vista 中,所有使用者大部分時間都在最低許可權用戶帳戶 (LUA) 設定中執行,而系統管理員可以選擇性地提高許可權來執行修改全系統設定的應用程式。 在 WCS 設定檔管理中,所有個別使用者設定檔設定都可以在 LUA 內容中設定。 配置檔管理應用程式可以執行為 LUA 設定、增加其使用範圍,並確保系統的安全性不會遭到入侵。
Vista 中的設定檔管理提供下列舊版 ICM2 基礎結構的增強功能:
- 它會啟用與裝置的配置檔關聯、預設配置檔設定,以及個別使用者和全系統範圍的配置檔列舉。
- 安裝配置檔會維持系統範圍,而且需要系統管理員許可權。 這與裝置安裝期間的配置檔安裝一致,因為裝置安裝全系統且需要系統管理許可權。
是否可以從 LUA 內容安裝裝置,特別是該裝置類別所支持的內容。 例如,在 Vista 中,如果使用者已獲得使用驅動程式存放區原則將檔案複製到驅動程式存放區的許可權,就可以從 LUA 內容執行印表機安裝。 色彩配置檔管理基礎結構不需要對此採取任何特殊動作,因為安裝發生在多任務緩衝處理器內容中。
- 您可以在 LUA 內容中修改每個使用者範圍的設定檔設定;全系統修改需要系統管理許可權。 需要讀取組態資訊的配置檔管理作業可以在 LUA 內容中針對每個使用者和全系統設定完成。
配置檔管理範圍指出執行的作業範圍;每一使用者或全系統。
針對每個作業,會指出是否可以從 LUA 內容完成。 如果無法在 LUA 內容中執行作業,對應的設定檔管理 API 會傳回失敗並拒絕存取。 使用 API 的應用程式,例如色彩管理控制面板,可讓使用者提升至系統管理內容(使用 OTS 或同意 UI),然後從提升許可權的內容呼叫 API,讓作業成功。
操作
配置檔管理範圍
Pre-condition
後置條件
LUA 內容中的可執行檔
${ROWSPAN2}$Install profile${REMOVE}$
全系統
配置檔已複製、安裝到系統中,並可供使用。 配置檔可在所有使用者的全系統和目前用戶範圍內列舉。
在設備驅動器安裝期間,由驅動程式安裝原則控管。 否,否則為 。
目前使用者
不支援
${ROWSPAN2}$Uninstall profile${REMOVE}$
全系統
配置檔已安裝在系統中
從系統卸載配置檔,並選擇性地從配置檔存放區刪除。 配置檔不再可供使用,而且無法在任何範圍中列舉。
不
目前使用者
不支援
${ROWSPAN2}使用 device${REMOVE}$ $Associate配置文件
全系統
已安裝配置檔,且類型為 ICC 或 CDMP
配置檔可供所有使用者搭配裝置使用。 它是可列舉的,在全系統範圍內,以及所有使用者的目前用戶範圍,與裝置相關聯。
不
目前使用者
已安裝配置檔。 配置檔是否已經與全系統範圍內的裝置相關聯,而且類型為 ICC 或 CDMP,並不重要。
配置檔可供目前使用者使用裝置。 它只能在目前的用戶範圍中列舉(除非有全系統關聯,也一樣)與裝置相關聯。
是的
${ROWSPAN2}從 device${REMOVE}$ $Disassociate配置文件
全系統
配置檔與全系統範圍內的裝置相關聯,且類型為 ICC 或 CDMP
配置檔已不再可供使用(除了在其目前用戶範圍中具有此關聯的使用者除外)。 它無法在全系統範圍內列舉。 不過,對於在其範圍內具有此關聯的使用者,它可以在目前用戶範圍中列舉。
不
目前使用者
配置檔與目前使用者範圍內的裝置相關聯(不論其是否在全系統範圍內相關聯),且類型為 ICC 或 CDMP。
目前使用者無法再使用配置檔,也無法列舉為與裝置相關聯的配置檔(除非該配置檔也與裝置的範圍相關聯)。
是的
${ROWSPAN2}$Set類型配置文件 (DMP 或 ICC) 預設為 device${REMOVE}$
全系統
配置檔的類型為 ICC 或 CDMP
配置文件預設會針對裝置的特定類型使用,但覆寫目前用戶範圍中此設定的使用者除外。 (如果尚未安裝設定檔,且與整個裝置系統相關聯,則為 。
不
目前使用者
配置檔的類型為 ICC 或 CDMP
配置文件預設會針對裝置的特定類型使用,以防目前的使用者,不論此裝置的全系統預設值為何。 (如果目前使用者尚未安裝配置檔,則與裝置相關聯。
是,如果已安裝配置檔
${ROWSPAN2}$Set類型配置檔(ICC、DMP、CAMP、GMMP)和子類型組合為全域默認值${REMOVE}$
全系統
只有 ICC 和 CDMP 配置檔可以與裝置相關聯。
配置文件預設會用於特定類型。 用戶可以覆寫目前用戶範圍內的此設定。 ( 如果尚未安裝設定檔,則為 。
不
目前使用者
只有 ICC 和 CDMP 配置檔可以與裝置相關聯。
根據預設,配置檔會針對目前使用者的特定類型使用。 ( 如果尚未安裝設定檔,則為 。
是,如果已安裝配置檔。
${ROWSPAN2}$Erase特定預設配置文件設定的目前使用者覆寫,因此系統預設值一律會用於目前用戶範圍。${REMOVE}$
全系統
不適用
目前使用者
即使針對預設配置檔設定上的目前使用者查詢,系統也會傳回全系統設定以供使用。
是的
${ROWSPAN2}$Enumerate符合特定準則的已安裝配置檔(例如裝置類別、配置文件類別等)${REMOVE}$
全系統
只有 ICC 和 CDMP 配置檔可以與裝置建立關聯並列舉。
系統會列舉已安裝並滿足全系統範圍內指定準則的配置檔。
是的
目前使用者
只有 ICC 和 CDMP 配置檔可以與裝置相關聯,因此會針對裝置列舉。
系統會列舉已安裝並滿足整個系統範圍內指定準則的配置檔。
是的
${ROWSPAN2}$Enumerate符合特定準則的特定裝置相關聯的配置檔,例如裝置類別和配置文件類別${REMOVE}$
全系統
只有 ICC 和 CDMP 配置檔可以與裝置建立關聯並列舉。
列舉與全系統範圍內裝置相關聯的配置檔,並滿足整個系統範圍內的指定準則。
是的
目前使用者
只有 ICC 和 CDMP 配置檔可以與裝置建立關聯並列舉。
列舉與目前用戶範圍中裝置相關聯的配置檔,其中包含整個系統的關聯,並滿足目前使用者範圍內的指定準則。
是的
有效的色彩配置檔類型是由 COLORPROFILETYPE 列舉所提供。
有效的色彩配置文件子類型是由 COLORPROFILESUBTYPE 列舉所提供。
下表顯示有效的配置檔類型/子類型組合。
COLORPROFILETYPE
有效的 COLORPROFILESUBTYPE
筆記
裝置預設值
全域預設值
預定用途
預定用途
CPT_ICC
CPST_NONE
取得/設定與裝置相關聯的預設 ICC 配置檔
CPST_RGBWorkingSpace或CPST_CustomWorkingSpace
取得/設定 ICC 設定檔作為全域 RGB 或自定義工作空間配置檔。 請參閱附注。
COLORPROFILETYPE CPT_ICC和CPT_DMP互斥。 您為指定工作空間設定的預設色彩配置檔 (RGB 或 Custom) 可以是 ICC 設定檔或 DMP 設定檔,但不能同時設定兩者。
CPT_DMP
CPST_NONE
取得/設定與裝置相關聯的預設 DMP 配置檔
CPST_RGBWorkingSpace或CPST_CustomWorkingSpace
取得/設定 DMP 設定檔作為全域 RGB 或自訂工作空間配置檔。 請參閱附注。
COLORPROFILETYPE CPT_ICC和CPT_DMP互斥。 您為指定工作空間設定的預設色彩配置檔 (RGB 或 Custom) 可以是 ICC 設定檔或 DMP 設定檔,但不能同時設定兩者。
注意
呼叫 WcsSetDefaultColorProfile 將 DMP 配置檔設定為 RGB 工作區或自定義工作空間的預設配置檔時,只有 RGBVirtualDevice、LCD 或 CRT 類型的 DMP 配置檔有效。
當呼叫 WcsSetDefaultColorProfile 將 ICC 配置檔設定為 RGB 工作區或自定義工作空間的預設配置檔時,只有類別為 “spac” 或 “disp” 的 ICC 配置檔,且其色彩空間為 “RGB” 有效。
此架構是根據上述列舉和數據表中所述的作業需求所設計。
配置檔管理公用 API 層
由於舊版 ICM2 API 不支援設定檔管理範圍,因此需要一組新的 WCS 配置檔管理 API,才能將設定檔管理範圍定義為全系統或目前的使用者。 ? 舊版 ICM2 API 會繼續支援回溯相容性,並處理呼叫隱含的配置檔管理範圍。 o 在目前使用者範圍上運作的 ICM2 API ? 這是針對 WCS 設定檔管理中系統範圍和目前用戶範圍所支援的作業。 舊版 ICM2 API 會以目前使用者身分在配置檔管理範圍的新 WCS API 上呼叫。 從用戶的觀點來看,這很合理,因為這樣可從舊版應用程式啟用個別用戶設定,並在 LUA 內容中執行大部分作業。 o 在全系統範圍內運作的 ICM2 API ? 這是針對僅支援全系統範圍的作業(安裝配置檔和卸載配置檔)。 不會建立新的 WCS 配置檔管理 API,而且可以修改現有的 API。
配置檔管理作業的基礎實作會處理下列設定數據實體,以建立色彩處理演算法的內容,以提供色彩管理功能。 它們是裝置特定或全域 (裝置獨立) 設定。 o 裝置特定的組態數據:? 與特定裝置相關聯的配置檔清單。 ? 與裝置相關聯的不同配置檔類型的預設配置檔。 ? 用於列舉的配置檔比對模式。 o 全域設定數據:? 系統中安裝的配置檔清單。 ? 不同配置檔類型的全域預設配置檔。 ? 組態數據儲存的基礎實作會採用設定資料(裝置獨立或裝置特定),可以是全系統或目前使用者的記憶體範圍。 這與配置檔管理範圍不同。 如果目前使用者設定不存在該作業的目前用戶設定,具有目前使用者配置檔管理範圍的作業可能會從整個系統的記憶體範圍讀取。 ? 此儲存層中的ICM2/WCS API 層會呼叫此儲存層,以取得和設定具有適當儲存範圍的數據。 記憶體層對分析管理範圍而言是透明的。 根據 API 呼叫端所指定的設定檔管理範圍,結合目前使用者和全系統記憶體範圍的數據,以建立或更新組態的邏輯。 此邏輯存在於ICM2/WCS API 層中。
裝置特定的儲存層
列印、擷取或顯示等不同裝置類別的記憶體可能彼此不同。 例如,列印裝置的組態數據必須使用標準列印 API 來儲存,例如 SetPrinterDataEx 和 GetPrinterDataEx,才能在 Point-and-Print 連線期間將設定檔複製到用戶端電腦。 ? 此層會匯出功能,以使用一般預先定義的介面來開啟存放區、取得數據、設定數據和關閉存放區,讓配置檔管理組態儲存層可以呼叫它們,同時對儲存該裝置的數據的方式而言是透明的。
下圖說明此架構。
配置檔管理公用 API 層
${ROWSPAN2}$Legacy ICM2 API,用於只支援 Vista 中全系統配置檔管理範圍的作業(安裝、卸載和取得色彩目錄)。 他們會使用適當的儲存範圍來呼叫組態儲存層。${REMOVE}$
舊版 ICM2 API 適用於在 Vista 中同時支援全系統與目前使用者配置檔管理範圍的作業(除了安裝、卸載和取得色彩目錄以外的所有作業)。 它們會隱含地處理目前用戶範圍,並以目前使用者身分呼叫新的WCS API。
具有全系統且目前使用者配置檔管理範圍支援的新 WCS API。 他們會呼叫具有適當記憶體範圍的組態儲存層。
配置檔管理設定儲存層
與裝置無關的全域設定例程
裝置特定的設定例程
${ROWSPAN3}$Profile安裝和與裝置無關的預設配置檔設定管理,在全系統和目前使用者記憶體範圍中受到支援。${REMOVE}$
全系統和目前使用者記憶體範圍支援裝置關聯和裝置特定的預設配置檔設定管理。
Device-Specific 儲存層
列印特定儲存空間
顯示特定記憶體
擷取特定記憶體
僅支援 Vista 中全系統配置檔管理範圍的作業舊版 ICM2 API 不會變更行為。 安裝和卸載作業落在此類別中。
支援全系統和目前使用者配置檔管理範圍的作業舊版 ICM2 API 已變更其行為,以查詢及設定目前的用戶設定。 除了安裝和卸載以外的所有作業,都屬於此類別。