-/**\r
- Manage SMI of a particular type.\r
-\r
- @param[in] HandlerType Points to the handler type or NULL for root SMI handlers.\r
- @param[in] Context Points to an optional context buffer.\r
- @param[in,out] CommBuffer Points to the optional communication buffer.\r
- @param[in,out] CommBufferSize Points to the size of the optional communication buffer.\r
-\r
- @retval EFI_SUCCESS Interrupt source was processed successfully but not quiesced.\r
- @retval EFI_INTERRUPT_PENDING One or more SMI sources could not be quiesced.\r
- @retval EFI_WARN_INTERRUPT_SOURCE_PENDING Interrupt source was not handled or quiesced.\r
- @retval EFI_WARN_INTERRUPT_SOURCE_QUIESCED Interrupt source was handled and quiesced.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_INTERRUPT_MANAGE)(\r
- IN CONST EFI_GUID *HandlerType,\r
- IN CONST VOID *Context OPTIONAL,\r
- IN OUT VOID *CommBuffer OPTIONAL,\r
- IN OUT UINTN *CommBufferSize OPTIONAL\r
- );\r
-\r
-/**\r
- Main entry point for an SMM handler dispatch or communicate-based callback.\r
-\r
- @param[in] DispatchHandle The unique handle assigned to this handler by SmiHandlerRegister().\r
- @param[in] Context Points to an optional handler context which was specified when the\r
- handler was registered.\r
- @param[in,out] CommBuffer A pointer to a collection of data in memory that will\r
- be conveyed from a non-SMM environment into an SMM environment.\r
- @param[in,out] CommBufferSize The size of the CommBuffer.\r
-\r
- @retval EFI_SUCCESS The interrupt was handled and quiesced. No other handlers \r
- should still be called.\r
- @retval EFI_WARN_INTERRUPT_SOURCE_QUIESCED The interrupt has been quiesced but other handlers should \r
- still be called.\r
- @retval EFI_WARN_INTERRUPT_SOURCE_PENDING The interrupt is still pending and other handlers should still \r
- be called.\r
- @retval EFI_INTERRUPT_PENDING The interrupt could not be quiesced.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_HANDLER_ENTRY_POINT2)(\r
- IN EFI_HANDLE DispatchHandle,\r
- IN CONST VOID *Context OPTIONAL,\r
- IN OUT VOID *CommBuffer OPTIONAL,\r
- IN OUT UINTN *CommBufferSize OPTIONAL\r
- );\r
-\r
-/**\r
- Registers a handler to execute within SMM.\r
-\r
- @param[in] Handler Handler service funtion pointer.\r
- @param[in] HandlerType Points to the handler type or NULL for root SMI handlers.\r
- @param[out] DispatchHandle On return, contains a unique handle which can be used to later\r
- unregister the handler function.\r
-\r
- @retval EFI_SUCCESS SMI handler added successfully.\r
- @retval EFI_INVALID_PARAMETER Handler is NULL or DispatchHandle is NULL.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_INTERRUPT_REGISTER)(\r
- IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler,\r
- IN CONST EFI_GUID *HandlerType OPTIONAL,\r
- OUT EFI_HANDLE *DispatchHandle\r
- );\r
-\r
-/**\r
- Unregister a handler in SMM.\r
-\r
- @param[in] DispatchHandle The handle that was specified when the handler was registered.\r
-\r
- @retval EFI_SUCCESS Handler function was successfully unregistered.\r
- @retval EFI_INVALID_PARAMETER DispatchHandle does not refer to a valid handle.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_INTERRUPT_UNREGISTER)(\r
- IN EFI_HANDLE DispatchHandle\r
- );\r