ICertPolicy 接口 (certpol.h)

ICertPolicy 接口提供证书服务服务器引擎和策略模块之间的通信。

注意 策略模块可以使用 ICertServerPolicy 接口与证书服务服务器引擎通信。
 
证书服务服务器引擎调用 ICertPolicy 方法以执行以下任务:
  • 初始化策略模块。
  • 通知策略模块新请求已进入系统。 然后,策略模块可以使用 ICertServerPolicy 接口的方法来指示请求是好的,应该发出,是错误的,应该拒绝,或者应该保留供以后考虑。
  • 检索策略模块及其功能的说明。
  • 通知策略模块证书服务服务器正在终止。

策略模块应同时实现 ICertPolicyICertManageModule

ICertPolicy 在 Certpol.h 中定义。 但是,在创建程序时,请使用 Certsrv.h 作为包含文件。

证书服务接口同时支持单元线程和自由线程模型。 为了提高吞吐量,建议使用自由线程处理。

继承

ICertPolicy 接口继承自 IDispatch 接口。 ICertPolicy 还具有以下类型的成员:

方法

ICertPolicy 接口具有这些方法。

 
ICertPolicy::GetDescription

返回策略模块及其函数的可读说明。
ICertPolicy::Initialize

由服务器引擎调用以允许策略模块执行初始化任务。
ICertPolicy::ShutDown

在服务器终止之前由服务器引擎调用。
ICertPolicy::VerifyRequest

通知策略模块新请求已进入系统。

注解

只有独立 证书颁发机构 才应使用自定义策略或退出模块;在运行企业证书颁发机构时,强烈建议使用 Microsoft 提供的策略和退出模块。

ICertPolicy 的实现者还应实现 ICertManageModule。 此外,实现 ICertPolicy 的类的 ProgID 必须符合命名约定。 具体而言,ProgID 必须采用以下形式:

MyApp。策略”

其中 ,MyApp 是标识应用程序的说明符。 例如,在 C++ 中,可以在实现 ICertPolicy 的 CMyCertPolicyModule) 类 (的 DECLARE_REGISTRY 宏中使用以下代码。

DECLARE_REGISTRY(
    CMyCertPolicyModule,
    L"MyCode.Policy.1",
    L"MyCode.Policy",
    IDS_CERTPOLICYMODULE_DESC,
    THREADFLAGS_BOTH);

对于上一个示例,IDS_CERTPOLICYMODULE_DESC值是描述类的字符串 (.rc) 资源文件中特定于应用程序的标识符。

Certmod.h 中定义的字符串常量可用于简化命名约定。

常数 Value
wszCERTPOLICYMODULE_POSTFIX TEXT (”。策略“)
 

证书服务服务器上一次不能注册多个 Visual Basic Scripting Edition 策略模块。 如果在证书服务服务器上注册了多个此类策略模块,则证书颁发机构 MMC 管理单元、证书服务应用程序或 certutil 命令行程序可能会产生错误。 请注意,Visual Basic Scripting Edition 开发环境会在 DLL 成功生成时自动注册该 DLL。 因此,在已注册一个 Visual Basic Scripting Edition 策略模块并创建另一个 Visual Basic Scripting Edition 策略模块时,可能会遇到这种情况。 若要避免这种情况,必须使用命令行指令 regsvr32 /u FileName.dll注销其中一个 Visual Basic Scripting Edition 策略模块,其中 FileName.dll 是你不打算激活的 Visual Basic Scripting Edition 策略模块的名称。

Visual Basic Scripting Edition 中 ICertPolicy 的实施者必须以以下形式命名其项目:

MyApp

其中,MyApp 是标识应用程序的说明符;此外,实现 ICertPolicy 的类必须命名为“Policy”。

要求

要求
最低受支持的客户端 无受支持的版本
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 certpol.h (包括 Certsrv.h)