-typedef BOOLEAN (*MMC_ISCARDPRESENT)();\r
-\r
-typedef BOOLEAN (*MMC_ISREADONLY)();\r
-\r
-typedef EFI_STATUS (*MMC_BUILDDEVICEPATH)(EFI_DEVICE_PATH_PROTOCOL **DevicePath);\r
-\r
-typedef EFI_STATUS (*MMC_NOTIFYSTATE)(MMC_STATE State);\r
-\r
-typedef EFI_STATUS (*MMC_SENDCOMMAND)(MMC_CMD Cmd, UINT32 Argument);\r
+///\r
+/// Forward declaration for EFI_MMC_HOST_PROTOCOL\r
+///\r
+typedef struct _EFI_MMC_HOST_PROTOCOL EFI_MMC_HOST_PROTOCOL;\r
+\r
+typedef BOOLEAN (EFIAPI *MMC_ISCARDPRESENT) (\r
+ IN EFI_MMC_HOST_PROTOCOL *This\r
+ );\r
+\r
+typedef BOOLEAN (EFIAPI *MMC_ISREADONLY) (\r
+ IN EFI_MMC_HOST_PROTOCOL *This\r
+ );\r
+\r
+typedef EFI_STATUS (EFIAPI *MMC_BUILDDEVICEPATH) (\r
+ IN EFI_MMC_HOST_PROTOCOL *This,\r
+ OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath\r
+ );\r
+\r
+typedef EFI_STATUS (EFIAPI *MMC_NOTIFYSTATE) (\r
+ IN EFI_MMC_HOST_PROTOCOL *This,\r
+ IN MMC_STATE State\r
+ );\r
+\r
+typedef EFI_STATUS (EFIAPI *MMC_SENDCOMMAND) (\r
+ IN EFI_MMC_HOST_PROTOCOL *This,\r
+ IN MMC_CMD Cmd,\r
+ IN UINT32 Argument\r
+ );\r
+\r
+typedef EFI_STATUS (EFIAPI *MMC_RECEIVERESPONSE) (\r
+ IN EFI_MMC_HOST_PROTOCOL *This,\r
+ IN MMC_RESPONSE_TYPE Type,\r
+ IN UINT32 *Buffer\r
+ );\r
+\r
+typedef EFI_STATUS (EFIAPI *MMC_READBLOCKDATA) (\r
+ IN EFI_MMC_HOST_PROTOCOL *This,\r
+ IN EFI_LBA Lba,\r
+ IN UINTN Length,\r
+ OUT UINT32 *Buffer\r
+ );\r
+\r
+typedef EFI_STATUS (EFIAPI *MMC_WRITEBLOCKDATA) (\r
+ IN EFI_MMC_HOST_PROTOCOL *This,\r
+ IN EFI_LBA Lba,\r
+ IN UINTN Length,\r
+ IN UINT32 *Buffer\r
+ );\r