<Return[WXYZ]><Top>

WritePrivateProfileStruct

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

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

初期化ファイルの指定されたセクションの、指定されたキーにデータをコピーする。データをコピーするときチェックサムを計算し、データの最後に付加する。このチェックサムは、GetPrivateProfileStruct 関数がデータの整合性を保証するために使う。この関数は、16 ビット Windows アプリケーションとの互換性を保つために用意されているものである。Win32 アプリケーションでは、初期化情報をレジストリに格納する。

パラメータ
lpszSection
    データのコピー先のセクション名を表す、NULL で終わる文字列へのポインタを指定する。セクション名が存在しない場合は、この名前で新

    しいセクションが作成される。セクション名では大文字/小文字が区別されない。大文字と小文字を自由に組み合わせることができる。
lpszKey
    データに関連付けるキーの名前を表す、NULL で終わる文字列へのポインタを指定する。指定するキーの名前が lpszSection パラメータで

    指定するセクションに存在しない場合は、この名前で新しいキーが作成される。NULL を指定すると、セクションと、セクションに含まれるす

    べてのキーとデータが削除される。
lpStruct
    コピーするデータが入ったバッファへのポインタを指定する。NULL を指定すると、lpszKey パラメータで指定するキーが削除される。
uSizeStruct
    lpStruct が指すバッファのサイズをバイト単位で指定する。
szFile
    初期化ファイルの名前を表す、NULL で終わる文字列へのポインタを指定する。NULL を指定すると、指定した情報が WIN.INI ファイルにコピーされる。

戻り値
    初期化ファイルへのコピーが成功すると、0 以外の値が返る。
    関数が失敗した場合、または最後にアクセスがあったキャッシュ内の初期化ファイルをクリアした場合は、0 が返る。拡張エラー情報を取得

    するには、 関数を使う。

解説
    Windows 95 では、パフォーマンス向上のために WIN.INI がキャッシュに保持される。NULL を指定できる 3 つのパラメータ(lpszKey、

    lpStruct、szFile)のすべてに NULL を指定すると、キャッシュがフラッシュされる。キャッシュがフラッシュされると、フラッシュが成功したか

    どうかにかかわらず、FALSE が返る。
    初期化ファイルの各セクションは次の形式になる。
        [section]
        key=string
            :
            :
    szFile パラメータにファイル名だけを指定した場合、そのファイルが Windows ディレクトリで検索される。ファイルが存在しない場合は、

    Windows ディレクトリ内にその名前で新しいファイルが作成される。
    szFile パラメータにフルパスとファイル名を指定し、そのファイルが存在しない場合は、そのフルパスと名前で新しいファイルが作成される。指

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

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

        の場所でキーを探す。
    4.lpAppName パラメータで指定したセクション名が myfile.ini のサブキーになっている場合は、そのサブキーの下の名前付きの値が示すレ

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

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

        の下の名前なし("<No Name>")の値が示すレジストリ内の既定の場所でキーを探す。
    6.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 を起

    点とした場所を表す。