Protocol顾名思义,协议,其实就是一些函数和数据的集合,这些函数集合在一起视乎就形成了协议。我们在使用protocal的时候需要先install这个protocal,install之前会先实现这些函数,和数据,把他们进行赋值。install一个protocal时相当于吧这些函数的指针传递给了一个handle,我们要使用这些实例,只需要local这个protocal找到这个handle就可以找到这些实例去使用了。
例如:
//
//定义protocal 结构体
//
typedef struct _EFI_CPU_ARCH_PROTOCOL {
EFI_CPU_FLUSH_DATA_CACHE FlushDataCache;
EFI_CPU_ENABLE_INTERRUPT EnableInterrupt;
EFI_CPU_DISABLE_INTERRUPT DisableInterrupt;
EFI_CPU_GET_INTERRUPT_STATE GetInterruptState;
EFI_CPU_INIT Init;
EFI_CPU_REGISTER_INTERRUPT_HANDLER RegisterInterruptHandler;
EFI_CPU_GET_TIMER_VALUE GetTimerValue;
EFI_CPU_SET_MEMORY_ATTRIBUTES SetMemoryAttributes;
UINT32 NumberOfTimers;
UINT32 DmaBufferAlignment;