\r
typedef struct _SMI_HANDLER_PROFILE_PROTOCOL SMI_HANDLER_PROFILE_PROTOCOL;\r
\r
+/**\r
+ This function is called by SmmChildDispatcher module to report\r
+ a new SMI handler is registered, to SmmCore.\r
+\r
+ @param This The protocol instance\r
+ @param HandlerGuid The GUID to identify the type of the handler.\r
+ For the SmmChildDispatch protocol, the HandlerGuid\r
+ must be the GUID of SmmChildDispatch protocol.\r
+ @param Handler The SMI handler.\r
+ @param CallerAddress The address of the module who registers the SMI handler.\r
+ @param Context The context of the SMI handler.\r
+ For the SmmChildDispatch protocol, the Context\r
+ must match the one defined for SmmChildDispatch protocol.\r
+ @param ContextSize The size of the context in bytes.\r
+ For the SmmChildDispatch protocol, the Context\r
+ must match the one defined for SmmChildDispatch protocol.\r
+\r
+ @retval EFI_SUCCESS The information is recorded.\r
+ @retval EFI_OUT_OF_RESOURCES There is no enough resource to record the information.\r
+**/\r
typedef\r
EFI_STATUS\r
(EFIAPI *SMI_HANDLER_PROFILE_REGISTER_HANDLER) (\r
IN UINTN ContextSize OPTIONAL\r
);\r
\r
+/**\r
+ This function is called by SmmChildDispatcher module to report\r
+ an existing SMI handler is unregistered, to SmmCore.\r
+\r
+ @param This The protocol instance\r
+ @param HandlerGuid The GUID to identify the type of the handler.\r
+ For the SmmChildDispatch protocol, the HandlerGuid\r
+ must be the GUID of SmmChildDispatch protocol.\r
+ @param Handler The SMI handler.\r
+ @param Context The context of the SMI handler.\r
+ If it is NOT NULL, it will be used to check what is registered.\r
+ @param ContextSize The size of the context in bytes.\r
+ If Context is NOT NULL, it will be used to check what is registered.\r
+\r
+ @retval EFI_SUCCESS The original record is removed.\r
+ @retval EFI_NOT_FOUND There is no record for the HandlerGuid and handler.\r
+**/\r
typedef\r
EFI_STATUS\r
(EFIAPI *SMI_HANDLER_PROFILE_UNREGISTER_HANDLER) (\r
IN SMI_HANDLER_PROFILE_PROTOCOL *This,\r
IN EFI_GUID *HandlerGuid,\r
- IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler\r
+ IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler,\r
+ IN VOID *Context, OPTIONAL\r
+ IN UINTN ContextSize OPTIONAL\r
);\r
\r
struct _SMI_HANDLER_PROFILE_PROTOCOL {\r
For the SmmChildDispatch protocol, the HandlerGuid\r
must be the GUID of SmmChildDispatch protocol.\r
@param Handler The SMI handler.\r
+ @param Context The context of the SMI handler.\r
+ If it is NOT NULL, it will be used to check what is registered.\r
+ @param ContextSize The size of the context in bytes.\r
+ If Context is NOT NULL, it will be used to check what is registered.\r
\r
@retval EFI_SUCCESS The original record is removed.\r
@retval EFI_UNSUPPORTED The feature is unsupported.\r
EFIAPI\r
SmiHandlerProfileUnregisterHandler (\r
IN EFI_GUID *HandlerGuid,\r
- IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler\r
+ IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler,\r
+ IN VOID *Context, OPTIONAL\r
+ IN UINTN ContextSize OPTIONAL\r
)\r
{\r
if (mSmiHandlerProfile != NULL) {\r
- return mSmiHandlerProfile->UnregisterHandler (mSmiHandlerProfile, HandlerGuid, Handler);\r
+ return mSmiHandlerProfile->UnregisterHandler (mSmiHandlerProfile, HandlerGuid, Handler, Context, ContextSize);\r
}\r
return EFI_UNSUPPORTED;\r
}\r