/** @file

Module Name:

  EmuVariableControl.h

  Protocol for controlling EmuVariableUefi driver - installing or uninstalling RT var services emulation.

  initial version - dmazar

**/

#ifndef __EmuVariableControl_H__
#define __EmuVariableControl_H__

typedef struct _EMU_VARIABLE_CONTROL_PROTOCOL EMU_VARIABLE_CONTROL_PROTOCOL;

/**
 * EMU_VARIABLE_CONTROL_PROTOCOL.InstallEmulation() type definition
 */
typedef EFI_STATUS (EFIAPI * EMU_VARIABLE_CONTROL_INSTALL_EMULATION) (
    IN  EMU_VARIABLE_CONTROL_PROTOCOL     *This
);

/**
 * EMU_VARIABLE_CONTROL_PROTOCOL.UninstallEmulation() type definition
 */
typedef EFI_STATUS (EFIAPI * EMU_VARIABLE_CONTROL_UNINSTALL_EMULATION) (
    IN  EMU_VARIABLE_CONTROL_PROTOCOL     *This
);


/**
 * EMU_VARIABLE_CONTROL_PROTOCOL
 */
struct _EMU_VARIABLE_CONTROL_PROTOCOL {
    ///
    /// Installs RT var services emulation, replaces original RT var services.
    ///
	EMU_VARIABLE_CONTROL_INSTALL_EMULATION		InstallEmulation;
    ///
    /// Uninstalls RT var services emulation, returns original RT var services back.
    ///
	EMU_VARIABLE_CONTROL_INSTALL_EMULATION		UninstallEmulation;
};


#define EMU_VARIABLE_CONTROL_PROTOCOL_GUID \
  { \
    0x21f41e73, 0xd214, 0x4fcd, {0x85, 0x50, 0x0d, 0x11, 0x51, 0xcf, 0x8e, 0xfb } \
  }

/** EMU_VARIABLE_CONTROL_PROTOCOL GUID */
extern EFI_GUID gEmuVariableControlProtocolGuid;


#endif