+++ /dev/null
-/**@file\r
-\r
-Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-Module Name:\r
-\r
- WinNtBlockIo.h\r
-\r
-Abstract:\r
-\r
- Produce block IO abstractions for real devices on your PC using Win32 APIs.\r
- The configuration of what devices to mount or emulate comes from NT \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 _WIN_NT_BLOCK_IO_H_\r
-#define _WIN_NT_BLOCK_IO_H_\r
-\r
-#include <Uefi.h>\r
-#include <WinNtDxe.h>\r
-#include <Protocol/WinNtThunk.h>\r
-#include <Protocol/WinNtIo.h>\r
-#include <Protocol/BlockIo.h>\r
-#include <Protocol/ComponentName.h>\r
-#include <Protocol/DriverBinding.h>\r
-//\r
-// The Library classes this module consumes\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/UefiBootServicesTableLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-\r
-#define FILENAME_BUFFER_SIZE 80\r
-\r
-//\r
-// Language supported for driverconfiguration protocol\r
-//\r
-#define LANGUAGESUPPORTED "eng"\r
-\r
-typedef enum {\r
- EfiWinNtVirtualDisks,\r
- EfiWinNtPhysicalDisks,\r
- EifWinNtMaxTypeDisks\r
-} WIN_NT_RAW_DISK_DEVICE_TYPE;\r
-\r
-#define WIN_NT_BLOCK_IO_PRIVATE_SIGNATURE SIGNATURE_32 ('N', 'T', 'b', 'k')\r
-typedef struct {\r
- UINTN Signature;\r
-\r
- EFI_LOCK Lock;\r
-\r
- CHAR16 Filename[FILENAME_BUFFER_SIZE];\r
- UINTN ReadMode;\r
- UINTN ShareMode;\r
- UINTN OpenMode;\r
-\r
- HANDLE NtHandle;\r
- WIN_NT_RAW_DISK_DEVICE_TYPE DeviceType;\r
-\r
- UINT64 LastBlock;\r
- UINTN BlockSize;\r
- UINT64 NumberOfBlocks;\r
-\r
- EFI_HANDLE EfiHandle;\r
- EFI_BLOCK_IO_PROTOCOL BlockIo;\r
- EFI_BLOCK_IO_MEDIA Media;\r
-\r
- EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
-\r
- EFI_WIN_NT_THUNK_PROTOCOL *WinNtThunk;\r
-\r
-} WIN_NT_BLOCK_IO_PRIVATE;\r
-\r
-#define WIN_NT_BLOCK_IO_PRIVATE_DATA_FROM_THIS(a) \\r
- CR(a, WIN_NT_BLOCK_IO_PRIVATE, BlockIo, WIN_NT_BLOCK_IO_PRIVATE_SIGNATURE)\r
-\r
-#define LIST_BUFFER_SIZE 512\r
-\r
-//\r
-// Block I/O Global Variables\r
-//\r
-extern EFI_DRIVER_BINDING_PROTOCOL gWinNtBlockIoDriverBinding;\r
-extern EFI_COMPONENT_NAME_PROTOCOL gWinNtBlockIoComponentName;\r
-extern EFI_COMPONENT_NAME2_PROTOCOL gWinNtBlockIoComponentName2;\r
-extern EFI_DRIVER_CONFIGURATION_PROTOCOL gWinNtBlockIoDriverConfiguration;\r
-extern EFI_DRIVER_DIAGNOSTICS_PROTOCOL gWinNtBlockIoDriverDiagnostics;\r
-extern EFI_DRIVER_DIAGNOSTICS2_PROTOCOL gWinNtBlockIoDriverDiagnostics2;\r
-\r
-//\r
-// EFI Driver Binding Functions\r
-//\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtBlockIoDriverBindingSupported (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Handle - TODO: add argument description\r
- RemainingDevicePath - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtBlockIoDriverBindingStart (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Handle - TODO: add argument description\r
- RemainingDevicePath - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtBlockIoDriverBindingStop (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN UINTN NumberOfChildren,\r
- IN EFI_HANDLE *ChildHandleBuffer\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Handle - TODO: add argument description\r
- NumberOfChildren - TODO: add argument description\r
- ChildHandleBuffer - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-//\r
-// Block IO protocol member functions\r
-//\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtBlockIoReadBlocks (\r
- IN EFI_BLOCK_IO_PROTOCOL *This,\r
- IN UINT32 MediaId,\r
- IN EFI_LBA Lba,\r
- IN UINTN BufferSize,\r
- OUT VOID *Buffer\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- MediaId - TODO: add argument description\r
- Lba - TODO: add argument description\r
- BufferSize - TODO: add argument description\r
- Buffer - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtBlockIoWriteBlocks (\r
- IN EFI_BLOCK_IO_PROTOCOL *This,\r
- IN UINT32 MediaId,\r
- IN EFI_LBA Lba,\r
- IN UINTN BufferSize,\r
- IN VOID *Buffer\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- MediaId - TODO: add argument description\r
- Lba - TODO: add argument description\r
- BufferSize - TODO: add argument description\r
- Buffer - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtBlockIoFlushBlocks (\r
- IN EFI_BLOCK_IO_PROTOCOL *This\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-WinNtBlockIoResetBlock (\r
- IN EFI_BLOCK_IO_PROTOCOL *This,\r
- IN BOOLEAN ExtendedVerification\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- ExtendedVerification - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-//\r
-// Private Worker functions\r
-//\r
-EFI_STATUS\r
-WinNtBlockIoCreateMapping (\r
- IN EFI_WIN_NT_IO_PROTOCOL *WinNtIo,\r
- IN EFI_HANDLE EfiDeviceHandle,\r
- IN CHAR16 *Filename,\r
- IN BOOLEAN ReadOnly,\r
- IN BOOLEAN RemovableMedia,\r
- IN UINTN NumberOfBlocks,\r
- IN UINTN BlockSize,\r
- IN WIN_NT_RAW_DISK_DEVICE_TYPE DeviceType\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- WinNtIo - TODO: add argument description\r
- EfiDeviceHandle - TODO: add argument description\r
- Filename - TODO: add argument description\r
- ReadOnly - TODO: add argument description\r
- RemovableMedia - TODO: add argument description\r
- NumberOfBlocks - TODO: add argument description\r
- BlockSize - TODO: add argument description\r
- DeviceType - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WinNtBlockIoReadWriteCommon (\r
- IN WIN_NT_BLOCK_IO_PRIVATE *Private,\r
- IN UINT32 MediaId,\r
- IN EFI_LBA Lba,\r
- IN UINTN BufferSize,\r
- IN VOID *Buffer,\r
- IN CHAR8 *CallerName\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Private - TODO: add argument description\r
- MediaId - TODO: add argument description\r
- Lba - TODO: add argument description\r
- BufferSize - TODO: add argument description\r
- Buffer - TODO: add argument description\r
- CallerName - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WinNtBlockIoError (\r
- IN WIN_NT_BLOCK_IO_PRIVATE *Private\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Private - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WinNtBlockIoOpenDevice (\r
- WIN_NT_BLOCK_IO_PRIVATE *Private\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Private - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-CHAR16 *\r
-GetNextElementPastTerminator (\r
- IN CHAR16 *EnvironmentVariable,\r
- IN CHAR16 Terminator\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- EnvironmentVariable - TODO: add argument description\r
- Terminator - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-\r
-\r
-EFI_STATUS\r
-SetFilePointer64 (\r
- IN WIN_NT_BLOCK_IO_PRIVATE *Private,\r
- IN INT64 DistanceToMove,\r
- OUT UINT64 *NewFilePointer,\r
- IN DWORD MoveMethod\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Private - TODO: add argument description\r
- DistanceToMove - TODO: add argument description\r
- NewFilePointer - TODO: add argument description\r
- MoveMethod - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-UINTN\r
-Atoi (\r
- CHAR16 *String\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- String - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-#endif\r