Win32 API 日本語リファレンス
ホーム › Security.Cryptography › NCryptOpenKeyFn

NCryptOpenKeyFn

コールバック

シグネチャ

HRESULT NCryptOpenKeyFn(
    NCRYPT_PROV_HANDLE hProvider,
    NCRYPT_KEY_HANDLE* phKey,
    LPWSTR pszKeyName,
    DWORD dwLegacyKeySpec,
    DWORD dwFlags
);

パラメーター

フィールド型説明
hProviderNCRYPT_PROV_HANDLEキーを開く対象となるキーストレージプロバイダーのハンドルです。
phKeyNCRYPT_KEY_HANDLE*キーハンドルを受け取る NCRYPT_KEY_HANDLE 変数へのポインターです。このハンドルの使用を終えたら、NCryptFreeObject 関数に渡して解放してください。
pszKeyNameLPWSTR取得するキーの名前を格納した、null で終わる Unicode 文字列へのポインターです。
dwLegacyKeySpecDWORD

キーの種類を指定するレガシー識別子です。次のいずれかの値を指定できます。

値 意味
AT_KEYEXCHANGE
キーはキー交換キーです。
AT_SIGNATURE
キーは署名キーです。
0
キーは上記のいずれの種類でもありません。
dwFlagsDWORD

関数の動作を変更するフラグです。0、または次の値のうち 1 つ以上の組み合わせを指定できます。

値 意味
NCRYPT_MACHINE_KEY_FLAG
ローカルコンピューターのキーを開きます。このフラグが指定されていない場合は、現在のユーザーのキーが開かれます。
NCRYPT_SILENT_FLAG
キーストレージプロバイダー (KSP) がユーザーインターフェイスを表示しないよう要求します。プロバイダーが動作するために UI を表示しなければならない場合、呼び出しは失敗し、KSP は最後のエラーとして NTE_SILENT_CONTEXT エラーコードを設定します。

公式ドキュメント

NCryptOpenKey 関数は、指定した CNG キーストレージプロバイダーに存在するキーを開きます。

戻り値

関数の成功または失敗を示すステータスコードを返します。

返される可能性のあるコードには、次のものが含まれます (ただしこれらに限定されません)。

戻り値 説明
ERROR_SUCCESS
関数は成功しました。
NTE_BAD_FLAGS
dwFlags パラメーターに無効な値が含まれています。
NTE_BAD_KEYSET
指定されたキーが見つかりませんでした。
NTE_INVALID_HANDLE
hProvider パラメーターが無効です。
NTE_INVALID_PARAMETER
1 つ以上のパラメーターが無効です。
NTE_NO_MEMORY
メモリの割り当てに失敗しました。

解説(Remarks)

サービスは、StartService 関数からこの関数を呼び出してはなりません。サービスが StartService 関数からこの関数を呼び出すと、デッドロックが発生し、サービスが応答しなくなることがあります。

パフォーマンス上の理由から、Microsoft のソフトウェアベースの KSP は、キーへのハンドルが開かれている間、秘密キーのマテリアルをローカル セキュリティ機関 (LSA) にキャッシュします。LSA は特権を持つシステムプロセスです。そのため、システムの管理者特権を持つユーザーでない限り、他のユーザーがこのキャッシュされたキーのコピーにアクセスすることはできません。この動作を構成によって変更することはできません。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)