SetupGetInfDriverStoreLocationA 函数 (setupapi.h)

SetupGetInfDriverStoreLocation 函数检索驱动程序存储中与系统 INF 文件目录中的指定 INF 文件或驱动程序存储中指定 INF 文件相对应的 INF 文件的完全限定文件名 (目录路径和) 文件名。

语法

WINSETUPAPI BOOL SetupGetInfDriverStoreLocationA(
  [in]            PCSTR                FileName,
  [in, optional]  PSP_ALTPLATFORM_INFO AlternatePlatformInfo,
  [in, optional]  PCSTR                LocaleName,
  [out]           PSTR                 ReturnBuffer,
  [in]            DWORD                ReturnBufferSize,
  [out, optional] PDWORD               RequiredSize
);

参数

[in] FileName

指向以 NULL 结尾的字符串的指针,该字符串包含系统 INF 文件目录中 INF 文件的名称和(可选)的完整目录路径。 或者,此参数是指向以 NULL 结尾的字符串的指针,该字符串包含驱动程序存储中 INF 文件的完全限定文件名 (目录路径和文件名) 。

有关如何指定 INF 文件的详细信息,请参阅以下 “备注” 部分。

[in, optional] AlternatePlatformInfo

预留给系统使用。

[in, optional] LocaleName

预留给系统使用。

[out] ReturnBuffer

指向缓冲区的指针,在该缓冲区中,函数返回一个以 NULL 结尾的字符串,该字符串包含指定 INF 文件的完全限定文件名。 此参数可以设置为 NULL。 支持的最大路径大小为MAX_PATH。 有关如何确定所需缓冲区大小的信息,请参阅以下 “备注 ”部分。

[in] ReturnBufferSize

ReturnBuffer 提供的缓冲区的大小(以字符为单位)。

[out, optional] RequiredSize

指向 DWORD 类型的变量的指针,该变量接收 ReturnBuffer 缓冲区的大小(以字符为单位)。 此参数是可选的,可以设置为 NULL

返回值

如果 SetupGetInfDriverStoreLocation 成功,则函数返回 TRUE;否则,函数返回 FALSE。 若要获取扩展的错误信息,请调用 GetLastError

如果请求的 INF 文件的完全限定文件名(包括 null 终止符)的大小大于 ReturnBufferSize,则该函数将失败,并且对 GetLastError 的调用将返回ERROR_INSUFFICIENT_BUFFER。

注解

若要确定包含驱动程序存储中指定 INF 文件的完全限定文件名所需的返回缓冲区的大小,请调用 SetupGetInfDriverStoreLocation 并将 ReturnBuffer 设置为 NULL将 ReturnBufferSize 设置为零,并提供 RequiredSizeSetupGetInfDriverStoreLocation 将在 RequiredSize 中返回所需的缓冲区大小。

当设备安装在驱动程序存储中预安装 驱动程序包 时,它会创建驱动程序包 INF 文件的两个副本。 设备安装在系统 INF 目录中安装一个副本,并为该 INF 文件的副本分配一个唯一的 已发布文件名 ,格式为 OEMnnn.inf。 设备安装会在驱动程序存储中安装 INF 文件的第二个副本,并分配该副本的原始 INF 文件名。

SetupGetInfDriverStoreLocation 返回驱动程序存储中与 FileName 提供的 INF 文件(如果有)匹配的 INF 文件的完全限定文件名。 Filename 必须指定系统 INF 目录中 INF 文件的文件名和目录路径(可选)。 或者, Filename 必须在驱动程序存储中指定 INF 文件的完全限定文件名。

例如,假定驱动程序包的 INF 文件为 Myinf.inf,而对于此驱动程序包,设备安装在系统 INF 目录 C:\Windows\inf 中安装 INF 文件 OEM1.inf。进一步假设设备安装相应的 INF 文件副本 C:\windows\system32\driverstore\filerepository\myinf_12345678\myinf.inf 在驱动程序存储中。 在这种情况下,如果 FileName 提供以下字符串之一,则函数返回 C:\windows\system32\driverstore\filerepository\myinf_12345678\myinf.infOEM1.inf、C:\Windows\inf\OEM1.inf 或 C:\windows\system32\driverstore\filerepository\myinf_12345678\myinf.inf。

类安装程序共同安装程序 可以使用 SetupGetInfDriverStoreLocation 访问 驱动程序包 中预装在驱动程序存储中的文件。 若要确定驱动程序存储中驱动程序包的路径,安装程序将执行以下操作:

  1. 调用 SetupDiGetDriverInfoDetail 以检索驱动程序 的SP_DRVINFO_DETAIL_DATA 结构。 此结构的 InfFileName 成员包含系统 INF 目录中驱动程序 INF 文件的完全限定文件名。
  2. 调用 SetupGetInfDriverStoreLocation 并提供通过调用 SetupDiGetDriverInfoDetail 检索的驱动程序 INF 文件的完全限定文件名。 SetupGetInfDriverStoreLocation 将返回驱动程序存储中驱动程序 INF 文件的完全限定文件名。 INF 文件的完全限定文件名的目录路径部分是 驱动程序包 文件的路径。
注意SetupGetInfDriverStoreLocation 不会处理 FileName 中指定的 INF 文件的内容。 不能使用此函数对驱动程序存储中的 INF 文件执行特定于内容的搜索。
 
调用 SetupGetInfPublishedName 函数以检索系统 INF 文件目录中与系统 INF 文件 目录中的指定 INF 文件或驱动程序存储中的指定文件相对应的 INF 文件的完全限定文件名。

注意

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

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 中可用。
目标平台 桌面
标头 setupapi.h (包括 Setupapi.h)
Library Setupapi.lib

另请参阅

SP_ALTPLATFORM_INFO

SP_DRVINFO_DETAIL_DATA

SetupDiGetDriverInfoDetail

SetupGetInfPublishedName