WritePrivateProfileStructW 函数 (winbase.h)

将数据复制到初始化文件的指定节中的密钥中。 复制数据时,该函数将计算校验和并将其追加到数据末尾。 GetPrivateProfileStruct 函数使用校验和来确保数据的完整性。

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

语法

BOOL WritePrivateProfileStructW(
  [in] LPCWSTR lpszSection,
  [in] LPCWSTR lpszKey,
  [in] LPVOID  lpStruct,
  [in] UINT    uSizeStruct,
  [in] LPCWSTR szFile
);

参数

[in] lpszSection

要向其复制结构数据的节的名称。 如果该节不存在,则会创建它。 节的名称与大小写无关。

[in] lpszKey

要与结构关联的键的名称。 如果指定节中不存在该键,则会创建它。 如果此参数 NULL,则会删除整个部分(包括节中的所有键和条目)。

[in] lpStruct

要复制的数据。 如果此参数 NULL,则会删除密钥。

[in] uSizeStruct

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

[in] szFile

初始化文件的名称。 如果此参数 NULL,则会将信息复制到 Win.ini 文件中。

如果文件是使用 Unicode 字符创建的,该函数会将 Unicode 字符写入文件。 否则,该函数将写入 ANSI 字符。

返回值

如果函数成功将结构复制到初始化文件,则返回值为非零。

如果函数失败,或者它刷新最近访问的初始化文件的缓存版本,则返回值为零。 若要获取扩展的错误信息,请调用 GetLastError

言论

初始化文件中的节必须采用以下形式:

[section]
key=struct

      .
      .
      .

如果 szFile 参数不包含文件的完整路径和文件名,WritePrivateProfileString 搜索文件的 Windows 目录。 如果该文件不存在,此函数将在 Windows 目录中创建该文件。

如果 szFile 包含完整路径和文件名,并且该文件不存在,WriteProfileString 创建该文件。 指定的目录必须已存在。

系统保留最新注册表文件映射的缓存版本,以提高性能。 如果所有参数都 NULL,则该函数将刷新缓存。 当系统正在编辑文件的缓存版本时,编辑文件本身的进程将使用原始文件,直到清除缓存为止。

系统使用以下注册表项下定义的映射,将大多数 .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,前缀后的文本相对于该键。

注意

winbase.h 标头根据 UNICODE 预处理器常量的定义,将 WritePrivateProfileStruct 定义为自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

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

另请参阅

GetPrivateProfileString

WriteProfileString