<Return[R]><Top>

RegQueryMultipleValues

Declare Function Api_RegQueryMultipleValues& Lib "advapi32" Alias "RegQueryMultipleValuesA" (ByVal hKey&, ByRef val_list As VALENT, ByVal num_vals&, ByVal lpValueBuf$, ByRef ldwTotsize&)

Declare Function RegQueryMultipleValues Lib "advapi32" Alias "RegQueryMultipleValuesA" (ByVal hKey As Long, ByRef val_list As VALENT, ByVal num_vals As Long, ByVal lpValueBuf As String, ByRef ldwTotsize As Long) As Long

開いているレジストリキーに対応する値名のリストのタイプとデータを取得する。

パラメータ
hKey
    現在開いているキーを指定する。代わりに、あらかじめ定義されている次の予約済みハンドルのいずれかを指定することもできる。
    HKEY_CLASSES_ROOT
    HKEY_CURRENT_CONFIG
    HKEY_CURRENT_USER
    HKEY_LOCAL_MACHINE
    HKEY_USERS
    Windows NT/2000:HKEY_PERFORMANCE_DATA も指定できる。
    Windows 95/98:HKEY_DYN_DATA も指定できる。
val_list
    VALENT 構造体の配列のアドレスを指定する。VALENT 構造体は、レジストリキーの値を 1 つ以上記述する。各構造体の

    ve_valuename メンバを、取得する値の名前へのポインタに設定しておかなくてはならない。hKey パラメータで指定するキーに val_list パラ

    メータで指定する値が存在しない場合は、関数は失敗する。
    関数が成功すると、指定した値の情報が配列の各要素に入る。
num_vals
    val_list パラメータが指す配列の要素の数を指定する。
lpValueBuf
    バッファへのポインタを指定する。関数が成功すると、このバッファにそれぞれの値のデータが入る。
    NULL を指定すると、関数は成功時の戻り値を返し、バッファに必要なサイズ(バイト数)が ldwTotsize パラメータに入る。
ldwTotsize
    lpValueBuf パラメータが指すバッファのサイズを、バイト単位で示す値へのポインタを指定する。関数が成功すると、バッファにコピーされた

    バイト数が ldwTotsize パラメータに入る。バッファが小さすぎたために関数が失敗した場合は、必要なサイズ(バイト数)が入る。

戻り値
    関数が成功すると、ERROR_SUCCESS が返る。
    関数が失敗すると、次のエラーコードのいずれかが返る。

    値                                                  

意味                                                                                                                      

    ERROR_CANTREAD

 

RegQueryMultipleValues 関数は、動的キーのプロバイダをインスタンス化することも、そのプロバイダにアクセスすることもできない。

    ERROR_MORE_DATA

 

lpValueBuf パラメータが指すバッファが小さすぎる。必要なバッファサイズが ldwTotsize パラメータに入っている。

    ERROR_TRANSFER_TOO_LONG

 

要求されたデータのサイズ(val_list 配列 + ldwTotSize のサイズ)がシステムの上限である 1MB を超える。

 

解説
    RegQueryMultipleValues 関数を使うと、静的キーまたは動的キーの 1 つ以上の値を調べることができる。調査対象のキーが静的キーの

    場合、この関数の操作は原子性を持ち、すべての値を取得するまで他の操作ができない。過度の直列化を避けるため、関数が返す集合

    データは 1MB を超えることができないようになっている。
    調査対象のキーが動的キーの場合、プロバイダはすべての値を、原子性を保証しながら提供しなければならない。つまり、プロバイダは過

    度の直列化を避ける一方で、バッファへの結果の格納を同期化させ、バッファ内のすべての値が一貫するようにしなければならない。
    RegQueryMultipleValues 関数は、リモート操作をサポートする。そのため、パラメータ hKey パラメータにはリモートコンピュータ上のハンド

    ルを指定できる。