ICertPolicy2 接口 (certpol.h)

ICertPolicy2 接口是在证书服务服务器引擎和策略模块之间提供通信的两个接口之一。

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

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

继承

ICertPolicy2 接口继承自 ICertPolicyIDispatchICertPolicy2 还具有以下类型的成员:

方法

ICertPolicy2 接口具有这些方法。

 
ICertPolicy2::GetManageModule

通过调用 GetManageModule 并传入指向 ICertManageModule 的指针的地址,检索与 ICertPolicy2 接口关联的 ICertManageModule 接口。

注解

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)