CryptContextAddRef-Funktion (wincrypt.h)

Wichtig Diese API ist veraltet. Neue und vorhandene Software sollte mit der Verwendung von Kryptografie-APIs der nächsten Generation beginnen. Microsoft kann diese API in zukünftigen Versionen entfernen.
 
Die CryptContextAddRef-Funktion fügt der Referenzanzahl eines HCRYPTPROV-CSP-Handles (Kryptografiedienstanbieter) eine hinzu. Diese Funktion sollte verwendet werden, wenn das CSP-Handle als Member einer an eine andere Funktion übergebenen Struktur enthalten ist. Die CryptReleaseContext-Funktion sollte aufgerufen werden, wenn das CSP-Handle nicht mehr benötigt wird.

Syntax

BOOL CryptContextAddRef(
  [in] HCRYPTPROV hProv,
  [in] DWORD      *pdwReserved,
  [in] DWORD      dwFlags
);

Parameter

[in] hProv

HCRYPTPROV-Handle , für das die Verweisanzahl erhöht wird. Dieses Handle muss bereits mit CryptAcquireContext erstellt worden sein.

[in] pdwReserved

Für die zukünftige Verwendung reserviert und muss NULL sein.

[in] dwFlags

Für die zukünftige Verwendung reserviert und muss null sein.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich null (TRUE).

Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (FALSE). Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten. Ein möglicher Fehlercode ist der folgende.

Rückgabecode Beschreibung
ERROR_INVALID_PARAMETER
Einer der Parameter enthält einen ungültigen Wert. Dies ist in den meisten Fällen ein ungültiger Zeiger.

Hinweise

Diese Funktion erhöht die Verweisanzahl für ein HCRYPTPROV-Handle , sodass mehrere Aufrufe von CryptReleaseContext erforderlich sind, um das Handle tatsächlich freizugeben.

Beispiele

Im folgenden Beispiel wird die Verweisanzahl für ein abgerufenes CSP-Handle erhöht.

//--------------------------------------------------------------------
// hCryptProv is a HCRYPTPROV variable that was previously acquired
// by using CryptAcquireContext or CryptAcquireCertificatePrivateKey.

if(CryptContextAddRef(
       hCryptProv, 
       NULL, 
       0)) 
{
    printf("CryptContextAddRef succeeded. \n");
}
else
{
   printf("Error during CryptContextAddRef!\n");
   exit(1);
}
//--------------------------------------------------------------------
//  The reference count on hCryptProv is now greater than one. The 
//  first call to CryptReleaseContext will not release the provider 
//  handle. A second call to CryptReleaseContext would be needed to 
//  release the context.

Ein weiteres Beispiel, das diese Funktion verwendet, finden Sie unter Beispiel-C-Programm: Verwenden von CryptAcquireContext.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wincrypt.h
Bibliothek Advapi32.lib
DLL Advapi32.dll

Weitere Informationen

CryptAcquireContext

CryptReleaseContext

Dienstanbieterfunktionen