Compartilhar via


Método ICertServerExit::EnumerateExtensions (certif.h)

O método EnumerateExtensions retorna a cadeia de caracteres OID ( identificador de objeto ) (também conhecida como nome da extensão) da próxima extensão de certificado a ser enumerada e incrementa o ponteiro interno para a extensão a seguir.

Antes de chamar EnumerateExtensions, um aplicativo chama ICertServerExit::EnumerateExtensionsSetup. Quando feito a enumeração, um aplicativo chama ICertServerExit::EnumerateExtensionsClose.

Sintaxe

HRESULT EnumerateExtensions(
  [out] BSTR *pstrExtensionName
);

Parâmetros

[out] pstrExtensionName

Um ponteiro para o nome da extensão enumerada.

Retornar valor

C++

Se o método for bem-sucedido, o método retornará S_OK e *pstrExtensionName será definido como o BSTR que contém o nome da extensão enumerada. Um valor de S_FALSE será retornado se a última extensão já tiver sido enumerada.

Para usar esse método, crie uma variável do tipo BSTR , defina a variável igual a NULL e passe o endereço dessa variável como pstrExtensionName.

Quando terminar de usar o BSTR, libere-o chamando a função SysFreeString .

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.

VB

Retorna uma cadeia de caracteres que contém o nome da extensão enumerada ou uma cadeia de caracteres vazia se a última extensão já tiver sido enumerada.

Comentários

Esse método enumera extensões de certificado registradas no banco de dados, mesmo aquelas que estão desabilitadas e não aparecem no certificado. Para determinar se uma extensão está desabilitada, use ICertServerExit::GetCertificateExtensionFlags para testar a EXTENSION_DISABLE_FLAG bit da extensão.

Exemplos

BSTR     bstrExt = NULL;
VARIANT  varExt;
LONG     ExtFlags;
HRESULT  hr;

VariantInit(&varExt);

// Enumerate the extensions.
while (S_OK ==
      (hr = pCertServerExit->EnumerateExtensions(&bstrExt)))
{
  // Retrieve the extension data.
  if (FAILED(pCertServerExit->GetCertificateExtension(
                              bstrExt,
                              PROPTYPE_BINARY,
                              &varExt)))
      printf("Failed GetCertificateExtension\n");
  else
  {
     // Retrieve the extension flags.
    if (FAILED(pCertServerExit->GetCertificateExtensionFlags(
                                &ExtFlags)))
        printf("Failed GetCertificateExtensionFlags\n");
    else
        // This sample will display the extension OID string,
        // the extension flags (in hex) and
        // the length of the BSTR binary ASN-encode extension.
        printf("Extension: %ws\tFlags:%x\tLength:%u\n",
               bstrExt,
               ExtFlags,
               SysStringByteLen(varExt.bstrVal));
  }
}
// Determine if hr was S_FALSE, meaning the enumeration 
// was completed, or some other error.
if (S_FALSE != hr)
    printf("Failed EnumerateExtensions - %x\n", hr);
// Free BSTR resource.
if (NULL != bstrExt)
    SysFreeString(bstrExt);
// Free VARIANT resource.
    VariantClear(&varExt);

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 certif.h (inclua Certsrv.h)
Biblioteca Certidl.lib
DLL Certcli.dll

Confira também

ICertServerExit

ICertServerExit::EnumerateExtensionsClose

ICertServerExit::EnumerateExtensionsSetup

ICertServerExit::GetCertificateExtension

ICertServerExit::GetCertificateExtensionFlags