設定檔管理功能
設定檔管理功能
下列 API 函式在設定檔管理中很有用。
函式 | 描述 |
---|---|
AssociateColorProfileWithDeviceW | 將指定的色彩設定檔與指定的裝置產生關聯。 |
[CreateProfileFromLogColorSpaceW] ( (/windows/win32/api/icm/nf-icm-createprofilefromlogcolorspacew) | 將邏輯 色彩空間 轉換為 裝置設定檔。 |
DisassociateColorProfileFromDeviceW | 將指定的色彩設定檔與指定電腦上的指定裝置解除關聯。 |
EnumColorProfilesW | 列舉滿足指定列舉準則的所有設定檔。 |
GetColorDirectoryW | 擷取指定電腦上的 Windows COLOR 目錄路徑。 |
GetDeviceGammaRamp | 從直接色彩顯示面板取得 Gamma 坡形。 |
GetStandardColorSpaceProfileW | 擷取為指定之標準 色彩空間註冊的色彩設定檔。 |
InstallColorProfileW | 安裝指定的設定檔以在指定的電腦上使用。 設定檔也會複製到 COLOR 目錄。 |
RegisterCMMW | 將指定的識別值與指定的色彩管理模組動態連結程式庫產生關聯, (CMM DLL) 。 當此識別碼出現在色彩設定檔中時,Windows 就可以找到對應的 CMM,以便建立轉換。 |
SetDeviceGammaRamp | 設定直接色彩顯示面板上的 gamma 坡形。 |
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 為基礎,以提供修改應用程式程式碼的其他功能。
設定檔包含色彩處理演算法用來轉譯不同色彩空間之間色彩的資訊。 設定檔管理提供一種方式來查詢及指定色彩處理模型在不同階段使用的設定檔,以管理具有不同色彩特性之各種周邊裝置的色彩輸出。
設定檔管理提供下列一組功能:
- 安裝色彩設定檔以在系統中使用。
- 將一或多個已安裝的色彩設定檔與任何特定裝置產生關聯。
- 在可用於特定色彩處理階段的設定檔中,選擇特定類型的預設色彩設定檔。 這可能是裝置在與其相關聯的設定檔之間,或是安裝在系統中而非裝置特定設定檔中的裝置。
- 列舉符合系統中所安裝設定檔中特定準則的色彩設定檔。
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 或) 設定檔,作為 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 或自訂) 可以是 ICC 設定檔或 DMP 設定檔,但不能同時設定兩者。
CPT_DMP
CPST_NONE
取得/設定與裝置相關聯的預設 DMP 設定檔
CPST_RGBWorkingSpace或CPST_CustomWorkingSpace
取得/設定 DMP 設定檔作為全域 RGB 或自訂工作區設定檔。 請參閱附註。
COLORPROFILETYPE CPT_ICC和CPT_DMP互斥。 您為指定工作區設定的預設色彩設定檔, (RGB 或自訂) 可以是 ICC 設定檔或 DMP 設定檔,但不能同時設定兩者。
注意
當呼叫 WcsSetDefaultColorProfile 以將 DMP 設定檔設定為 RGB 工作區的預設設定檔或自訂工作區時,只有類型為 RGBVirtualDevice、SMS 或 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,才能在點與列印連線期間複製設定檔,以及要傳送至用戶端電腦的設定。 ? 此層會匯出功能以開啟存放區、取得資料、設定資料,並使用一般預先定義的介面關閉存放區,讓設定檔管理組態儲存層可以呼叫它們,同時成為該裝置資料儲存方式的透明方式。
下圖說明這個架構。
設定檔管理公用 API 層
${ROWSPAN2}$Legacy ICM2 API,適用于僅支援 Vista (安裝、卸載和取得色彩目錄) 全系統設定檔管理範圍的作業。 他們會使用適當的儲存體範圍來呼叫設定儲存層。${REMOVE}$
舊版 ICM2 API 適用于在 Vista 中支援全系統和目前使用者設定檔管理範圍的作業, (安裝、卸載和取得色彩目錄以外的所有作業) 。 它們會隱含地處理目前的使用者範圍,並以設定檔管理範圍作為目前使用者呼叫新的 WCS API。
具有全系統和目前使用者設定檔管理範圍支援的新 WCS API。 他們會呼叫具有適當儲存體範圍的組態儲存層。
設定檔管理組態儲存層
與裝置無關的全域設定常式
裝置特定的設定常式
${ROWSPAN3}$Profile安裝與裝置無關的預設設定檔管理,在全系統和目前使用者儲存體範圍中支援。${REMOVE}$
全系統和目前使用者儲存體範圍支援裝置關聯和裝置特定的預設設定檔設定管理。
Device-Specific儲存層
列印特定儲存空間
顯示特定儲存體
擷取特定儲存體
舊版 ICM2 API 適用于僅支援 Vista 中全系統設定檔管理範圍的作業,不會變更行為。 安裝和卸載作業屬於此類別。
支援全系統和目前使用者設定檔管理範圍的作業舊版 ICM2 API,其行為會變更為查詢和設定目前的使用者設定。 除了安裝和卸載以外的所有作業,都屬於此類別。