SetupGetStringFieldA 函数 (setupapi.h)

[此函数可用于“要求”部分所示的操作系统。 它可能在后续版本中变更或不可用。 不应再使用 SetupAPI 来安装应用程序。 请改用 Windows Installer 开发应用程序安装程序。 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。 对于此函数的 Unicode 版本,所需大小以字符为单位。 这包括 null 终止符。

返回值

如果函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

如果使用 NULLReturnBuffer 和零的 ReturnBufferSize 调用此函数,则该函数会将保存指定数据所需的缓冲区大小放入 RequiredSize 指向的变量中。 如果函数成功,则返回值为非零值。 否则,返回值为零,可以通过调用 GetLastError 获取扩展错误信息。

可以调用函数一次以获取所需的缓冲区大小,分配必要的内存,然后再次调用函数以检索数据。 使用此技术,可以避免由于缓冲区大小不足而导致的错误。

请注意,INF Strings 节中指定的任何单个字符串的最大长度为 512 个字符,包括终止 NULL。 如果字符串长度大于 512,则将被截断,并且不会返回任何错误。 从一个或多个 %strkey% 标记创建的任何串联字符串的最大长度为 4096 个字符。

注意

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

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 setupapi.h
Library Setupapi.lib
DLL Setupapi.dll
API 集 ext-ms-win-setupapi-inf-l1-1-1 (在 Windows 10 版本 10.0.14393 中引入)

请参阅

函数

概述

SetupGetBinaryField

SetupGetIntField

SetupGetMultiSzField