- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用以下命令来定位EFI_USER_MANAGER_PROTOCO
L:
Status = gBS->LocateHandle(ByProtocol, &gEfiUserManagerProtocolGuid, NULL, &bufferSizeu, handlesu);
我收到EFI_ERROR - EFI_NOT_FOUND
。
现在我尝试安装协议(protocol)然后打开协议(protocol):
Status = gBS->InstallMultipleProtocolInterfaces (&ImageHandle, &gEfiUserManagerProtocolGuid, NULL, NULL);
协议(protocol)打开成功,我尝试调用函数current()
:
Status = users->Current(users, &User);
计算机死机并且没有显示任何错误。
我该如何解决这个问题?
最佳答案
要解决此问题,您需要检查如何调用 InstallMultipleProtocolInterfaces - 看起来您没有提供协议(protocol)实例(实际上您提供了 NULL)。因此,当您找到协议(protocol)实例时,您会找到放置在那里的内容,即 NULL,因此您的“users”变量为 NULL,并且当您使用它时系统会挂起。
请在UEFI规范中找到InstallMultipleProtocolInterfaces的描述:第一项(Handle 之后)始终是指向协议(protocol) GUID 的指针,第二项始终是指向协议(protocol)接口(interface)的指针。这些对用于调用引导服务InstallProtocolInterface()以向Handle添加协议(protocol)接口(interface)。
我会做这样的事情:
Status = gBS->InstallMultipleProtocolInterfaces (
&ImageHandle,
&gEfiUserManagerProtocolGuid,
&mUserManager,
NULL);
其中 mUserManager 是您的协议(protocol)接口(interface)结构。由于您拥有协议(protocol)接口(interface),因此您可以验证所定位协议(protocol)的地址是否指向该结构的实际位置。
关于c - UEFI编程 EFI_USER_MANAGER_PROTOCOL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23994485/
我使用以下命令来定位EFI_USER_MANAGER_PROTOCOL: Status = gBS->LocateHandle(ByProtocol, &gEfiUserManagerProtocol
我是一名优秀的程序员,十分优秀!