Compartilhar via


Método ICertAdmin::SetRequestAttributes (certadm.h)

O método SetRequestAttributes define atributos na solicitação de certificado pendente especificada. Esse método foi definido pela primeira vez na interface ICertAdmin .

Para que esse método seja bem-sucedido, a solicitação de certificado deve estar pendente.

Sintaxe

HRESULT SetRequestAttributes(
  [in] const BSTR strConfig,
  [in] LONG       RequestId,
  [in] const BSTR strAttributes
);

Parâmetros

[in] strConfig

Representa uma cadeia de caracteres de configuração válida para o servidor de autoridade de certificação (CA) no formulário COMPUTERNAME\CANAME, em que COMPUTERNAME é o nome de rede do servidor de Serviços de Certificados e CANAME é o nome comum da autoridade de certificação, conforme inserido durante a instalação dos Serviços de Certificados. Para obter informações sobre o nome da cadeia de caracteres de configuração, consulte ICertConfig.

SetRequestAttributesimportante não limpa o cache interno quando a cadeia de caracteres de configuração é alterada. Ao alterar a cadeia de caracteres de configuração para a AC, você deve instanciar um novo objeto ICertAdmin e chamar esse método novamente com a nova cadeia de caracteres de configuração.
 

[in] RequestId

Especifica a ID da solicitação que recebe os atributos.

[in] strAttributes

Especifica os dados do atributo. Cada atributo é um par de cadeia de caracteres nome-valor. O caractere de dois-pontos separa o nome e o valor e um caractere de nova linha separa vários pares nome-valor, por exemplo:

C++ AttributeName1:AttributeValue1\nAttributeName2:AttributeValue2
VB AttributeName1:AttributeValue1 & vbNewLine & AttributeName2:AttributeValue2
Não há um limite definido para o número de atributos de solicitação que podem ser adicionados a uma solicitação.

Quando os Serviços de Certificado analisam nomes de atributo, ele ignora espaços, hifens (sinais de menos) e maiúsculas e minúsculas. Por exemplo, AttributeName1, Attribute Name1 e Attribute-name1 são todos equivalentes. Para valores de atributo, os Serviços de Certificados ignoram o espaço em branco à esquerda e à direita.

Nota O comprimento máximo para um nome de atributo é de 127 caracteres não NULL . O comprimento máximo para um valor de atributo é de 4.096 caracteres não NULL .
 

Retornar valor

VB

Se o método for bem-sucedido, o método retornará S_OK.

Se o método falhar, ele retornará um valor HRESULT que indica o erro. Para obter uma lista de códigos de erro comuns, consulte Valores HRESULT comuns.

Comentários

Atributos adicionados ou atualizados chamando SetRequestAttributes não alteram a cadeia de caracteres de atributo inicial e nãoparsada associada à solicitação de certificado. A cadeia de caracteres de atributo nãoparsada da solicitação de certificado é inalterável depois que o certificado é solicitado (o método ICertRequest::Submit permite que os atributos sejam especificados no momento em que o certificado é solicitado).

Você pode usar o snap-in MMC da Autoridade de Certificação para exibir a cadeia de caracteres de atributo de solicitação inicial nãoparsada.

Ao exibir os atributos analisados, você também verá as alterações devido a chamadas para SetRequestAttributes.

Para exibir os atributos analisados

  1. Abra o snap-in MMC da Autoridade de Certificação.
  2. Abra a pasta Solicitações Pendentes .
  3. Clique com o botão direito do mouse em uma solicitação, aponte para Todas as Tarefas e clique em Exibir Atributos/Extensões.
Para enumerar ou exibir todos os atributos analisados, incluindo aqueles adicionados por meio de SetRequestAttributes, você também pode usar a interface IEnumCERTVIEWATTRIBUTE .

As tarefas de administração usam o DCOM. O código que chama esse método de interface conforme definido em uma versão anterior do Certadm.h será executado em servidores baseados no Windows, desde que o cliente e o servidor estejam executando o mesmo sistema operacional Windows.

Exemplos

    BSTR bstrAttribs = NULL;
    BSTR bstrCA = NULL;
    long nReqID;  // request ID

    //  Specify the attributes.
    //  For example, "AttName1:AttValue1\nAttName2:AttValue2". 
    bstrAttribs = SysAllocString(L"<ATTRIBUTESHERE>");
    if (NULL == bstrAttribs)
    {
        printf("Memory allocation failed for bstrAttribs.\n");
        goto error;
    }
    
    bstrCA = SysAllocString(L"<COMPUTERNAMEHERE>\\<CANAMEHERE>");
    if (NULL == bstrCA)
    {
        printf("Memory allocation failed for bstrCA.\n");
        goto error;
    }

    //  Request ID to receive the attributes.
    nReqID = <REQUESTIDHERE>;

    //  Add these attributes to the certificate.
    //  pCertAdmin is a previously instantiated
    //  ICertAdmin object pointer. 
    hr = pCertAdmin->SetRequestAttributes( bstrCA,
                                           nReqID,
                                           bstrAttribs );
    if (FAILED(hr))
        printf("Failed SetRequestAttributes [%x]\n", hr);
    else
        printf("SetRequestAttributes succeeded\n");

    //  Done processing.

error:

    if (bstrAttribs)
        SysFreeString(bstrAttribs);
    if (bstrCA)
        SysFreeString(bstrCA);
    //  Free other resources.

Requisitos

Requisito Valor
Cliente mínimo com suporte Nenhum compatível
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho certadm.h (inclua Certsrv.h)
Biblioteca Certidl.lib
DLL Certadm.dll

Confira também

CCertAdmin

ICertAdmin

ICertAdmin2

ICertConfig

IEnumCERTVIEWATTRIBUTE