GetFirmwareEnvironmentVariable是获取efi主板写入到固件里的数据,如果单单调用

#define VariableGuidStr      "{8BE4DF61-93CA-11D2-AA0D-00E098032B8C}"
#define BootOrderStr         "BootOrder"

DWORD    dwRet        = 0;

dwRet = GetFirmwareEnvironmentVariable(
_T(BootOrderStr), 
_T(VariableGuidStr), 
pBuffer, 
iBufferSize);

dwRet的值会是0,msdn上也表明了0代表返回数据大小为0,即使错误,

到微软官方查阅了一下,发现时权限的问题,即使以管理员权限运行此程序也会有几个权限没有包含进来,所以要重新调整权限,于是编写了如下函数

BOOL adjusttoken()
{
HANDLE htoken;

if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &htoken))
{
size_t           s  = sizeof(TOKEN_PRIVILEGES) + 2*sizeof(LUID_AND_ATTRIBUTES);
TOKEN_PRIVILEGES *p = (PTOKEN_PRIVILEGES)malloc(s);

if(!LookupPrivilegeValue(NULL, SE_SYSTEM_ENVIRONMENT_NAME, &(p->Privileges[0].Luid)) ||
!LookupPrivilegeValue(NULL, SE_BACKUP_NAME, &(p->Privileges[1].Luid)) ||
!LookupPrivilegeValue(NULL, SE_RESTORE_NAME, &(p->Privileges[2].Luid)))
{
printf("failed to LookupPrivilegeValue error code : %d \r\n", GetLastError());
free(p);
return FALSE;
}
p->PrivilegeCount = 3;

for(int i = 0; i<3; ++i)
{
p->Privileges[i].Attributes = SE_PRIVILEGE_ENABLED;
}

if(!AdjustTokenPrivileges(htoken, FALSE, p, s, NULL, NULL) || GetLastError() != ERROR_SUCCESS)
{
printf("AdjustTokenPrivileges failed! error code : %d \r\n", GetLastError());
free(p);
return FALSE;
}
//do something here...
free(p);
}
else
{
printf("Open process token failed! error code : %d \r\n", GetLastError());
return FALSE;
}

return TRUE;
}

在调用GetFirmwareEnvironmentVariable之前调用adjusttoken()就可以了,至于那个guid的字符串为什么和efi层规定的guid表示的不一样就不知道了,忘了哪里规定过windows层guid字符串的格式,反正这么写获取到的是对的//efi层是这么规定的GUID gEfiGlobalVariableGuid = { 0x8BE4DF61, 0x93CA, 0x11D2, { 0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C }}; 虽然不是字符串,但是格式也不一样。

如果其他函数返回错误码1314的话,可以先怀疑是不是权限的问题,如果需要什么权限可以重新调整一下,//windows的1314错误码的意思是权限没有成功获取,而处理固件需要SE_SYSTEM_ENVIRONMENT_NAME权限

