CryptCoNtextAddRef 函式 (wincrypt.h)

重要 此 API 已被取代。 新的和現有的軟體應該開始使用 密碼編譯新一代 API。 Microsoft 可能會在未來的版本中移除此 API。
 
CryptCoNtextAddRef函式會將一個新增至HCRYPTPROV密碼編譯服務提供者參考計數, (CSP) 控制碼。 如果 CSP 控制碼包含在傳遞至另一個函式的任何結構成員,則應該使用此函式。 當不再需要 CSP 控制碼時,應該呼叫 CryptReleaseCoNtext 函式。

語法

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
標頭 wincrypt.h
程式庫 Advapi32.lib
Dll Advapi32.dll

另請參閱

CryptAcquireCoNtext

CryptReleaseCoNtext

服務提供者函式