Поделиться через


Функция GetPrivateProfileStructW (winbase.h)

Извлекает данные, связанные с ключом в указанном разделе файла инициализации. По мере получения данных функция вычисляет контрольную сумму и сравнивает ее с контрольной суммой, вычисляемой функцией WritePrivateProfileStruct при добавлении данных в файл.

Примечание Эта функция предоставляется только для совместимости с 16-разрядными приложениями windows. Приложения должны хранить сведения о инициализации в реестре.
 

Синтаксис

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

Параметры

[in] lpszSection

Имя раздела в файле инициализации.

[in] lpszKey

Имя ключа, данные которого необходимо извлечь.

[out] lpStruct

Указатель на буфер, который получает данные, связанные с файлом, разделом и именами ключей.

[in] uSizeStruct

Размер буфера, на который указывает параметр lpStruct, в байтах.

[in] szFile

Имя файла инициализации. Если этот параметр не содержит полный путь к файлу, система ищет файл в каталоге Windows.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение ненулевое.

Если функция завершается ошибкой, возвращаемое значение равно нулю.

Замечания

Раздел в файле инициализации должен иметь следующую форму:

[section]
key=data
      .
      .
      .

Система сопоставляет большинство .ini ссылок на файл реестра, используя сопоставление, определенное в следующем разделе реестра:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT NT\CurrentVersion\IniFileMapping

Это сопоставление вероятно, если приложение изменяет файлы инициализации системного компонента, например Control.ini, System.iniи Winfile.ini. В таких случаях функция извлекает сведения из реестра, а не из файла инициализации; Изменение расположения хранилища не влияет на поведение функции.

Функции профиля используют следующие действия для поиска сведений о инициализации:

  1. Найдите в реестре имя файла инициализации, например MyFile.ini, в разделе IniFileMapping.
  2. Найдите имя раздела, указанное lpAppName. Это будет именованное значение в myfile.iniили подраздел myfile.iniили не будет существовать.
  3. Если имя раздела, указанное lpAppName является именованным значением в myfile.ini, то это значение указывает, где в реестре вы найдете ключи для раздела.
  4. Если имя раздела, указанное lpAppName является подразделом myfile.ini, то именованные значения в этом подразделе указывают, где в реестре будут находиться ключи для раздела. Если ключ, который вы ищете, не существует в качестве именованного значения, то будет неименованное значение (показано как <No Name>), указывающее расположение по умолчанию в реестре, где будет находиться ключ.
  5. Если имя раздела, указанное lpAppName, не существует в качестве именованного значения или в качестве подраздела в myfile.ini, то в myfile.ini будет неназванное значение (показано, как <нет>имени) в myfile.ini, указывающее расположение по умолчанию в реестре, где будут находиться ключи для раздела.
  6. Если нет myfile.ini подраздела или если он не содержит запись для имени раздела, найдите фактические MyFile.ini на диске и считывает его содержимое.
При просмотре значений в реестре, определяющих другие расположения реестра, существует несколько префиксов, которые изменяют поведение сопоставления файлов .ini:
  • ! — этот символ заставляет все записи переходить как в реестр, так и в файл .ini на диске.
  • # — этот символ приводит к тому, что значение реестра должно быть задано в файле Windows 3.1 .ini при первом входе пользователя в систему.
  • @ — этот символ запрещает чтение в файл .ini на диске, если запрошенные данные не найдены в реестре.
  • USR: — этот префикс обозначает HKEY_CURRENT_USER, а текст после префикса относительно этого ключа.
  • SYS: — этот префикс обозначает HKEY_LOCAL_MACHINE\SOFTWAREи текст после префикса относительно этого ключа.

Заметка

Заголовок winbase.h определяет GetPrivateProfileStruct как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка winbase.h (включая Windows.h)
библиотеки Kernel32.lib
DLL Kernel32.dll

См. также

WritePrivateProfileStruct