从通用 Windows 应用访问 UEFI 固件变量

[一些信息与预发布产品相关,在商业发行之前可能发生实质性修改。 Microsoft 对于此处提供的信息不作任何明示或默示的担保。]

如何从通用 Windows 应用访问统一可扩展固件接口 (UEFI) 固件变量。

从 Windows 10 版本 1803 开始,通用 Windows 应用可以使用 GetFirmwareEnvironmentVariableSetFirmwareEnvironmentVariable (及其“ex”变体,) 执行以下操作来访问 UEFI 固件变量:

  • 在清单中声明 Microsoft.firmwareRead_cw5n1h2txyewy 自定义功能以读取固件变量,以及/或 Microsoft.firmwareWrite_cw5n1h2txyewy 写入固件变量的功能。

  • 此外,在应用清单中声明 protectedApp 受限功能。

  • 例如,以下应用清单添加允许通用 Windows 应用读取固件变量:

    <Package
      ...
      xmlns:uap4=http://schemas.microsoft.com/appx/manifest/uap/windows10/4
      xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
      IgnorableNamespaces="uap mp uap4 rescap">  
      ...
      <Capabilities>
        <rescap:Capability Name="protectedApp"/>
        <uap4:CustomCapability Name="microsoft.firmwareRead_cw5n1h2txyewy" />
      </Capabilities>
    </Package>
    
  • 在将应用提交到 Microsoft Store 之前,为所有项目配置设置链接器选项 /INTEGRITYCHECK。 这可确保应用将作为受保护的应用启动。 有关详细信息 ,请参阅 /INTEGRITYCHECK (要求签名检查)

  • 从 Microsoft 获取 签名的自定义功能描述符 (SCCD) 文件。 有关如何从 Microsoft 获取已签名的 SCCD 文件、如何将 它与应用打包到) 应用 (以及 如何启用开发人员模式的信息,请参阅创建将驱动程序与硬件 支持应用 (HSA) 配对的自定义功能 。 下面是 CustomCapability 示例中的示例 SSCD 文件:

    <?xml version="1.0" encoding="utf-8"?>
    <CustomCapabilityDescriptor xmlns="http://schemas.microsoft.com/appx/2016/sccd" xmlns:s="http://schemas.microsoft.com/appx/2016/sccd">
      <CustomCapabilities>
        <CustomCapability Name="microsoft.hsaTestCustomCapability_q536wpkpf5cy2"></CustomCapability>
        <CustomCapability Name="microsoft.firmwareRead_cw5n1h2txyewy"></CustomCapability>
      </CustomCapabilities>
      <AuthorizedEntities>
        <AuthorizedEntity AppPackageFamilyName="Microsoft.SDKSamples.CustomCapability.CPP_8wekyb3d8bbwe" CertificateSignatureHash="ca9fc964db7e0c2938778f4559946833e7a8cfde0f3eaa07650766d4764e86c4"></AuthorizedEntity>
        <AuthorizedEntity AppPackageFamilyName="Microsoft.SDKSamples.CustomCapability.CPP_8wekyb3d8bbwe" CertificateSignatureHash="279cd652c4e252bfbe5217ac722205d7729ba409148cfa9e6d9e5b1cb94eaff1"></AuthorizedEntity>
      </AuthorizedEntities>
      <Catalog>xxxx</Catalog>
    </CustomCapabilityDescriptor>
    
  • 将应用提交到 Microsoft Store 以获取签名。 出于开发目的,可以通过在启动配置数据库中启用测试签名来跳过签名, (bcd) 。 有关详细信息 ,请参阅 TESTSIGNING 启动配置选项

受限功能

GetFirmwareEnvironmentVariable

GetFirmwareEnvironmentVariableEx

SetFirmwareEnvironmentVariable

SetFirmwareEnvironmentVariableEx

从通用 Windows 应用访问 SMBIOS 信息