26 ProtEntry = Prot->Protocol;
27 for (Link = ProtEntry->
Notify.ForwardLink; Link != &ProtEntry->
Notify; Link = Link->ForwardLink) {
62 for (Link = ProtEntry->
Notify.ForwardLink; Link != &ProtEntry->
Notify; Link = Link->ForwardLink) {
98 IN EFI_SMM_NOTIFY_FN Function,
107 if ((Protocol ==
NULL) || (Registration ==
NULL)) {
108 return EFI_INVALID_PARAMETER;
111 if (Function ==
NULL) {
116 if (ProtEntry !=
NULL) {
118 for (Link = ProtEntry->
Notify.ForwardLink;
119 Link != &ProtEntry->
Notify;
120 Link = Link->ForwardLink)
125 if (ProtNotify == (
CR (Link,
PROTOCOL_NOTIFY, Link, PROTOCOL_NOTIFY_SIGNATURE))) {
129 ProtNotify->Signature = 0;
140 return EFI_NOT_FOUND;
149 if (ProtEntry !=
NULL) {
153 for (Link = ProtEntry->
Notify.ForwardLink;
154 Link != &ProtEntry->
Notify;
155 Link = Link->ForwardLink)
164 *Registration = ProtNotify;
174 if (ProtNotify !=
NULL) {
175 ProtNotify->Signature = PROTOCOL_NOTIFY_SIGNATURE;
176 ProtNotify->Protocol = ProtEntry;
191 Status = EFI_OUT_OF_RESOURCES;
192 if (ProtNotify !=
NULL) {
193 *Registration = ProtNotify;
LIST_ENTRY *EFIAPI RemoveEntryList(IN CONST LIST_ENTRY *Entry)
LIST_ENTRY *EFIAPI InsertTailList(IN OUT LIST_ENTRY *ListHead, IN OUT LIST_ENTRY *Entry)
BOOLEAN EFIAPI CompareGuid(IN CONST GUID *Guid1, IN CONST GUID *Guid2)
VOID EFIAPI FreePool(IN VOID *Buffer)
PROTOCOL_INTERFACE * SmmFindProtocolInterface(IN IHANDLE *Handle, IN EFI_GUID *Protocol, IN VOID *Interface)
PROTOCOL_ENTRY * SmmFindProtocolEntry(IN EFI_GUID *Protocol, IN BOOLEAN Create)
VOID SmmNotifyProtocol(IN PROTOCOL_INTERFACE *Prot)
PROTOCOL_INTERFACE * SmmRemoveInterfaceFromProtocol(IN IHANDLE *Handle, IN EFI_GUID *Protocol, IN VOID *Interface)
EFI_STATUS EFIAPI SmmRegisterProtocolNotify(IN CONST EFI_GUID *Protocol, IN EFI_SMM_NOTIFY_FN Function, OUT VOID **Registration)
#define CR(Record, TYPE, Field, TestSignature)
VOID *EFIAPI AllocatePool(IN UINTN AllocationSize)
LIST_ENTRY Notify
Registerd notification handlers.
EFI_GUID ProtocolID
ID of the protocol.
LIST_ENTRY Protocols
All protocol interfaces.
PROTOCOL_ENTRY * Protocol
The protocol ID.
LIST_ENTRY ByProtocol
Link on PROTOCOL_ENTRY.Protocols.
LIST_ENTRY Link
All notifications for this protocol.
EFI_SMM_NOTIFY_FN Function
Notification function.
LIST_ENTRY * Position
Last position notified.