-/**\r
- Invokes SMI activation from either the preboot or runtime environment.\r
-\r
- This function generates an SMI.\r
-\r
- @param[in] This The EFI_SMM_CONTROL2_PROTOCOL instance.\r
- @param[in,out] CommandPort The value written to the command port.\r
- @param[in,out] DataPort The value written to the data port.\r
- @param[in] Periodic Optional mechanism to engender a periodic stream.\r
- @param[in] ActivationInterval Optional parameter to repeat at this period one\r
- time or, if the Periodic Boolean is set, periodically.\r
-\r
- @retval EFI_SUCCESS The SMI/PMI has been engendered.\r
- @retval EFI_DEVICE_ERROR The timing is unsupported.\r
- @retval EFI_INVALID_PARAMETER The activation period is unsupported.\r
- @retval EFI_INVALID_PARAMETER The last periodic activation has not been cleared. \r
- @retval EFI_NOT_STARTED The SMM base service has not been initialized.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_ACTIVATE2)(\r
- IN CONST EFI_SMM_CONTROL2_PROTOCOL *This,\r
- IN OUT UINT8 *CommandPort OPTIONAL,\r
- IN OUT UINT8 *DataPort OPTIONAL,\r
- IN BOOLEAN Periodic OPTIONAL,\r
- IN UINTN ActivationInterval OPTIONAL\r
- );\r
-\r
-/**\r
- Clears any system state that was created in response to the Trigger() call.\r
-\r
- This function acknowledges and causes the deassertion of the SMI activation source.\r
-\r
- @param[in] This The EFI_SMM_CONTROL2_PROTOCOL instance.\r
- @param[in] Periodic Optional parameter to repeat at this period one time\r
-\r
- @retval EFI_SUCCESS The SMI/PMI has been engendered.\r
- @retval EFI_DEVICE_ERROR The source could not be cleared.\r
- @retval EFI_INVALID_PARAMETER The service did not support the Periodic input argument.\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_SMM_DEACTIVATE2)(\r
- IN CONST EFI_SMM_CONTROL2_PROTOCOL *This,\r
- IN BOOLEAN Periodic OPTIONAL\r
- );\r
-\r
-///\r
-/// The EFI_SMM_CONTROL2_PROTOCOL is produced by a runtime driver. It provides an \r
-/// abstraction of the platform hardware that generates an SMI. There are often I/O ports that, when \r
-/// accessed, will generate the SMI. Also, the hardware optionally supports the periodic generation of \r
-/// these signals.\r
-///\r
-struct _EFI_SMM_CONTROL2_PROTOCOL {\r
- EFI_SMM_ACTIVATE2 Trigger;\r
- EFI_SMM_DEACTIVATE2 Clear;\r
- ///\r
- /// Minimum interval at which the platform can set the period. A maximum is not \r
- /// specified in that the SMM infrastructure code can emulate a maximum interval that is \r
- /// greater than the hardware capabilities by using software emulation in the SMM \r
- /// infrastructure code.\r
- ///\r
- EFI_SMM_PERIOD MinimumTriggerPeriod;\r
-};\r