<Return[G]><Top>

GetPrivateProfileStruct

Declare Function Api_GetPrivateProfileStruct& Lib "kernel32" Alias "GetPrivateProfileStructA" (ByVal lpszSection$, ByVal lpszKey$, lpStruct As Any, ByVal uSizeStruct&, ByVal szFile$)

Declare Function GetPrivateProfileStruct Lib "kernel32" Alias "GetPrivateProfileStructA" (ByVal lpszSection As String, ByVal lpszKey As String, lpStruct As Any, ByVal uSizeStruct As Long, ByVal szFile As String) As Long

初期化ファイルの指定されたセクションにある、指定されたキーのデータを取得する。データを取得するとき、そのデータのチェックサムを計算し、WritePrivateProfileStruct 関数でそのデータをファイルに追加したときに計算されたチェックサムと比較する。
Win32 アプリケーションでは、初期化情報をレジストリに登録する。

パラメータ
lpszSection
    初期化ファイルのセクション名を表す NULL で終わる文字列へのポインタを指定する。
lpszKey
    データを取得するキーの名前を表す NULL で終わる文字列へのポインタを指定する。
lpStruct
    指定したファイル、セクション、キーの名前に対応するデータを受け取るバッファへのポインタを指定する。
uSizeStruct
    lpStruct が指すバッファのサイズをバイト単位で指定する。
szFile
    初期化ファイルの名前を表す NULL で終わる文字列へのポインタを指定する。ファイルのフルパスを指定しない場合、ファイルが Windows

    ディレクトリ内で検索される。
 

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。

解説
    初期化ファイルの各セクションは次の形式でなければならない。
    [section]
    key=data
    プライベートプロファイル関数の呼び出しが、指定する初期化ファイルではなくレジストリにマップされることがある。このマッピングが行われる

    のは、アプリケーションで CONTROL.INI、SYSTEM.INI、WINFILE.INI など、システム構成要素の初期化ファイルを変更する場合で

    ある。その場合、GetPrivateProfileStruct 関数は初期化ファイルではなくレジストリから情報を取得する。格納場所が変更されても関数の

    動作に影響しない。
    Win32 プロファイル関数(Get/WriteProfile*、Get/WritePrivateProfile*) は、次の手順で初期化情報の場所を探す。
    初期化ファイルの名前(myfile.ini など)がレジストリの IniFileMapping の下に登録されているかどうか調べる。
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping\myfile.ini
    lpAppName で指定されたセクション名を探します。セクション名が登録されているとすれば、myfile.ini の下の名前付きの値またはサブキー

    になる。
    lpAppName で指定されたセクション名が myfile.ini の下の名前付きの値になっている場合は、その値が示すレジストリ内の場所でキーを

    探す。
    lpAppName で指定したセクション名が myfile.ini のサブキーになっている場合は、そのサブキーの下の名前付きの値が示すレジストリ内の

    場所でキーを探す。探しているキーが名前付きの値として存在しない場合は、名前なし("<No Name>")の値が示す既定の場所でキーを

    探す。
    lpAppName で指定したセクション名が myfile.ini の下の名前付きの値としてもサブキーとしても存在しない場合は、myfile.ini の下の名前

    なし("<No Name>")の値が示すレジストリ内の既定の場所でキーを探す。
    myfile.ini にサブキーが存在しない場合、およびセクション名が登録されていない場合は、ディスク上で実際の myfile.ini を探し、その内容

    を読み取る。
    レジストリ内のほかの場所を示すレジストリ内の値では、ini ファイルからのマッピングの動作を変更するいくつかのプリフィックスが使われる。
    ! - すべてのデータがレジストリとディスク上の .INI ファイルの両方に書き込まれる。
    # - セットアップ後に新しいユーザーが初めてログオンするとき、レジストリ値が Windows 3.1 の .INI ファイルの値に設定される。
    @ - 要求されたデータがレジストリで見つからない場合にディスク上の .INI ファイルから読み取りを行わない。
    USR: - HKEY_CURRENT_USER を表す。この文字に続く文字列は、HKEY_CURRENT_USER キーを起点とした場所を表す。
    SYS: - HKEY_LOCAL_MACHINE\SOFTWARE を表す。この文字に続く文字列は、HKEY_LOCAL_MACHINE\SOFTWARE を起

    点とした場所を表す。