配置文件管理函数
配置文件管理函数
以下 API 函数在配置文件管理中非常有用。
函数 | 说明 |
---|---|
AssociateColorProfileWithDeviceW | 将指定的颜色配置文件与指定的设备相关联。 |
[CreateProfileFromLogColorSpaceW] ( (/windows/win32/api/icm/nf-icm-createprofilefromlogcolorspacew) | 将逻辑 颜色空间 转换为 设备配置文件。 |
DisassociateColorProfileFromDeviceW | 取消指定颜色配置文件与指定计算机上的指定设备的关联。 |
EnumColorProfilesW | 枚举满足给定枚举条件的所有配置文件。 |
GetColorDirectoryW | 检索指定计算机上的 Windows COLOR 目录的路径。 |
GetDeviceGammaRamp | 从直接颜色显示板获取伽玛渐变。 |
GetStandardColorSpaceProfileW | 检索为指定的标准颜色 空间注册的颜色配置文件。 |
InstallColorProfileW | 安装给定的配置文件,以便在指定的计算机上使用。 配置文件也会复制到 COLOR 目录。 |
RegisterCMMW | 将指定的标识值与指定的颜色管理模块动态链接库关联 (CMM DLL) 。 当此 ID 出现在颜色配置文件中时,Windows 随后可以找到相应的 CMM 以创建转换。 |
SetDeviceGammaRamp | 设置直接彩色显示板上的伽玛渐变。 |
SetStandardColorSpaceProfileW | 为给定的标准 颜色空间注册指定的配置文件。 可以使用 GetStandardColorSpaceProfileW 查询配置文件。 |
UninstallColorProfileW | 从指定的计算机中删除指定的颜色配置文件。 有选择地从系统中删除关联的文件。 |
UnregisterCMMW | 将指定的 ID 值与给定的颜色管理模块动态链接库取消关联, (CMM DLL) 。 |
WcsAssociateColorProfileWithDevice | 将指定的 WCS 颜色配置文件与指定的设备相关联。 |
WcsCreateIccProfile | 将 WCS 配置文件转换为 ICC 配置文件。 |
WcsDisassociateColorProfileFromDevice | 取消将指定的 WCS 颜色配置文件与指定计算机上的指定设备关联。 |
WcsEnumColorProfiles | 枚举满足指定配置文件管理范围中枚举条件的所有颜色配置文件。 |
WcsEnumColorProfilesSize | 返回 WcsEnumColorProfiles 函数枚举颜色配置文件所需的缓冲区的大小(以字节为单位)。 |
WcsGetDefaultColorProfile | 检索设备的默认颜色配置文件,如果未指定设备,则检索与设备无关的默认值。 |
WcsGetDefaultColorProfileSize | 返回设备的默认颜色配置文件名称的大小(以字节为单位),包括 NULL 终止符。 |
WcsGetDefaultRenderingIntent | 检索指定配置文件管理范围中的默认呈现意向。 |
WcsGetUsePerUserProfiles | 确定用户是否已选择对指定设备使用每用户配置文件关联列表。 |
WcsOpenColorProfileW | 创建指定颜色配置文件的句柄。 |
WcsSetDefaultColorProfile | 设置指定配置文件管理范围内指定配置文件类型的默认颜色配置文件名称。 |
WcsSetDefaultRenderingIntent | 在指定的配置文件管理范围内设置默认呈现意向。 |
WcsSetUsePerUserProfiles | 允许用户指定是否对指定设备使用每用户配置文件关联列表。 |
配置文件消耗函数
配置文件使用 API 是 ICM2 中采用 ICC 或 WCS XML 配置文件、配置文件句柄或呈现意向作为参数的 API,以及一组用于 WCS 配置文件的新 API,支持应用程序颜色管理代码。
配置文件和配置文件管理功能
配置文件管理工作流基于现有的 ICM2 API,这些 API 经过扩充,可提供用于修改应用程序代码的其他功能。
配置文件包含颜色处理算法用于在不同颜色空间之间转换颜色的信息。 配置文件管理提供了一种方法,用于查询和指定颜色处理模型在不同阶段使用哪些配置文件,以管理具有不同颜色特征的各种外围设备的颜色输出。
配置文件管理提供以下功能集:
- 安装用于系统的颜色配置文件。
- 将一个或多个已安装的颜色配置文件与任何特定设备相关联。
- 在可用于特定颜色处理阶段的配置文件中选择特定类型的默认颜色配置文件。 这可以是与设备关联的配置文件之间的设备,也可能是在系统中安装的配置文件中,而不是特定于设备的配置文件。
- 枚举在系统中安装的配置文件中满足特定条件的颜色配置文件。
WCS 配置文件文件扩展名为“.cdmp”表示 DMP,“.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,以便操作成功。
Operation
配置文件管理范围
先决条件
后条件
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 或自定义) 可以是 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、LCD 或 CRT 类型的 DMP 配置文件有效。
调用 WcsSetDefaultColorProfile 将 ICC 配置文件设置为 RGB 工作区或自定义工作区的默认配置文件时,只有类为“spac”或“disp”且颜色空间为“RGB”的 ICC 配置文件有效。
体系结构是根据上述枚举和表中所述的操作要求设计的。
配置文件管理公共 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}$
用于在 Vista 中同时支持系统范围和当前用户配置文件管理范围的操作的旧 ICM2 API (除安装、卸载和获取颜色目录) 以外的所有操作。 它们隐式处理当前用户范围,并作为当前用户调用配置文件管理范围的新 WCS API。
具有系统范围和当前用户配置文件管理范围支持的新 WCS API。 它们调用具有适当存储范围的配置存储层。
配置文件管理配置存储层
与设备无关的全局配置例程
特定于设备的配置例程
${ROWSPAN3}$Profile安装和设备无关的默认配置文件设置管理,在系统范围和当前用户存储范围内受支持。${REMOVE}$
设备关联和特定于设备的默认配置文件设置管理,在系统范围和当前用户存储范围内受支持。
Device-Specific存储层
打印特定存储
显示特定存储
捕获特定存储
在 Vista 中仅支持系统范围的配置文件管理范围的操作的旧 ICM2 API 的行为没有变化。 安装和卸载操作属于此类别。
支持系统范围和当前用户配置文件管理范围的操作的旧 ICM2 API 的行为已更改,以查询和配置当前用户设置。 除安装和卸载之外的所有操作都属于此类别。