CryptContextAddRef 関数 (wincrypt.h)

重要 この API は非推奨です。 新規および既存のソフトウェアでは、Cryptography Next Generation API の使用を開始する必要があります。 Microsoft は、今後のリリースでこの API を削除する可能性があります。
 
CryptContextAddRef 関数は、HCRYPTPROV暗号化サービス プロバイダー (CSP) ハンドルの 参照カウント に 1 つ追加します。 この関数は、CSP ハンドルが別の関数に渡される構造体のメンバーとして含まれている場合に使用する必要があります。 CSP ハンドルが不要になったら、CryptReleaseContext 関数を呼び出す必要があります。

構文

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

パラメーター

[in] hProv

参照カウント がインクリメントされる HCRYPTPROV ハンドルを します。 このハンドルは、CryptAcquireContextを使用して既に作成されている必要があります。

[in] pdwReserved

将来使用するために予約されており、NULLする必要があります。

[in] dwFlags

将来使用するために予約されており、ゼロにする必要があります。

戻り値

関数が成功した場合、戻り値は 0 以外 (TRUE) です。

関数が失敗した場合、戻り値は 0 (FALSE) です。 拡張エラー情報については、GetLastError呼び出します。 考えられるエラー コードの 1 つは次のとおりです。

リターン コード 形容
ERROR_INVALID_PARAMETER
パラメーターの 1 つに無効な値が含まれています。 これは、多くの場合、無効なポインターです。

備考

この関数は、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

サービス プロバイダー関数の