Поделиться через


Функция 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 [только классические приложения]
целевая платформа Виндоус
заголовка wincrypt.h
библиотеки Advapi32.lib
DLL Advapi32.dll

См. также

CryptAcquireContext

CryptReleaseContext

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