GetProfileSection函数检索WIN.INI文件的指定部分的所有键和值。此函数用于与16位基于Windows的应用程序兼容。基于Win32的应用程序应该将初始化信息存储在注册表中。
Windows 95:
指定的配置文件部分不能超过32K。
Windows NT:
指定的配置文件部分没有大小限制。
Points to a buffer that receives the keys and values associated with the named section.
LPCTSTR 【lpAppName】, | //部分名称的地址 |
LPTSTR 【lpReturnedString】, | //返回缓冲区的地址 |
DWORD 【服务提供商】 | //返回缓冲区大小 |
); |
参数
【lpAppName】
指向包含WIN.INI文件中的段名称的以null结尾的字符串。
【lpReturnedString】
指向缓冲区,接收与命名部分相关联的键和值。缓冲区填充一个或多个以null结尾的字符串;最后一个字符串后跟一个第二个空字符。
【服务提供商】
指定由【lpReturnedString】参数指向的缓冲区的大小(以字符为单位)。
Windows 95:
最大缓冲区大小为32,767个字符。
Windows NT:
没有最大缓冲区大小。
返回值
返回值指定复制到指定缓冲区的字符数,不包括终止空字符。如果缓冲区不够大,不足以包含与命名段相关联的所有键和值,则返回值等于【服务提供商】减去2的长度。
备注
返回的键和值的格式是一个或多个以null结尾的字符串,后跟一个最终的空字符。每个字符串具有以下形式:
【键】=【串】
GetProfileSection功能不区分大小写;字符串可以是大写和小写字母的组合。
这个操作是原子的当该部分的键和值被复制到缓冲区时,不允许对WIN.INI文件进行更新。
Windows NT:
对配置文件功能的调用可能会映射到注册表而不是初始化文件。当在注册表中的以下键下指定初始化文件和部分时,会发生此映射:
HKEY_LOCAL_MACHINE\软件\微软\
Windows NT\CurrentVersion\IniFileMapping
当操作已被映射时,GetProfileSection函数从注册表中检索信息,而不是从初始化文件中检索;存储位置的变化对功能的行为没有影响。
Win32配置文件功能(Get/WriteProfile*,Get/WritePrivateProfile*)使用以下步骤来定位初始化信息:
1.在注册表中的初始化文件的名称,说myfile.ini,在IniFileMapping下:
HKEY_LOCAL_MACHINE\软件\微软\
Windows NT\CurrentVersion\IniFileMapping\myfile.ini
2.查看【lpAppName】指定的部分名称。这将是myfile.ini下的命名值,或myfile.ini的子项,否则将不存在。
3.如果由【lpAppName】指定的段名称是myfile.ini下的一个命名值,则该值指定注册表中的哪个位置可以找到该部分的键。
4.如果由【lpAppName】指定的部分名称是myfile.ini的子项,则该子项下的命名值将指定注册表中的哪个部分的键。如果您要查找的密钥不存在作为命名值,那么将会有一个未命名的值(显示为“< No Name >”),指定注册表中的默认位置,您将在其中找到密钥。
5.如果由【lpAppName】指定的部分名称不存在作为命名值或myfile.ini下的子项,那么在我的文件下将会有一个未命名的值(如“< No Name >”)) .ini,它指定注册表中的默认位置,您可以在其中找到该部分的键。
6.如果没有myfile.ini的子项,或者没有条目名称的条目,那么在磁盘上查找实际的myfile.ini并读取其内容。
当查看注册表中指定其他注册表位置的值时,有几个前缀可以更改ini文件映射的行为:
! - 这个字符强制所有的写入都到磁盘上的注册表和.INI文件。
# - 当新用户在安装后首次登录时,此字符会使注册表值设置为Windows 3.1 .INI文件中的值。
@ - 如果在注册表中找不到所请求的数据,则此字符可防止任何读取到磁盘上的.INI文件。
USR: - 此前缀代表HKEY_CURRENT_USER,前缀后面的文本与该键相关。
SYS: - 此前缀代表HKEY_LOCAL_MACHINE \\ SOFTWARE,前缀后的文本与该键相关。
也可以看看