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

NCryptEnumKeysFn

コールバック

シグネチャ

HRESULT NCryptEnumKeysFn(
    NCRYPT_PROV_HANDLE hProvider,
    LPWSTR pszScope,
    NCryptKeyName** ppKeyName,
    void** ppEnumState,
    DWORD dwFlags
);

パラメーター

フィールド型説明
hProviderNCRYPT_PROV_HANDLEキーを列挙する対象のキーストレージプロバイダーのハンドルです。このハンドルは NCryptOpenStorageProvider 関数で取得します。
pszScopeLPWSTRこのパラメーターは現在使用されていません。NULL を指定する必要があります。
ppKeyNameNCryptKeyName**取得したキーの名前を受け取る NCryptKeyName 構造体へのポインターのアドレスです。アプリケーションがこのメモリの使用を終えたら、NCryptFreeBuffer 関数を呼び出して解放してください。
ppEnumStatevoid**

この関数の以降の呼び出しで使用される列挙の状態情報を受け取る VOID ポインターのアドレスです。この情報はキーストレージプロバイダーにとってのみ意味を持ち、呼び出し側からは内容が不透明です。キーストレージプロバイダーはこの情報を使用して、列挙内の次の項目を判断します。このパラメーターが指す変数が NULL の場合、列挙は先頭から開始されます。

このメモリが不要になったら、このポインターを NCryptFreeBuffer 関数に渡して解放する必要があります。

dwFlagsDWORD

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

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

公式ドキュメント

NCryptEnumKeys 関数は、プロバイダーに格納されているキーの名前を取得します。

戻り値

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

返される可能性のあるコードには、次のものがありますが、これらに限定されません。

戻り値 説明
ERROR_SUCCESS
関数は成功しました。
NTE_BAD_FLAGS
dwFlags パラメーターに無効な値が含まれています。
NTE_INVALID_HANDLE
hProvider パラメーターが無効です。
NTE_INVALID_PARAMETER
1 つ以上のパラメーターが無効です。
NTE_NO_MEMORY
メモリの割り当てに失敗しました。
NTE_NO_MORE_ITEMS
列挙の終端に達しました。
NTE_SILENT_CONTEXT
dwFlags パラメーターに NCRYPT_SILENT_FLAG フラグが指定されていますが、列挙対象のキーはユーザーの操作を必要とします。

解説(Remarks)

この関数は、呼び出しごとに 1 項目だけを取得します。列挙の状態は ppEnumState パラメーターが指す変数に格納されるため、この関数の呼び出し間で保持する必要があります。プロバイダーに格納されている最後のキーを取得した後、次にこの関数を呼び出すと NTE_NO_MORE_ITEMS が返されます。列挙を最初からやり直すには、ppEnumState パラメーターが指す変数を NULL に設定し、ppKeyName パラメーターが指すメモリが NULL でなければ解放してから、この関数を再度呼び出します。

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

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