Funzione CryptGetDefaultProviderW (wincrypt.h)

Importante Questa API è deprecata. Il software nuovo ed esistente deve iniziare a usare le API cryptography next generation. Microsoft potrebbe rimuovere questa API nelle versioni future.
 
La funzione CryptGetDefaultProvider trova il provider di servizi di crittografia predefinito (CSP) di un tipo di provider specificato per il computer locale o l'utente corrente. Il nome del provider CSP predefinito per il tipo di provider specificato nel parametro dwProvType viene restituito nel buffer pszProvName .

Sintassi

BOOL CryptGetDefaultProviderW(
  [in]      DWORD  dwProvType,
  [in]      DWORD  *pdwReserved,
  [in]      DWORD  dwFlags,
  [out]     LPWSTR pszProvName,
  [in, out] DWORD  *pcbProvName
);

Parametri

[in] dwProvType

Tipo di provider per il quale deve essere trovato il nome CSP predefinito.

I tipi di provider definiti sono i seguenti:

[in] pdwReserved

Questo parametro è riservato per uso futuro e deve essere NULL.

[in] dwFlags

Vengono definiti i valori del flag seguenti.

Valore Significato
CRYPT_USER_DEFAULT
0x00000002
Restituisce il CSP predefinito del contesto utente del tipo specificato.
CRYPT_MACHINE_DEFAULT
0x00000001
Restituisce il CSP predefinito del computer del tipo specificato.

[out] pszProvName

Puntatore a un buffer di stringhe di caratteri con terminazione Null per ricevere il nome del provider di servizi di configurazione predefinito.

Per trovare le dimensioni del buffer a scopo di allocazione di memoria, questo parametro può essere NULL. Per altre informazioni, vedere Recupero di dati di lunghezza sconosciuta.

[in, out] pcbProvName

Puntatore a un valore DWORD che specifica le dimensioni, in byte, del buffer a cui punta il parametro pszProvName . Quando la funzione viene restituita, il valore DWORD contiene il numero di byte archiviati o da archiviare nel buffer.

Nota Quando si elaborano i dati restituiti nel buffer, le applicazioni devono usare le dimensioni effettive dei dati restituiti. Le dimensioni effettive possono essere leggermente inferiori alle dimensioni del buffer specificato nell'input. In caso di input, le dimensioni del buffer vengono in genere specificate sufficientemente grandi per garantire che i dati di output più grandi possibili si adattino al buffer. Nell'output la variabile a cui punta questo parametro viene aggiornata in modo da riflettere le dimensioni effettive dei dati copiati nel buffer.
 

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero (TRUE).

Se la funzione ha esito negativo, il valore restituito è zero (FALSE). Per informazioni sugli errori estesi, chiamare GetLastError.

Il codice di errore preceduto dall'NTE viene generato dal CSP specifico usato. I codici di errore possibili includono quanto segue.

Codice restituito Descrizione
ERROR_INVALID_PARAMETER
Uno dei parametri contiene un valore non valido. Si tratta più spesso di un puntatore che non è valido.
ERROR_MORE_DATA
Il buffer per il nome non è sufficientemente grande.
ERROR_NOT_ENOUGH_MEMORY
Memoria insufficiente del sistema operativo.
NTE_BAD_FLAGS
Il parametro dwFlags ha un valore non riconosciuto.

Commenti

Questa funzione determina quale provider di servizi di configurazione installato è attualmente impostato come predefinito per il computer locale o l'utente corrente. Queste informazioni vengono spesso visualizzate all'utente.

Esempio

Nell'esempio seguente viene recuperato il nome del provider CSP predefinito per il tipo di provider PROV_RSA_FULL. Per un altro esempio che usa questa funzione, vedere Esempio di programma C: enumerazione di provider CSP e tipi di provider.

#include <stdio.h>
#include <windows.h>
#include <Wincrypt.h>
#pragma comment(lib, "crypt32.lib")

void main()
{

    DWORD       cbProvName=0;
    LPTSTR      pbProvName=NULL;
    // Copyright (C) Microsoft.  All rights reserved.
    // Get the length of the RSA_FULL default provider name.
    if (!(CryptGetDefaultProvider(
         PROV_RSA_FULL, 
         NULL, 
         CRYPT_MACHINE_DEFAULT,
         NULL, 
         &cbProvName))) 
    { 
      printf("Error getting the length of the default "
          "provider name.\n");
      exit(1);
    }

    // Allocate local memory for the name of the default provider.
    if (!(pbProvName = (LPTSTR)LocalAlloc(LMEM_ZEROINIT, 
        cbProvName)))
    {
        printf("Error during memory allocation for "
            "provider name.\n");
        exit(1);
    }

    // Get the default provider name.
    if (CryptGetDefaultProvider(
        PROV_RSA_FULL, 
        NULL, 
        CRYPT_MACHINE_DEFAULT,
        pbProvName,
        &cbProvName)) 
    {
        printf("The default provider name is %s\n",pbProvName);
    }
    else
    {
        printf("Getting the name of the provider failed.\n");
        exit(1);
    }

    // Free resources when done.
    LocalFree(pbProvName);

}

Nota

L'intestazione wincrypt.h definisce CryptGetDefaultProvider come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Advapi32.lib
DLL Advapi32.dll

Vedi anche

CryptSetProvider

CryptSetProviderEx

Funzioni del provider di servizi