diff --git a/MdePkg/Include/Protocol/SmmSwDispatch2.h b/MdePkg/Include/Protocol/SmmSwDispatch2.h index c64e2b226f..a4c41663c8 100644 --- a/MdePkg/Include/Protocol/SmmSwDispatch2.h +++ b/MdePkg/Include/Protocol/SmmSwDispatch2.h @@ -65,16 +65,20 @@ typedef struct _EFI_SMM_SW_DISPATCH2_PROTOCOL EFI_SMM_SW_DISPATCH2_PROTOCOL; DispatchHandle contains a unique handle which may be used later to unregister the function using UnRegister(). - @param[in] This Pointer to the EFI_SMM_SW_DISPATCH2_PROTOCOL instance. - @param[in] DispatchFunction Function to register for handler when the specified software - SMI is generated. - @param[in] RegisterContext Pointer to the dispatch function's context. - The caller fills this context in before calling - the register function to indicate to the register - function which Software SMI input value the - dispatch function should be invoked for. - @param[out] DispatchHandle Handle generated by the dispatcher to track the - function instance. + Note that the modifiers for the parameter RegisterContext are IN, OUT, while they are IN, CONST + in the PI 1.2 errta B spec. This in-consistency is for support for the case where SwSmiInputValue + is set to -1, a unique value will be returned in the RegisterContext structure. + + @param[in] This Pointer to the EFI_SMM_SW_DISPATCH2_PROTOCOL instance. + @param[in] DispatchFunction Function to register for handler when the specified software + SMI is generated. + @param[in, out] RegisterContext Pointer to the dispatch function's context. + The caller fills this context in before calling + the register function to indicate to the register + function which Software SMI input value the + dispatch function should be invoked for. + @param[out] DispatchHandle Handle generated by the dispatcher to track the + function instance. @retval EFI_SUCCESS The dispatch function has been successfully registered and the SMI source has been enabled. @@ -91,7 +95,7 @@ EFI_STATUS (EFIAPI *EFI_SMM_SW_REGISTER2)( IN CONST EFI_SMM_SW_DISPATCH2_PROTOCOL *This, IN EFI_SMM_HANDLER_ENTRY_POINT2 DispatchFunction, - IN CONST EFI_SMM_SW_REGISTER_CONTEXT *RegisterContext, + IN OUT EFI_SMM_SW_REGISTER_CONTEXT *RegisterContext, OUT EFI_HANDLE *DispatchHandle );