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


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

Извлекает все ключи и значения для указанного раздела файла Win.ini.

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

Синтаксис

DWORD GetProfileSectionA(
  [in]  LPCSTR lpAppName,
  [out] LPSTR  lpReturnedString,
  [in]  DWORD  nSize
);

Параметры

[in] lpAppName

Имя раздела в файле Win.ini.

[out] lpReturnedString

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

[in] nSize

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

Максимальный размер раздела профиля — 32 767 символов.

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

Возвращаемое значение указывает количество символов, скопированных в указанный буфер, не включая завершающий символ NULL. Если буфер недостаточно велик, чтобы содержать все ключи и значения, связанные с именованным разделом, возвращаемое значение равно размеру, заданному параметром nSize минус два.

Комментарии

Формат возвращаемых ключей и значений представляет собой одну или несколько строк, завершаемых значением NULL, за которым следует окончательный символ NULL. Каждая строка имеет следующую форму: строка ключа=

Функция GetProfileSection не учитывает регистр; строки могут быть сочетанием прописных и строчных букв.

Эта операция является атомарной; обновления файла Win.ini не допускаются, пока ключи и значения раздела копируются в буфер.

Windows Server 2003 и Windows XP/2000: Вызовы функций профиля могут быть сопоставлены с реестром, а не с файлами инициализации. Это сопоставление возникает, когда файл инициализации и раздел указываются в реестре в следующем разделе: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping.

После сопоставления операции функция GetProfileSection получает сведения из реестра, а не из файла инициализации; Изменение расположения хранилища не влияет на поведение функции.

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

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

Примечание

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

Требования

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

См. также

GetPrivateProfileSection

WriteProfileSection