CryptReleaseContext 鍵コンテナのハンドルの開放

Cの宣言:

BOOL CryptReleaseContext(HCRYPTPROV hProvider, DWORD Flags);

説明:

hProviderで指定した鍵コンテナのハンドルを開放する。

引数の意味は以下の通り。
hProvider 開放する鍵コンテナのハンドル
Flags 0でなければならない

Cのサンプル:

デフォルトのCSPのデフォルトの鍵コンテナの名前を取得し、表示する。デフォルトのCSPにデフォルトの鍵コンテナが存在しない場合、新規に鍵コンテナを作成する。
void DispProvName()
{
	HCRYPTPROV hProv;
	BOOL bResult;
	DWORD ErrorNo;
	char *CspName[1000];
	char *ContName[1000];
	DWORD CspNameLen = 1000;
	DWORD ContNameLen = 1000;

	/* デフォルト鍵コンテナの取得 */
	bResult = CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0);
	ErrorNo = GetLastError();

	/* 鍵コンテナが存在しないならば */
	if(!bResult && ErrorNo == NTE_BAD_KEYSET) {
		/* デフォルト鍵コンテナの生成 */
		bResult = CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET);
		ErrorNo = GetLastError();
	}

	/* 失敗? */
	if(!bResult) {
		printf("err(%08X).\n", ErrorNo);
		return;
	}

	/* CSP名および鍵コンテナ名を取得 */
	CryptGetProvParam(hProv, PP_NAME, (BYTE *)CspName, &CspNameLen, 0);
	CryptGetProvParam(hProv, PP_CONTAINER, (BYTE *)ContName, &ContNameLen, 0);

	/* CSP名および鍵コンテナ名を表示 */
	printf("CSP Name: %s\n", CspName);
	printf("Container Name: %s\n", ContName);

	/* 鍵コンテナの開放 */
	CryptReleaseContext(hProv, 0);
}
(original text:1998/12/28 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。