CryptDestroyKey 関数 (wincrypt.h)
ハンドルがセッション キー、または CryptImportKey を介して暗号化サービス プロバイダー (CSP) にインポートされた公開キーを参照している場合、この関数はキーを破棄し、キーが使用したメモリを解放します。 多くの CSP は、キーを解放する前にキーが保持されていたメモリを上書きします。 ただし、基になる 公開キーと秘密キーのペア は、この関数によって破棄されません。 ハンドルのみが破棄されます。
構文
BOOL CryptDestroyKey(
[in] HCRYPTKEY hKey
);
パラメーター
[in] hKey
破棄するキーのハンドル。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 拡張エラー情報については、 GetLastError を呼び出します。
"NTE" の前に表示されるエラー コードは、使用されている特定の CSP によって生成されます。 次の表に、考えられるエラー コードをいくつか示します。
リターン コード | 説明 |
---|---|
|
hKey で指定されたキー オブジェクトは現在使用されており、破棄できません。 |
|
hKey パラメーターは、無効なハンドルを指定します。 |
|
hKey パラメーターに無効な値が含まれています。 |
|
hKey パラメーターには、キーへの有効なハンドルが含まれていません。 |
|
キーの作成時に指定された CSP コンテキストが見つかりません。 |
解説
キーは、オペレーティング システムのメモリ領域と CSP のメモリ領域の両方を占有します。 一部の CSP は、メモリ リソースが限られているハードウェアに実装されています。 アプリケーションは、 CryptDestroyKey 関数を使用してキーの使用が完了したら、すべてのキーを破棄する必要があります。
特定の CSP を使用して作成またはインポートされたすべてのキー ハンドルは、その CSP ハンドルが CryptReleaseContext 関数で解放される前に破棄する必要があります。
例
CryptDestroyKey 関数を使用する例については、「C プログラムの例: セッション キーの作成とハッシュ」を参照してください。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |