PPI Services

来源:互联网 发布:it运维软件 编辑:程序博客网 时间:2024/05/16 12:18

下面这些services 为PPI database 提供了接口的集合:就是说,所有的操作都是基于PPI database的

InstallPpi()

ReinstallPpi()

LocatePpi()

NotifyPpi()


InstallPpi()

小节

这个是由PEI Foundation提供的第一个service.它通过 GUID 向PPI database 中安装一个接口(interface),

这个service的目的就是公布一个interface 以方便其他的部分可以调用额外的PEIM.

原型
typedefEFI_STATUS(EFIAPI *EFI_PEI_INSTALL_PPI) (IN CONST EFI_PEI_SERVICES**PeiServices,IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList);
</pre>参数<p></p><p>PeiServices</p><p><span style="white-space:pre"></span>一个指向EFI_PEI_SERVICES表的间接指针,这个表由PEI Foundation published,不知道翻译成什么</p><p>原文 是  An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.</p><p>PpiList</p><p><span style="white-space:pre"></span>一个指向将会被安装的interface 列表的指针</p><p>这个service 使得peim 可以向PEI Foundation, PEI Foundation 维护指向列表的指针而不是整个list,</p><p>这个list 要么是peim 本体要么是分配在临时或者永久内存中的。</p><p>有两种类型的EFI_PEI_PPI_DESCRIPTOR 可以被安装,包括</p><p>EFI_PEI_PPI_DESCRIPTOR_NOTIFY_DISPATCH 和 EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK.</p><p>返回的状态码</p><p><table border="1" width="400" cellspacing="1" cellpadding="1"><tbody><tr><td>EFI_SUCCESS<span style="white-space:pre"></span></td><td>the interface was successfully installed.</td></tr><tr><td>EFI_INVALID_PARAMETER<span style="white-space:pre"></span></td><td>The PpiList pointer is NULL</td></tr><tr><td>EFI_INVALID_PARAMETER<span style="white-space:pre"></span></td><td>Any of the PEI PPI descriptors in the list do not have the EFI_PEI_PPI_DESCRIPTOR_PPI bit set in the Flags field.</td></tr><tr><td>EFI_OUT_OF_RESOURCES</td><td>There is no additional space in the PPI database.</td></tr></tbody></table>ReinstallPpi()</p><p>这个函数通过GUID重新安装一个interface,这个service的目的是publish一个Interfere,使得别的部分</p><p>可以替换interface.</p><p></p><p>原型</p><p><pre name="code" class="cpp">typedefEFI_STATUS(EFIAPI *EFI_PEI_REINSTALL_PPI) (IN CONST EFI_PEI_SERVICES **PeiServices,IN CONST EFI_PEI_PPI_DESCRIPTOR*OldPpi,IN CONST EFI_PEI_PPI_DESCRIPTOR*NewPpi);

参数

PeiServices

一个由PEI Foundation publish的指向EFI_PEI_SERVICES 表

OldPpi

  database中一个指向先前PPI 的指针。

NewPpi

一个指向新的将会被安装的interface的指针


描述

这个service 使得PEIM 在ppi database 里面使用另外一个entry 替换一个entry.


返回的状态码

EFI_SUCCESSthe interface was successfully installedEFI_INVALID_PARAMETER The Oldppi or NewPpi pointer is NULLEFI_INVALID_PARAMETER Any of the PEI PPI descriptors in the list do not have the
EFI_PEI_PPI_DESCRIPTOR_PPI bit set in the Flags fieldEFI_OUT_OF_RESOURCES There is no additional space in the PPI database.EFI_NOT_FOUND The PPI for which the reinstallation was requested has not been installed.

LocatePpi()

这个函数使用GUID 在 PEI PPI database 中找一个interface.

原型

typedefEFI_STATUS(EFIAPI *EFI_PEI_LOCATE_PPI) (IN CONST EFI_PEI_SERVICES**PeiServices,IN CONST EFI_GUID        *Guid,IN UINTN                Instance,IN OUT EFI_PEI_PPI_DESCRIPTOR**PpiDescriptor OPTIONAL,IN OUT VOID**Ppi);



0 0
原创粉丝点击