diff --git a/MdePkg/Test/Mock/Include/GoogleTest/Protocol/MockSmmSwDispatch2.h b/MdePkg/Test/Mock/Include/GoogleTest/Protocol/MockSmmSwDispatch2.h new file mode 100644 index 0000000000..c22cbf825c --- /dev/null +++ b/MdePkg/Test/Mock/Include/GoogleTest/Protocol/MockSmmSwDispatch2.h @@ -0,0 +1,52 @@ +/** @file MockSmmSwDispatch2.h + This file declares a mock of SMM Software Dispatch Protocol + + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#ifndef MOCK_SMM_SW_DISPATCH2_H_ +#define MOCK_SMM_SW_DISPATCH2_H_ + +#include +#include + +extern "C" { + #include + #include +} + +// Declarations to handle usage of the EFI_SMM_SW_DISPATCH2_PROTOCOL +struct MockEfiSmmSwDispatch2Protocol { + MOCK_INTERFACE_DECLARATION (MockEfiSmmSwDispatch2Protocol); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + MockRegister, + ( + IN CONST EFI_SMM_SW_DISPATCH2_PROTOCOL *This, + IN EFI_SMM_HANDLER_ENTRY_POINT2 DispatchFunction, + IN OUT EFI_SMM_SW_REGISTER_CONTEXT *RegisterContext, + OUT EFI_HANDLE *DispatchHandle) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + MockUnRegister, + ( + IN CONST EFI_SMM_SW_DISPATCH2_PROTOCOL *This, + IN EFI_HANDLE DispatchHandle) + ); +}; + +MOCK_INTERFACE_DEFINITION (MockEfiSmmSwDispatch2Protocol); +MOCK_FUNCTION_DEFINITION (MockEfiSmmSwDispatch2Protocol, MockRegister, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockEfiSmmSwDispatch2Protocol, MockUnRegister, 2, EFIAPI); + +#define MOCK_EFI_SMM_SW_DISPATCH2_PROTOCOL_INSTANCE(NAME) \ + EFI_SMM_SW_DISPATCH2_PROTOCOL NAME##_INSTANCE = { \ + MockRegister, \ + MockUnRegister }; \ + EFI_SMM_SW_DISPATCH2_PROTOCOL *NAME = &NAME##_INSTANCE; + +#endif // MOCK_SMM_SW_DISPATCH2_H_