GetFirmwareEnvironmentVariable失败返回错误码1314相关推荐

  1. ffmpeg avformat_open_input返回失败,错误码-10049

    ffmpeg avformat_open_input失败,返回错误码-10049,错误描述:Error number -10049 occurred 调试代码,找到如果设置了time_out参数,就会 ...

  2. 华为快游戏调用登录接口失败,返回错误码 -1

    问题描述 在快游戏项目中,调用华为提供的登录接口,按照示例代码编写完成后,在手机上调试登录时,返回错误码 -1.如下: I jsLog : gameLoginWithReal fail:"A ...

  3. 关于接口使用抛异常还是返回错误码,下列哪些说法符合《阿里巴巴Java开发手册》

    关于接口使用抛异常还是返回错误码,下列哪些说法符合<阿里巴巴Java开发手册>:答案在文末 A. 向公司外部提供的http/api接口,推荐使用"错误码"方式返回异常或 ...

  4. C++异常 返回错误码

    C++异常 返回错误码 参考文章: (1)C++异常 返回错误码 (2)https://www.cnblogs.com/moonlightpoet/p/5670343.html 备忘一下.

  5. 异常捕获,返回错误码code给前端

    异常捕获,返回错误码code给前端

  6. android 微博sdk 集成 文件不存在(8998) 您所访问的站点在新浪微博的认证失败,错误码 21322

    问题:使用mSsoHandler.authorize(new AuthListener()); 请求授权 微博客户端报 文件不存在(8998) 使用mSsoHandler.authorizeWeb(n ...

  7. 部署在IIS上的网站返回错误码 “405”解决方案

    部署在IIS上的网站返回错误码 "405"解决方案 参考文章: (1)部署在IIS上的网站返回错误码 "405"解决方案 (2)https://www.cnbl ...

  8. 打印机smb扫描显示服务器,您好,打印机扫描完成后显示:通过SMB发送失败,错误码2101.是怎么回事啊,求指点。...

    是设置错误,因为IP地址错误,文件夹没有共享,计算机开机没有密码等造成的. 打印机扫描完成后显示"通过SMB发送失败,错误码2101"解决方法如下: 1.该共享文件夹并非共享给ev ...

  9. 【HMS Core】华为登录后返回错误码 8 、账号服务如何授权、推送服务端获取用户信息异常

    1.[HMS core][游戏登陆][问题描述] 调用华为登录后返回错误码 8 [解决方案] 错误码8的话一般在定义为内部错误(引起该错误码的原因很多),但是一般重试基本可以解决该问题(错误码).如果 ...

  10. wegame显示连接服务器失败,wegame登陆失败提示错误码2怎么办?wegame错误码:2解决方案...

    登陆wegame时错误码:2应当如何解决呢?如果无法登入wegame,而又卡在登入界面,其实问题并不复杂,大部分都是因为自身的网络协议所导致的无法登入,下面由我带给大家wegame错误码2的解决方案, ...

最新文章

  1. 如何查看sqlserver日志的方法
  2. 计算机工程与应用查重吗,计算机工程期刊录用率_计算机工程与应用期刊_计算机八大核心期刊...
  3. 力扣——LCP 37. 最小矩形面积(困难)
  4. Python 分析 35 年的考研英语真题词汇,解读孤独的考研大军!
  5. 用u盘安装黑苹果10.12.3
  6. jquery 获取指定元素
  7. ofo显示服务器故障,ofo服务器超时
  8. 神策分析 Web JS SDK 功能介绍
  9. Standford Moss。图形用户页面接口,代码查重
  10. 五、网络编程实例:聊天室
  11. html 灯箱效果样式,jQuery灯箱效果插件-Swipebox
  12. springboot+Elasticsearch实现word,pdf,txt内容抽取并高亮分词全文检索
  13. linux中的module
  14. java每日一讲讲什么_每日一讲.ppt
  15. mysql的锁机制,你真的了解吗?进来吧!用图表告诉你
  16. V-for and slot-scoped报错问题
  17. Scratch不仅适合小朋友,程序员和大学老师都应该广泛使用!!!
  18. “虚拟试衣间”项目可行性分析报告
  19. 大话西游2服务器维护公告,大话西游2经典版:2019年05月09日停机维护公告
  20. 关于logarithmicDepthBuffer属性

热门文章

  1. 显卡内存管理机制及驱动实现(Intel gma500为例)
  2. npm查看依赖包报错:npm ERR! extraneous解决!!
  3. 输入一个整数,若为奇数则输出其平方根,否则输出其立方根(分别用单分支、双分支和条件运算实现)
  4. 解决萤石云sdk语音对讲功能(实现)
  5. C语言解决三色旗问题
  6. vue+koa2移动电商实战
  7. 天空里的云偶遇 彩虹做成衣裳也要用心呵护——潮港城的茶点,好芒果的冰饮...
  8. 英语的计算机软件如何拼写,软的英文单词
  9. matlab 输出 syms,matlab中latex和syms的完美结合
  10. 精辟到毒死人的句子,你看或不看,句子就在这里不痛不痒!