配置文件管理功能
配置文件管理功能
以下 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 | 从给定的颜色管理模块动态链接库(CMM DLL)中取消关联指定的 ID 值。 |
WcsAssociateColorProfileWithDevice | 将指定的 WCS 颜色配置文件与指定的设备相关联。 |
WcsCreateIccProfile | 将 WCS 配置文件转换为 ICC 配置文件。 |
WcsDisassociateColorProfileFromDevice | 将指定的 WCS 颜色配置文件与指定计算机上的指定设备取消关联。 |
WcsEnumColorProfiles | 枚举满足指定配置文件管理范围中的枚举条件的所有颜色配置文件。 |
WcsEnumColorProfilesSize | 返回 WcsEnumColorProfiles 函数枚举颜色配置文件所需的缓冲区的大小(以字节为单位)。 |
WcsGetDefaultColorProfile | 检索设备的默认颜色配置文件;如果未指定设备,则检索与设备无关的默认颜色配置文件。 |
WcsGetDefaultColorProfileSize | 返回设备的默认颜色配置文件名称的大小(以字节为单位),包括 NULL 终止符。 |
WcsGetDefaultRenderingIntent | 检索指定配置文件管理范围中的默认呈现意向。 |
WcsGetUsePerUserProfiles | 确定用户是否已选择对指定设备使用每用户配置文件关联列表。 |
WcsOpenColorProfileW | 创建指定颜色配置文件的句柄。 |
WcsSetDefaultColorProfile | 在指定的配置文件管理范围内设置指定配置文件类型的默认颜色配置文件名称。 |
WcsSetDefaultRenderingIntent | 在指定的配置文件管理范围内设置默认呈现意向。 |
WcsSetUsePerUserProfiles | 允许用户指定是否对指定设备使用每用户配置文件关联列表。 |
配置文件消耗函数
配置文件使用 API 是 ICM2 中的 API,这些 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,以便作成功。
操作
配置文件管理范围
先决条件
条件后
LUA 上下文中的可执行文件
${ROWSPAN2}$Install profile${REMOVE}$
系统范围
配置文件已复制、安装到系统中,并可供使用。 配置文件在系统范围内和当前用户范围内可枚举所有用户。
在设备驱动程序安装期间,受驱动程序安装策略的约束。 否,否则。
当前用户
不支持
${ROWSPAN2}$Uninstall profile${REMOVE}$
系统范围
配置文件安装在系统中
从系统卸载并选择性地从配置文件存储中删除配置文件。 配置文件不再可供使用,并且不能在任何范围内枚举。
不
当前用户
不支持
${ROWSPAN2}$Associate profile with device${REMOVE}$
系统范围
配置文件已安装且类型为 ICC 或 CDMP
配置文件可供所有用户用于设备。 它可以枚举,在系统范围内,也是与设备关联的所有用户的当前用户范围。
不
当前用户
已安装配置文件。 配置文件是否已关联到系统范围内的设备,并且其类型为 ICC 或 CDMP 并不重要。
配置文件可供当前用户使用。 它仅在当前用户范围内(除非存在系统范围的关联)与设备关联,才能进行枚举。
是的
${ROWSPAN2}从 device${REMOVE}$ $Disassociate配置文件
系统范围
配置文件与系统范围内的设备相关联,类型为 ICC 或 CDMP
配置文件不再可供使用(除了在其当前用户范围内具有此关联的用户除外)。 它在系统范围内不可枚举。 不过,对于在其范围内具有此关联的用户,它可以在当前用户范围内枚举它。
不
当前用户
配置文件与当前用户范围内的设备相关联(无论它是否在系统范围内关联),并且类型为 ICC 或 CDMP。
配置文件不再可供当前用户使用(除非该配置文件在系统范围内的设备中也关联到设备)或可枚举。
是的
${ROWSPAN2}$Set设备${REMOVE}$ 类型(DMP 或 ICC)的配置文件
系统范围
配置文件的类型为 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,该 API 将配置文件管理范围定义为系统范围或当前用户。 ? 继续支持旧 ICM2 API 以实现向后兼容性,并处理为调用隐式的配置文件管理范围。 适用于当前用户范围的 ICM2 API? 这是针对 WCS 配置文件管理中系统范围和当前用户范围支持的作。 旧版 ICM2 API 使用配置文件管理范围作为当前用户调用新的 WCS API。 从用户的角度来看,这很有意义,因为这可以从旧版应用程序启用每用户设置,并在 LUA 上下文中执行大部分作。 适用于系统范围的 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 的行为已更改为查询和配置当前用户设置。 除安装和卸载之外的所有作都属于此类别。