13#include "../ntldr/ntldropts.h"
118 ULONG PercentPerChunk, Percent;
126 TRACE(
"RamDiskLoadVirtualFile: Opening '%s', '%s'\n",
127 FileName, DefaultPath ? DefaultPath :
"n/a");
151 ERR(
"Couldn't retrieve volume size on device '%s', falling back to RAW size\n",
FileName);
156 TRACE(
"RAMDISK size: %I64u (High: %lu ; Low: %lu)\n",
181 UiMessageBox(
"Failed to allocate memory for RAM disk.");
193 for (TotalRead = 0, Percent = 0;
195 TotalRead +=
ChunkSize, Percent += PercentPerChunk)
234 TRACE(
"RamDiskInitialize(%s, '%s', '%s')\n",
235 InitRamDisk ?
"INIT" :
"REGULAR",
236 LoadOptions ? LoadOptions :
"n/a",
237 DefaultPath ? DefaultPath :
"n/a");
PRTL_UNICODE_STRING_BUFFER Path
static ARC_STATUS RamDiskOpen(CHAR *Path, OPENMODE OpenMode, ULONG *FileId)
static ARC_STATUS RamDiskRead(ULONG FileId, VOID *Buffer, ULONG N, ULONG *Count)
static ARC_STATUS RamDiskSeek(ULONG FileId, LARGE_INTEGER *Position, SEEKMODE SeekMode)
static ARC_STATUS RamDiskClose(ULONG FileId)
static ARC_STATUS RamDiskGetFileInformation(ULONG FileId, FILEINFORMATION *Information)
static BOOLEAN RamDiskDeviceRegistered
static ULONGLONG RamDiskFileSize
static ULONG RamDiskImageOffset
ARC_STATUS RamDiskInitialize(IN BOOLEAN InitRamDisk, IN PCSTR LoadOptions OPTIONAL, IN PCSTR DefaultPath OPTIONAL)
static ARC_STATUS RamDiskLoadVirtualFile(IN PCSTR FileName, IN PCSTR DefaultPath OPTIONAL)
static const DEVVTBL RamDiskVtbl
static ULONGLONG RamDiskOffset
static ULONGLONG RamDiskImageLength
#define DBG_DEFAULT_CHANNEL(ch)
ARC_STATUS ArcGetFileInformation(ULONG FileId, FILEINFORMATION *Information)
ARC_STATUS ArcSeek(ULONG FileId, LARGE_INTEGER *Position, SEEKMODE SeekMode)
ARC_STATUS FsOpenFile(IN PCSTR FileName, IN PCSTR DefaultPath OPTIONAL, IN OPENMODE OpenMode, OUT PULONG FileId)
ARC_STATUS ArcClose(_In_ ULONG FileId)
VOID FsRegisterDevice(_In_ PCSTR DeviceName, _In_ const DEVVTBL *FuncTable)
ARC_STATUS FsGetVolumeSize(_In_ ULONG DeviceId, _Out_ PULONGLONG VolumeSize)
Returns the (useful) size of a file-system volume laid on the storage media device opened via DeviceI...
ARC_STATUS ArcRead(ULONG FileId, VOID *Buffer, ULONG N, ULONG *Count)
VOID MmFreeMemory(PVOID MemoryPointer)
PVOID MmAllocateMemoryWithType(SIZE_T MemorySize, TYPE_OF_MEMORY MemoryType)
VOID UiUpdateProgressBar(_In_ ULONG Percentage, _In_opt_ PCSTR ProgressText)
VOID UiDrawProgressBarCenter(_In_ PCSTR ProgressText)
VOID UiMessageBox(_In_ PCSTR Format,...)
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ HANDLE _In_ ULONG FileNameLength
PCSTR NtLdrGetOption(IN PCSTR Options, IN PCSTR OptionName)
PCSTR NtLdrGetOptionEx(IN PCSTR Options, IN PCSTR OptionName, OUT PULONG OptionLength OPTIONAL)
NTSTRSAFEAPI RtlStringCbCopyNA(_Out_writes_bytes_(cbDest) NTSTRSAFE_PSTR pszDest, _In_ size_t cbDest, _In_reads_bytes_(cbToCopy) STRSAFE_LPCSTR pszSrc, _In_ size_t cbToCopy)
_Check_return_ long __cdecl atol(_In_z_ const char *_Str)
_Check_return_ _ACRTIMP __int64 __cdecl _atoi64(_In_z_ char const *_String)
PULONG MinorVersion OPTIONAL
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
_Inout_ PUCHAR _In_ PUCHAR _Out_ PUCHAR _Out_ PULONG ChunkSize