Freigeben über


CryptContextAddRef-Funktion (wincrypt.h)

Wichtige Diese API ist veraltet. Neue und vorhandene Software sollten mit der Verwendung Kryptografie-APIs der nächsten Generation beginnen. Microsoft kann diese API in zukünftigen Versionen entfernen.
 
Die CryptContextAddRef--Funktion fügt der Verweisanzahl eines HCRYPTPROV-kryptografischen Dienstanbieters (CSP)-Handle hinzu. Diese Funktion sollte verwendet werden, wenn das CSP-Handle als Element einer an eine andere Funktion übergebenen Struktur enthalten ist. Die CryptReleaseContext--Funktion sollte aufgerufen werden, wenn der 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 CryptAcquireContexterstellt worden sein.

[in] pdwReserved

Reserviert für die zukünftige Verwendung und muss NULL-sein.

[in] dwFlags

Reserviert für die zukünftige Verwendung 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 null (FALSE). Rufen Sie für erweiterte Fehlerinformationen GetLastError-auf. Ein möglicher Fehlercode ist der folgende.

Rückgabecode Beschreibung
ERROR_INVALID_PARAMETER
Einer der Parameter enthält einen ungültigen Wert. Dies ist am häufigsten ein ungültiger Zeiger.

Bemerkungen

Diese Funktion erhöht die Verweisanzahl auf einem HCRYPTPROV- Handle, sodass mehrere Aufrufe an CryptReleaseContext erforderlich sind, um das Handle tatsächlich freizugeben.

Beispiele

Im folgenden Beispiel wird die Verweisanzahl für ein erworbenes 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

Anforderung Wert
mindestens unterstützte Client- Windows XP [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2003 [Nur Desktop-Apps]
Zielplattform- Fenster
Header- wincrypt.h
Library Advapi32.lib
DLL- Advapi32.dll

Siehe auch

CryptAcquireContext-

CryptReleaseContext-

Dienstanbieterfunktionen