Функция CryptContextAddRef (wincrypt.h)

Важно Этот API не рекомендуется использовать. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
 
Функция CryptContextAddRef добавляет один к количеству ссылокпоставщика служб шифрованияHCRYPTPROV (CSP). Эту функцию следует использовать, если дескриптор CSP включен в состав любой структуры, передаваемой другой функции. Функция CryptReleaseContext должна вызываться, если дескриптор CSP больше не нужен.

Синтаксис

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

Параметры

[in] hProv

Дескриптор HCRYPTPROV, для которого увеличивается число ссылок. Этот дескриптор должен быть уже создан с помощью CryptAcquireContext.

[in] pdwReserved

Зарезервировано для использования в будущем и должно иметь значение NULL.

[in] dwFlags

Зарезервировано для будущего использования и должно быть равно нулю.

Возвращаемое значение

Если функция выполнена успешно, возвращается ненулевое значение (TRUE).

Если функция завершается сбоем, возвращаемое значение равно нулю (FALSE). Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError. Ниже приведен один из возможных кодов ошибки.

Код возврата Описание
ERROR_INVALID_PARAMETER
Один из параметров содержит недопустимое значение. Чаще всего это недопустимый указатель.

Комментарии

Эта функция увеличивает количество ссылок на дескриптор HCRYPTPROV , чтобы для фактического освобождения дескриптора требовалось несколько вызовов CryptReleaseContext .

Примеры

В следующем примере увеличивается количество ссылок для полученного дескриптора CSP.

//--------------------------------------------------------------------
// 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.

Другой пример использования этой функции см. в разделе Пример программы C: использование CryptAcquireContext.

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header wincrypt.h
Библиотека Advapi32.lib
DLL Advapi32.dll

См. также раздел

CryptAcquireContext

CryptReleaseContext

Функции поставщика услуг