113{
118 ULONG PercentPerChunk, Percent;
121
122
124
125
126 TRACE(
"RamDiskLoadVirtualFile: Opening '%s', '%s'\n",
127 FileName, DefaultPath ? DefaultPath :
"n/a");
131
132
135 {
138 }
139
140
143
144
147 {
151 ERR(
"Couldn't retrieve volume size on device '%s', falling back to RAW size\n",
FileName);
152 else
154 }
155
156 TRACE(
"RAMDISK size: %I64u (High: %lu ; Low: %lu)\n",
160
161
163 {
167 }
169
170
173 PercentPerChunk = 0;
174 else
178 {
181 UiMessageBox(
"Failed to allocate memory for RAM disk.");
183 }
184
185
186
187
191 goto ReadFailure;
192
193 for (TotalRead = 0, Percent = 0;
195 TotalRead +=
ChunkSize, Percent += PercentPerChunk)
196 {
197
200
201
203
204
210 {
212 goto ReadFailure;
213 }
214 }
218
219ReadFailure:
226}
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)
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)
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,...)
_Inout_ PUCHAR _In_ PUCHAR _Out_ PUCHAR _Out_ PULONG ChunkSize