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


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

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

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

Синтаксис

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

Параметры

[in] lpszSection

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

[in] lpszKey

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

[out] lpStruct

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

[in] uSizeStruct

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

[in] szFile

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

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

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

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

Комментарии

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

[section]
key=data
      .
      .
      .

Система сопоставляет большинство .ini ссылок на файлы с реестром, используя сопоставление, определенное в следующем разделе реестра:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows 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, то именованные значения в этом подразделе укажите, где в реестре будут находиться ключи для раздела. Если ключ, который вы ищете, не существует как именованное значение, будет неименованное значение (отображается как <Без имени>), указывающее расположение по умолчанию в реестре, где будет находиться ключ.
  5. Если имя раздела, указанное в параметре lpAppName, не существует в качестве именованного значения или подраздела вmyfile.ini, в myfile.ini будет указано неименованное значение (без <имени>), указывающее расположение по умолчанию в реестре, где будут находиться ключи для раздела.
  6. Если подразделmyfile.ini отсутствует или он не содержит записи для имени раздела, найдите фактический MyFile.ini на диске и прочтите его содержимое.
При просмотре значений в реестре, указывающих другие расположения реестра, существует несколько префиксов, которые изменяют поведение сопоставления файлов .ini:
  • ! — этот символ заставляет все операции записи отправляться как в реестр, так и в файл .ini на диске.
  • # — этот символ приводит к тому, что для параметра реестра будет задано значение в файле .ini Windows 3.1, когда новый пользователь впервые входит в систему после установки.
  • @ — этот символ не позволяет выполнять операции чтения в .ini файл на диске, если запрошенные данные не найдены в реестре.
  • USR: этот префикс означает HKEY_CURRENT_USER, а текст после префикса относится к этому ключу.
  • SYS: этот префикс означает HKEY_LOCAL_MACHINE\SOFTWARE, а текст после префикса относится к этому ключу.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

WritePrivateProfileStruct