locate ppi 详解
来源:互联网 发布:科比2003年总决赛数据 编辑:程序博客网 时间:2024/06/03 16:44
废话少说,先上代码
** Locate a given named PPI. @param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. @param Guid Pointer to GUID of the PPI. @param Instance Instance Number to discover. @param PpiDescriptor Pointer to reference the found descriptor. If not NULL, returns a pointer to the descriptor (includes flags, etc) @param Ppi Pointer to reference the found PPI @retval EFI_SUCCESS if the PPI is in the database @retval EFI_NOT_FOUND if the PPI is not in the database**/EFI_STATUSEFIAPIPeiLocatePpi ( IN CONST EFI_PEI_SERVICES **PeiServices, IN CONST EFI_GUID *Guid, IN UINTN Instance, IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor, IN OUT VOID **Ppi ){ PEI_CORE_INSTANCE *PrivateData; INTN Index; EFI_GUID *CheckGuid; EFI_PEI_PPI_DESCRIPTOR *TempPtr; PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS(PeiServices); // // Search the data base for the matching instance of the GUIDed PPI. // for (Index = 0; Index < PrivateData->PpiData.PpiListEnd; Index++) { TempPtr = PrivateData->PpiData.PpiListPtrs[Index].Ppi; CheckGuid = TempPtr->Guid; // // Don't use CompareGuid function here for performance reasons. // Instead we compare the GUID as INT32 at a time and branch // on the first failed comparison. // if ((((INT32 *)Guid)[0] == ((INT32 *)CheckGuid)[0]) && (((INT32 *)Guid)[1] == ((INT32 *)CheckGuid)[1]) && (((INT32 *)Guid)[2] == ((INT32 *)CheckGuid)[2]) && (((INT32 *)Guid)[3] == ((INT32 *)CheckGuid)[3])) { if (Instance == 0) { if (PpiDescriptor != NULL) { *PpiDescriptor = TempPtr; } if (Ppi != NULL) { *Ppi = TempPtr->Ppi; } return EFI_SUCCESS; } Instance--; } } return EFI_NOT_FOUND;}
这个函数主要是通过GUID 去找到一个interface.
typedefEFI_STATUS(EFIAPI *EFI_PEI_LOCATE_PPI) ( IN CONST EFI_PEI_SERVICES**PeiServices, IN CONST EFI_GUID *Guid, IN UINTNInstance, IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor OPTIONAL, IN OUT VOID **Ppi);参数列表:PeiServices一个指向EFI_PEI_SERVICES的二级指针。Guid指向GUID 的指针,该GUID 对应于我们要找的interface.PpiDescriptor指向EFI_PEI_PPI_DESCRIPTOR的实例。Ppi指向一个interface的实例,个人理解,指向函数实现。
PEIM M就是module 的意思,每个模块都有他的功能,打个比方,张三和李四都是一个PEIM, 张三会搬砖, 李四会编程。
现在我做为一个peim,要完成某个事情,需要找个会搬砖的,那么最好的办法就是把张三请过来。那怎么请呢?
原来张三在人才中心登记的时候,留下了他的身份证号码(GUID). 那么通过 身份证号码就能很方便的把张三找到,然后要他帮忙
把砖搬了(不给钱的哟).
2 0
- locate ppi 详解
- PPI install-locate and notify-install method
- PPI install-locate and notify-install method
- PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯
- PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯
- PPI
- ppi
- 分辨率 PPI DPI概念定义详解
- dp、sp、px、dpi、ppi、pt详解
- locate方法详解
- locate命令详解
- locate命令用法详解:
- Delphi Locate 详解1
- Delphi Locate 详解
- Linux之locate命令详解
- locate,which,whereis,find详解
- Locate
- locate
- 胖子伤不起
- Diplexer也能用于做Duplexer
- Codeforces 474E Pillars(论数据的重要性)
- java基础----RandomAccessFile
- LEETCODE: Best Time to Buy and Sell Stock III
- locate ppi 详解
- c#里压缩文件的两种方式
- 好用的Vim配置文件(更偏重于C/C++)
- 图像旋转变换
- Linux内核Ramdisk(initrd)机制
- 黑马程序员————Java基础之面向对象(二)
- Seam 对话以及工作区管理
- UserCF与ItemCF杂想之余弦相似度
- Ubuntu12.04下安装Qt4和创建第一个Qt程序