CryptDestroyKey 関数 (wincrypt.h)

大事な この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
 
CryptDestroyKey 関数は、hKey パラメーターによって参照されるハンドルを解放します。 キー ハンドルが解放されると、キー ハンドルは無効になり、再度使用することはできません。

ハンドルがセッション キー、または CryptImportKey を介して暗号化サービス プロバイダー (CSP) にインポートされた公開キーを参照している場合、この関数はキーを破棄し、キーが使用したメモリを解放します。 多くの CSP は、キーを解放する前にキーが保持されていたメモリを上書きします。 ただし、基になる 公開キーと秘密キーのペア は、この関数によって破棄されません。 ハンドルのみが破棄されます。

構文

BOOL CryptDestroyKey(
  [in] HCRYPTKEY hKey
);

パラメーター

[in] hKey

破棄するキーのハンドル。

戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 拡張エラー情報については、 GetLastError を呼び出します。

"NTE" の前に表示されるエラー コードは、使用されている特定の CSP によって生成されます。 次の表に、考えられるエラー コードをいくつか示します。

リターン コード 説明
ERROR_BUSY
hKey で指定されたキー オブジェクトは現在使用されており、破棄できません。
ERROR_INVALID_HANDLE
hKey パラメーターは、無効なハンドルを指定します。
ERROR_INVALID_PARAMETER
hKey パラメーターに無効な値が含まれています。
NTE_BAD_KEY
hKey パラメーターには、キーへの有効なハンドルが含まれていません。
NTE_BAD_UID
キーの作成時に指定された CSP コンテキストが見つかりません。

解説

キーは、オペレーティング システムのメモリ領域と CSP のメモリ領域の両方を占有します。 一部の CSP は、メモリ リソースが限られているハードウェアに実装されています。 アプリケーションは、 CryptDestroyKey 関数を使用してキーの使用が完了したら、すべてのキーを破棄する必要があります。

特定の CSP を使用して作成またはインポートされたすべてのキー ハンドルは、その CSP ハンドルが CryptReleaseContext 関数で解放される前に破棄する必要があります。

CryptDestroyKey 関数を使用する例については、「C プログラムの例: セッション キーの作成とハッシュ」を参照してください。

要件

   
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー wincrypt.h
Library Advapi32.lib
[DLL] Advapi32.dll

関連項目

CryptDeriveKey

CryptGenKey

CryptGetUserKey

CryptImportKey

キー生成と Exchange 関数