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


Функция SetupGetStringFieldA (setupapi.h)

[Эта функция доступна для использования в операционных системах, указанных в разделе Требования. В последующих версиях он может быть изменен или недоступен. SetupAPI больше не следует использовать для установки приложений. Вместо этого используйте установщик Windows для разработки установщиков приложений. SetupAPI по-прежнему используется для установки драйверов устройств.]

Функция SetupGetStringField извлекает строку из указанного поля строки в INF-файле.

Синтаксис

WINSETUPAPI BOOL SetupGetStringFieldA(
  [in]      PINFCONTEXT Context,
  [in]      DWORD       FieldIndex,
  [in, out] PSTR        ReturnBuffer,
  [in]      DWORD       ReturnBufferSize,
  [out]     PDWORD      RequiredSize
);

Параметры

[in] Context

Указатель на контекст строки в INF-файле.

[in] FieldIndex

Индекс поля в заданной строке, из которой должна быть извлечена строка, на основе 1. Используйте FieldIndex со значением 0, чтобы получить строковый ключ, если он имеется.

[in, out] ReturnBuffer

Необязательный указатель на буфер, который получает строку, завершающуюся null. Убедитесь, что целевой буфер имеет тот же размер или больше, чем исходный буфер. Этот параметр может принимать значение NULL. См. раздел «Примечания».

[in] ReturnBufferSize

Размер буфера, на который указывает ReturnBuffer, в символах. Сюда входит признак конца null .

[out] RequiredSize

Необязательный указатель на переменную, которая получает требуемый размер буфера, на который указывает параметр ReturnBuffer , в символах. Если указан параметр ReturnBuffer и фактический требуемый размер превышает значение, указанное в параметре ReturnBufferSize, функция завершается ошибкой и не сохраняет строку в буфере. В этом случае вызов GetLastError возвращает ERROR_INSUFFICIENT_BUFFER. Для версии этой функции в Юникоде требуется размер в символах. Сюда входит признак конца null .

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

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

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Если эта функция вызывается с ReturnBufferсо значением NULL и Значением ReturnBufferSize , равным нулю, функция помещает размер буфера, необходимый для хранения указанных данных, в переменную, на которую указывает Параметр RequiredSize. Если функция выполняется успешно, возвращаемое значение будет ненулевым. В противном случае возвращаемое значение равно нулю, а расширенные сведения об ошибке можно получить, вызвав Метод GetLastError.

Вы можете вызвать функцию один раз, чтобы получить требуемый размер буфера, выделить необходимую память, а затем вызвать функцию во второй раз, чтобы получить данные. С помощью этого метода можно избежать ошибок из-за недостаточного размера буфера.

Обратите внимание, что максимальная длина любой отдельной строки, указанной в разделе Inf Strings, составляет 512 символов, включая завершающее значение NULL. Если длина строки превышает 512, она будет усечена и ошибка не будет возвращена. Максимальная длина любой сцепленной строки, созданной из одного или нескольких токенов %strkey%, составляет 4096 символов.

Примечание

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

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header setupapi.h
Библиотека Setupapi.lib
DLL Setupapi.dll
Набор API ext-ms-win-setupapi-inf-l1-1-1 (появилось в Windows 10 версии 10.0.14393)

См. также

Функции

Обзор

SetupGetBinaryField

SetupGetIntField

SetupGetMultiSzField