GetPrivateProfileSection 函数 (winbase.h)

检索初始化文件的指定节的所有键和值。

注意 此函数仅用于与为 Windows 编写的 16 位应用程序兼容。 应用程序应在注册表中存储初始化信息。
 

语法

DWORD GetPrivateProfileSection(
  [in]  LPCTSTR lpAppName,
  [out] LPTSTR  lpReturnedString,
  [in]  DWORD   nSize,
  [in]  LPCTSTR lpFileName
);

参数

[in] lpAppName

初始化文件中节的名称。

[out] lpReturnedString

指向缓冲区的指针,该缓冲区接收与命名节关联的键名称和值对。 缓冲区使用一个或多个以 null 结尾的字符串填充;最后一个字符串后跟第二个 null 字符。

[in] nSize

lpReturnedString 参数指向的缓冲区的大小(以字符为单位)。

最大配置文件部分大小为 32,767 个字符。

[in] lpFileName

初始化文件的名称。 如果此参数不包含文件的完整路径,系统会在 Windows 目录中搜索该文件。

返回值

返回值指定复制到缓冲区的字符数,不包括终止 null 字符。 如果缓冲区的大小不足以包含与命名节关联的所有键名称和值对,则返回值等于 nSize 减去 2。

注解

lpReturnedString 参数指向的缓冲区中的数据由一个或多个以 null 结尾的字符串组成,后跟一个最终的 null 字符。 每个字符串具有以下格式:

关键=字符串

GetPrivateProfileSection 函数不区分大小写;lpAppName 参数指向的字符串可以是大写字母和小写字母的组合。

此操作是原子的;当节的键名称和值对复制到 lpReturnedString 参数指向的缓冲区时,不允许对指定的初始化文件进行更新。

系统使用以下注册表项下定义的映射将大多数 .ini 文件引用映射到注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping

如果应用程序修改 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,前缀后面的文本相对于该键。
注释 (任何以分号) 开头的行将被去除,并且不会在 lpReturnnedString 缓冲区中返回。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

GetPrivateProfileSectionNames

GetProfileSection

WritePrivateProfileSection