NCryptEnumKeysFn
コールバックシグネチャ
HRESULT NCryptEnumKeysFn(
NCRYPT_PROV_HANDLE hProvider,
LPWSTR pszScope,
NCryptKeyName** ppKeyName,
void** ppEnumState,
DWORD dwFlags
);パラメーター
| フィールド | 型 | 説明 | ||||||
|---|---|---|---|---|---|---|---|---|
| hProvider | NCRYPT_PROV_HANDLE | キーを列挙する対象のキーストレージプロバイダーのハンドルです。このハンドルは NCryptOpenStorageProvider 関数で取得します。 | ||||||
| pszScope | LPWSTR | このパラメーターは現在使用されていません。NULL を指定する必要があります。 | ||||||
| ppKeyName | NCryptKeyName** | 取得したキーの名前を受け取る NCryptKeyName 構造体へのポインターのアドレスです。アプリケーションがこのメモリの使用を終えたら、NCryptFreeBuffer 関数を呼び出して解放してください。 | ||||||
| ppEnumState | void** | この関数の以降の呼び出しで使用される列挙の状態情報を受け取る VOID ポインターのアドレスです。この情報はキーストレージプロバイダーにとってのみ意味を持ち、呼び出し側からは内容が不透明です。キーストレージプロバイダーはこの情報を使用して、列挙内の次の項目を判断します。このパラメーターが指す変数が NULL の場合、列挙は先頭から開始されます。 このメモリが不要になったら、このポインターを NCryptFreeBuffer 関数に渡して解放する必要があります。 | ||||||
| dwFlags | DWORD | 関数の動作を変更するフラグです。0 を指定するか、次の値のうち 1 つ以上を組み合わせて指定できます。
|
公式ドキュメント
NCryptEnumKeys 関数は、プロバイダーに格納されているキーの名前を取得します。
戻り値
関数の成功または失敗を示すステータスコードを返します。
返される可能性のあるコードには、次のものがありますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| 関数は成功しました。 | |
| dwFlags パラメーターに無効な値が含まれています。 | |
| hProvider パラメーターが無効です。 | |
| 1 つ以上のパラメーターが無効です。 | |
| メモリの割り当てに失敗しました。 | |
| 列挙の終端に達しました。 | |
| dwFlags パラメーターに NCRYPT_SILENT_FLAG フラグが指定されていますが、列挙対象のキーはユーザーの操作を必要とします。 |
解説(Remarks)
この関数は、呼び出しごとに 1 項目だけを取得します。列挙の状態は ppEnumState パラメーターが指す変数に格納されるため、この関数の呼び出し間で保持する必要があります。プロバイダーに格納されている最後のキーを取得した後、次にこの関数を呼び出すと NTE_NO_MORE_ITEMS が返されます。列挙を最初からやり直すには、ppEnumState パラメーターが指す変数を NULL に設定し、ppKeyName パラメーターが指すメモリが NULL でなければ解放してから、この関数を再度呼び出します。
サービスは、この関数を StartService 関数から呼び出してはなりません。サービスが StartService 関数からこの関数を呼び出すと、デッドロックが発生し、サービスが応答しなくなる場合があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)