ICertView::SetRestriction 方法 (certview.h)

SetRestriction 方法设置列的排序和限定限制。

语法

HRESULT SetRestriction(
  [in] LONG          ColumnIndex,
  [in] LONG          SeekOperator,
  [in] LONG          SortOrder,
  [in] const VARIANT *pvarValue
);

参数

[in] ColumnIndex

视图或预定义列说明符的有效列索引号。 如果 ColumnIndex 参数不为负,则此值表示接收限制的列的从零开始的索引。

如果 ColumnIndex 参数为负数,则忽略所有其他参数,并且此参数必须是下列值之一:

价值 意义
CV_COLUMN_QUEUE_DEFAULT
-1
将视图限制为尚未解析的请求;如果请求导致颁发的证书或失败的请求,则它不会是视图的一部分。
CV_COLUMN_LOG_DEFAULT
-2
将视图限制为已解析的请求。 如果请求已颁发证书或请求失败,则会解析请求;吊销的证书被视为已解析。
CV_COLUMN_LOG_FAILED_DEFAULT
-3
将视图限制为失败的请求。

[in] SeekOperator

指定列的数据查询限定符的逻辑运算符。 此参数与 pvarValue 参数一起使用,以定义数据查询限定符。

此参数必须设置为以下值之一:

价值 意义
CVR_SEEK_EQ
0x1
等于
CVR_SEEK_LT
0x2
小于
CVR_SEEK_LE
0x4
小于或等于
CVR_SEEK_GE
0x8
大于或等于
CVR_SEEK_GT
0x10
大于

[in] SortOrder

指定列的排序顺序。 索引列具有零个或一个限制可以包含排序顺序的 CVR_SORT_ASCENDCVR_SORT_DESCEND。 具有两个或多个限制的非索引列或列必须使用 CVR_SORT_NONE

价值 意义
CVR_SORT_NONE
0
无排序顺序
CVR_SORT_ASCEND
0x1
上升
CVR_SORT_DESCEND
0x2

[in] pvarValue

指定应用于此列的数据查询限定符。 此参数与 SeekOperator 参数一起确定返回给证书服务视图的数据。

返回值

如果方法成功,该方法将返回 S_OK

如果方法失败,它将返回指示错误的 HRESULT 值。 有关常见错误代码的列表,请参阅 常见 HRESULT 值

言论

ICertView 对象维护限制数组,允许每个列包含任意数量的限制。 建立列限制后,调用 ICertView::OpenView 方法将检索数据,每个列的限制都用作数据库查询的一部分。

在调用 SetRestriction 方法之前,必须通过调用ICertView::OpenConnection 方法与证书服务服务器建立连接。

例子

    // This example restricts the data
    // to rows that have RequestIDs greater than five.
    // pCertView is a pointer to ICertView.
    HRESULT    hr;
    VARIANT    varRest;
    LONG       nIndex;
    BSTR       bstrCol = NULL;

    // Use one column in the result set.
    hr = pCertView->SetResultColumnCount(1);
    if (FAILED(hr))
    {
        printf("Failed SetResultColumnCount - %x\n", hr);
        goto error;
    }
    // Determine the column index for RequestID column.
    bstrCol = SysAllocString(TEXT("RequestID"));
    hr = pCertView->GetColumnIndex(FALSE, bstrCol, &nIndex);
    if (FAILED(hr))
    {
        printf("Failed GetColumnIndex - %x\n", hr);
        goto error;
    }
    // Place this column into the result set.
    pCertView->SetResultColumn(nIndex);
    // Set a restriction on this column.
    VariantInit(&varRest);
    varRest.vt = VT_I4;
    varRest.lVal = 5;
    // Restrict view to requests with ID greater than 5.
    hr = pCertView->SetRestriction(nIndex,
                                   CVR_SEEK_GT,
                                   CVR_SORT_NONE,
                                   &varRest);
    if (S_OK != hr)
        printf("Failed ICertView::SetRestriction - %x\n", hr);
    else
    {
        // Call OpenView, process rows, release resources, and so on.
        // ...
    }
error:
    // Done processing, clear resources.
    VariantClear(&varRest);
    if (NULL != bstrCol)
        SysFreeString(bstrCol);

要求

要求 价值
最低支持的客户端 不支持
支持的最低服务器 Windows Server 2003 [仅限桌面应用]
目标平台 窗户
标头 certview.h (包括 Certsrv.h)
Certidl.lib
DLL Certadm.dll

另请参阅

ICertView

ICertView2

ICertView::OpenConnection

ICertView::OpenView

ICertView::SetResultColumn

IEnumCertViewColumn::IsIndexed