--- /dev/null
+/*++\r
+\r
+Copyright (c) 2004 - 2008, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name:\r
+\r
+ EmuBlockIo.h\r
+\r
+Abstract:\r
+\r
+ Produce block IO abstractions for real devices on your PC using Posix APIs.\r
+ The configuration of what devices to mount or emulate comes from UNIX \r
+ environment variables. The variables must be visible to the Microsoft* \r
+ Developer Studio for them to work.\r
+\r
+ * Other names and brands may be claimed as the property of others.\r
+\r
+**/\r
+\r
+#ifndef _EMU_BLOCK_IO_H_\r
+#define _EMU_BLOCK_IO_H_\r
+\r
+#include <PiDxe.h>\r
+#include <Protocol/EmuIoThunk.h>\r
+#include <Protocol/BlockIo.h>\r
+#include <Protocol/BlockIo2.h>\r
+#include <Protocol/EmuBlockIo.h>\r
+\r
+#include <Guid/EmuPhysicalDisk.h>\r
+#include <Guid/EmuVirtualDisk.h>\r
+\r
+#include <Library/DebugLib.h>\r
+#include <Library/BaseLib.h>\r
+#include <Library/UefiDriverEntryPoint.h>\r
+#include <Library/UefiLib.h>\r
+#include <Library/BaseMemoryLib.h>\r
+#include <Library/MemoryAllocationLib.h>\r
+#include <Library/UefiBootServicesTableLib.h>\r
+\r
+\r
+//\r
+// Language supported for driverconfiguration protocol\r
+//\r
+\r
+#define EMU_BLOCK_IO_PRIVATE_SIGNATURE SIGNATURE_32 ('E', 'M', 'b', 'k')\r
+typedef struct {\r
+ UINTN Signature;\r
+ EMU_IO_THUNK_PROTOCOL *IoThunk;\r
+ EMU_BLOCK_IO_PROTOCOL *Io;\r
+\r
+ EFI_HANDLE EfiHandle;\r
+ EFI_BLOCK_IO_PROTOCOL BlockIo;\r
+ EFI_BLOCK_IO2_PROTOCOL BlockIo2;\r
+ EFI_BLOCK_IO_MEDIA Media;\r
+\r
+ EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
+\r
+} EMU_BLOCK_IO_PRIVATE;\r
+\r
+#define EMU_BLOCK_IO_PRIVATE_DATA_FROM_THIS(a) \\r
+ CR(a, EMU_BLOCK_IO_PRIVATE, BlockIo, EMU_BLOCK_IO_PRIVATE_SIGNATURE)\r
+\r
+#define EMU_BLOCK_IO2_PRIVATE_DATA_FROM_THIS(a) \\r
+ CR(a, EMU_BLOCK_IO_PRIVATE, BlockIo2, EMU_BLOCK_IO_PRIVATE_SIGNATURE)\r
+\r
+\r
+//\r
+// Block I/O Global Variables\r
+//\r
+extern EFI_DRIVER_BINDING_PROTOCOL gEmuBlockIoDriverBinding;\r
+extern EFI_COMPONENT_NAME_PROTOCOL gEmuBlockIoComponentName;\r
+extern EFI_COMPONENT_NAME2_PROTOCOL gEmuBlockIoComponentName2;\r
+extern EFI_DRIVER_CONFIGURATION_PROTOCOL gEmuBlockIoDriverConfiguration;\r
+extern EFI_DRIVER_DIAGNOSTICS_PROTOCOL gEmuBlockIoDriverDiagnostics;\r
+extern EFI_DRIVER_DIAGNOSTICS2_PROTOCOL gEmuBlockIoDriverDiagnostics2;\r
+\r
+#endif\r