RegQueryMultipleValuesA 関数 (winreg.h)
開いているレジストリ キーに関連付けられている値名の一覧の型とデータを取得します。
構文
LSTATUS RegQueryMultipleValuesA(
[in] HKEY hKey,
[out] PVALENTA val_list,
[in] DWORD num_vals,
[out, optional] LPSTR lpValueBuf,
[in, out, optional] LPDWORD ldwTotsize
);
パラメーター
[in] hKey
開いているレジストリ キーへのハンドル。 キーは、KEY_QUERY_VALUEアクセス権を使用して開かれている必要があります。 詳細については、「
このハンドルは、 RegCreateKeyEx、 RegCreateKeyTransacted、 RegOpenKeyEx、または RegOpenKeyTransacted 関数によって返されます。 また、次のいずれかの 定義済みキーを指定することもできます。
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_CONFIG
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_PERFORMANCE_DATA
- HKEY_USERS
[out] val_list
の配列へのポインター
1 つ以上の値エントリを記述する VALENT 構造体。 入力時に、各構造体の ve_valuename メンバーには、取得する値の名前へのポインターが含まれている必要があります。 指定した値のいずれかが指定されたキーに存在しない場合、関数は失敗します。
関数が成功した場合、配列の各要素には、指定された値の情報が含まれます。
[in] num_vals
val_list配列内の要素の数。
[out, optional] lpValueBuf
バッファーへのポインター。 関数が成功した場合、バッファーは各値のデータを受け取ります。
lpValueBuf が NULL の場合、ldwTotsize パラメーターが指す値は 0 である必要があります。その場合、関数は ERROR_MORE_DATAを返し、ldwTotsize はバッファーの必要なサイズをバイト単位で受け取ります。
[in, out, optional] ldwTotsize
lpValueBuf パラメーターによって指されるバッファーのサイズをバイト単位で指定する変数へのポインター。 関数が成功すると、 ldwTotsize はバッファーにコピーされたバイト数を受け取ります。 バッファーが小さすぎるために関数が失敗した場合、 ldwTotsize は必要なサイズ (バイト単位) を受け取ります。
戻り値
関数が成功した場合、戻り値は ERROR_SUCCESS です。
関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。
リターン コード | 説明 |
---|---|
|
RegQueryMultipleValues は、動的キーのプロバイダーをインスタンス化またはアクセスできません。 |
|
lpValueBuf が指すバッファーが小さすぎます。 この場合、 ldwTotsize は必要なバッファー サイズを受け取ります。 |
|
要求されたデータの合計サイズ ( val_list 配列のサイズ + ldwTotSize) は、システム制限の 1 MB を超えています。 |
解説
RegQueryMultipleValues 関数を使用すると、アプリケーションは静的キーまたは動的キーの 1 つ以上の値に対してクエリを実行できます。 ターゲット キーが静的キーの場合、システムはアトミックな方法ですべての値を提供します。 過剰なシリアル化を防ぐために、関数によって返される集計データは 1 MB を超えることはできません。
ターゲット キーが動的キーの場合、プロバイダーはすべての値をアトミックな方法で提供する必要があります。 つまり、プロバイダーは結果バッファーを同期的に入力する必要があり、過剰なシリアル化を回避しながら、バッファー内のすべての値の一貫性のあるビューを提供します。 プロバイダーは、この関数のアトミック呼び出し中に最大 1 MB の合計出力データを提供できます。
RegQueryMultipleValues はリモートでサポートされています。つまり、関数に渡される hKey パラメーターは、リモート コンピューターを参照できます。
注意
winreg.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして RegQueryMultipleValues を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winreg.h (Windows.h を含む) |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |