次の方法で共有


GetPrivateProfileStringW 関数 (winbase.h)

初期化ファイル内の指定したセクションから文字列を取得します。

この関数は、16 ビット Windows ベースのアプリケーションとの互換性のためにのみ提供されます。 アプリケーションは、レジストリに初期化情報を格納する必要があります。
 

構文

DWORD GetPrivateProfileStringW(
  [in]  LPCWSTR lpAppName,
  [in]  LPCWSTR lpKeyName,
  [in]  LPCWSTR lpDefault,
  [out] LPWSTR  lpReturnedString,
  [in]  DWORD   nSize,
  [in]  LPCWSTR lpFileName
);

パラメーター

[in] lpAppName

キー名を含むセクションの名前。 このパラメーターが NULL場合、GetPrivateProfileString 関数は、指定されたバッファーにファイル内のすべてのセクション名をコピーします。

[in] lpKeyName

関連付けられた文字列を取得するキーの名前。 このパラメーターが NULL場合、lpAppName パラメーターで指定されたセクション内のすべてのキー名が、lpReturnedString パラメーターで指定されたバッファーにコピーされます。

[in] lpDefault

既定の文字列。 初期化ファイルに lpKeyName キーが見つからない場合は、GetPrivateProfileString 、既定の文字列を lpReturnedString バッファーにコピーします。

このパラメーターが NULL場合、既定値は空の文字列 "" です。

末尾に空白文字を含む既定の文字列を指定しないでください。 この関数は、末尾の空白を除去するために、lpReturnedString バッファーに null 文字を挿入します。

[out] lpReturnedString

取得した文字列を受け取るバッファーへのポインター。

[in] nSize

lpReturnedString パラメーターが指すバッファーのサイズ (文字単位)。

[in] lpFileName

初期化ファイルの名前。 このパラメーターにファイルへの完全なパスが含まれていない場合、システムは Windows ディレクトリ内のファイルを検索します。

戻り値

戻り値は、バッファーにコピーされた文字数であり、終端 null 文字は含まれません。

lpAppName と lpKeyName どちらも NULL されておらず、指定された宛先バッファーが小さすぎて要求された文字列を保持できなければ、文字列は切り捨てられ、その後に null 文字が続き、戻り値は nSize から 1 を引いた と等しくなります。

lpAppName または lpKeyName が NULL され、指定されたコピー先バッファーが小さすぎてすべての文字列を保持できなければ、最後の文字列は切り捨てられ、その後に 2 つの null 文字が続きます。 この場合、戻り値は nSize 2 引いた値と等しくなります。

lpFileName で指定 初期化ファイルが見つからない場合、または無効な値が含まれている場合、この関数は値 '0x2' (ファイルが見つかりません) errorno を設定します。 拡張エラー情報を取得するには、GetLastError呼び出します。

備考

GetPrivateProfileString 関数は、指定された初期化ファイルで、lpAppName パラメーターで指定されたセクション見出しの下にある lpKeyName パラメーターで指定された名前と一致するキーを検索します。 キーが見つかると、関数は対応する文字列をバッファーにコピーします。 キーが存在しない場合、この関数は、lpDefault パラメーターで指定された既定の文字列をコピーします。 初期化ファイルのセクションは、次の形式である必要があります。

[section]
key=string
      .
      .
      .

lpAppName が NULL場合、GetPrivateProfileString 指定したファイル内のすべてのセクション名が指定されたバッファーにコピーされます。 lpKeyName が NULL場合、関数は指定されたセクション内のすべてのキー名を指定されたバッファーにコピーします。 アプリケーションでは、このメソッドを使用して、ファイル内のすべてのセクションとキーを列挙できます。 どちらの場合も、各文字列の後に null 文字が続き、最後の文字列の後に 2 番目の null 文字が続きます。 指定された宛先バッファーが小さすぎてすべての文字列を保持できなければ、最後の文字列は切り捨てられ、その後に 2 null 文字が続きます。

lpKeyName に関連付けられている文字列が単一引用符または二重引用符で囲まれている場合、GetPrivateProfileString 関数が文字列を取得すると、マークは破棄されます。

GetPrivateProfileString 関数では大文字と小文字は区別されません。文字列は、大文字と小文字の組み合わせにすることができます。

Win.ini ファイルから文字列を取得するには、GetProfileString 関数を使用します。

システムは、microsoftWindows NTCurrentVersionIniFileMappingHKEY_LOCAL_MACHINESOFTWARE で定義されているマッピングを使用して、ほとんどの .ini ファイル参照をレジストリにマップします。

このマッピングは、アプリケーションがシステム コンポーネントの初期化ファイル (Control.ini、System.ini、Winfile.iniなど) を変更する場合に発生する可能性があります。 このような場合、関数は初期化ファイルからではなく、レジストリから情報を取得します。ストレージの場所の変更は、関数の動作には影響しません。

プロファイル関数では、次の手順を使用して初期化情報を検索します。

  1. IniFileMapping キーの下にある初期化ファイルの名前をレジストリで探します。
  2. lpAppNameで指定 セクション名を探します。 これは、初期化ファイルの名前を持つキーの下の名前付き値、またはこの名前のサブキーになります。または、名前が値またはサブキーとして存在しません。
  3. lpAppName で指定されたセクション名が名前付き値の場合、その値はレジストリ内のセクションのキーを検索する場所を指定します。
  4. lpAppName で指定されたセクション名がサブキーの場合、そのサブキーの下の名前付き値は、レジストリ内のどこにセクションのキーを見つけるかを指定します。 探しているキーが名前付き値として存在しない場合は、キーを検索するレジストリの既定の場所を指定する名前のない値 (<名前なし>と表示されます)。
  5. lpAppName で指定されたセクション名が名前付き値またはサブキーとして存在しない場合は、名前のない値 (<名前なし>として表示) があり、この値は、セクションのキーを検索するレジストリ内の既定の場所を指定します。
  6. セクション名のサブキーまたはエントリがない場合は、ディスク上の実際の初期化ファイルを探し、その内容を読み取ります。
他のレジストリの場所を指定するレジストリ内の値を見ると、.ini ファイル マッピングの動作を変更するプレフィックスがいくつかあります。
  • ! - この文字により、すべての書き込みがレジストリとディスク上の .ini ファイルの両方に強制的に移動します。
  • # - この文字により、新しいユーザーがセットアップ後に初めてログインしたときに、Windows 3.1 .ini ファイルの値にレジストリ値が設定されます。
  • @ - この文字は、要求されたデータがレジストリに見つからない場合に、ディスク上の .ini ファイルへの読み取りを禁止します。
  • USR: - このプレフィックスは HKEY_CURRENT_USERを表し、プレフィックスの後のテキストはそのキーに対して相対的です。
  • SYS: - このプレフィックスは HKEY_LOCAL_MACHINE\SOFTWAREを表し、プレフィックスの後のテキストはそのキーに対して相対的です。

次の例では、GetPrivateProfileStringの使用方法を示します。

// Gets a profile string called "Preferred line" and converts it to an int.
GetPrivateProfileString (
      "Preference",
      "Preferred Line",
      gszNULL, 
      szBuffer,
      MAXBUFSIZE,
      gszINIfilename
);

// if szBuffer is not empty.
if ( lstrcmp ( gszNULL, szBuffer ) )
{
      dwPreferredPLID = (DWORD) atoi( szBuffer );	
}
else	
{
      dwPreferredPLID = (DWORD) -1;
}

手記

winbase.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetPrivateProfileString を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winbase.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

GetProfileString の

WritePrivateProfileString の