]> git.proxmox.com Git - mirror_edk2.git/blame - Nt32Pkg/WinNtBlockIoDxe/WinNtBlockIo.h
Nt32Pkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / Nt32Pkg / WinNtBlockIoDxe / WinNtBlockIo.h
CommitLineData
6ae81428 1/**@file\r
10160456 2\r
8f2a5f80 3Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
9d2eedba 4SPDX-License-Identifier: BSD-2-Clause-Patent\r
10160456 5\r
6Module Name:\r
7\r
8 WinNtBlockIo.h\r
9\r
10Abstract:\r
11\r
12 Produce block IO abstractions for real devices on your PC using Win32 APIs.\r
13 The configuration of what devices to mount or emulate comes from NT \r
14 environment variables. The variables must be visible to the Microsoft* \r
15 Developer Studio for them to work.\r
16\r
17 * Other names and brands may be claimed as the property of others.\r
18\r
6ae81428 19**/\r
10160456 20\r
21#ifndef _WIN_NT_BLOCK_IO_H_\r
22#define _WIN_NT_BLOCK_IO_H_\r
23\r
24#include <Uefi.h>\r
25#include <WinNtDxe.h>\r
26#include <Protocol/WinNtThunk.h>\r
27#include <Protocol/WinNtIo.h>\r
28#include <Protocol/BlockIo.h>\r
29#include <Protocol/ComponentName.h>\r
30#include <Protocol/DriverBinding.h>\r
31//\r
32// The Library classes this module consumes\r
33//\r
34#include <Library/DebugLib.h>\r
35#include <Library/BaseLib.h>\r
36#include <Library/UefiDriverEntryPoint.h>\r
37#include <Library/UefiLib.h>\r
38#include <Library/BaseMemoryLib.h>\r
39#include <Library/UefiBootServicesTableLib.h>\r
40#include <Library/MemoryAllocationLib.h>\r
41\r
42#define FILENAME_BUFFER_SIZE 80\r
43\r
44//\r
45// Language supported for driverconfiguration protocol\r
46//\r
47#define LANGUAGESUPPORTED "eng"\r
48\r
49typedef enum {\r
50 EfiWinNtVirtualDisks,\r
51 EfiWinNtPhysicalDisks,\r
52 EifWinNtMaxTypeDisks\r
53} WIN_NT_RAW_DISK_DEVICE_TYPE;\r
54\r
99e1dd89 55#define WIN_NT_BLOCK_IO_PRIVATE_SIGNATURE SIGNATURE_32 ('N', 'T', 'b', 'k')\r
10160456 56typedef struct {\r
57 UINTN Signature;\r
58\r
59 EFI_LOCK Lock;\r
60\r
61 CHAR16 Filename[FILENAME_BUFFER_SIZE];\r
62 UINTN ReadMode;\r
63 UINTN ShareMode;\r
64 UINTN OpenMode;\r
65\r
66 HANDLE NtHandle;\r
67 WIN_NT_RAW_DISK_DEVICE_TYPE DeviceType;\r
68\r
69 UINT64 LastBlock;\r
70 UINTN BlockSize;\r
71 UINT64 NumberOfBlocks;\r
72\r
73 EFI_HANDLE EfiHandle;\r
74 EFI_BLOCK_IO_PROTOCOL BlockIo;\r
75 EFI_BLOCK_IO_MEDIA Media;\r
76\r
77 EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
78\r
79 EFI_WIN_NT_THUNK_PROTOCOL *WinNtThunk;\r
80\r
81} WIN_NT_BLOCK_IO_PRIVATE;\r
82\r
83#define WIN_NT_BLOCK_IO_PRIVATE_DATA_FROM_THIS(a) \\r
84 CR(a, WIN_NT_BLOCK_IO_PRIVATE, BlockIo, WIN_NT_BLOCK_IO_PRIVATE_SIGNATURE)\r
85\r
86#define LIST_BUFFER_SIZE 512\r
87\r
88//\r
89// Block I/O Global Variables\r
90//\r
19fe43c2 91extern EFI_DRIVER_BINDING_PROTOCOL gWinNtBlockIoDriverBinding;\r
92extern EFI_COMPONENT_NAME_PROTOCOL gWinNtBlockIoComponentName;\r
93extern EFI_COMPONENT_NAME2_PROTOCOL gWinNtBlockIoComponentName2;\r
94extern EFI_DRIVER_CONFIGURATION_PROTOCOL gWinNtBlockIoDriverConfiguration;\r
95extern EFI_DRIVER_DIAGNOSTICS_PROTOCOL gWinNtBlockIoDriverDiagnostics;\r
db168de9 96extern EFI_DRIVER_DIAGNOSTICS2_PROTOCOL gWinNtBlockIoDriverDiagnostics2;\r
10160456 97\r
98//\r
99// EFI Driver Binding Functions\r
100//\r
101EFI_STATUS\r
102EFIAPI\r
103WinNtBlockIoDriverBindingSupported (\r
104 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
105 IN EFI_HANDLE Handle,\r
106 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
107 )\r
108/*++\r
109\r
110Routine Description:\r
111\r
112 TODO: Add function description\r
113\r
114Arguments:\r
115\r
116 This - TODO: add argument description\r
117 Handle - TODO: add argument description\r
118 RemainingDevicePath - TODO: add argument description\r
119\r
120Returns:\r
121\r
122 TODO: add return values\r
123\r
124--*/\r
125;\r
126\r
127EFI_STATUS\r
128EFIAPI\r
129WinNtBlockIoDriverBindingStart (\r
130 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
131 IN EFI_HANDLE Handle,\r
132 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
133 )\r
134/*++\r
135\r
136Routine Description:\r
137\r
138 TODO: Add function description\r
139\r
140Arguments:\r
141\r
142 This - TODO: add argument description\r
143 Handle - TODO: add argument description\r
144 RemainingDevicePath - TODO: add argument description\r
145\r
146Returns:\r
147\r
148 TODO: add return values\r
149\r
150--*/\r
151;\r
152\r
153EFI_STATUS\r
154EFIAPI\r
155WinNtBlockIoDriverBindingStop (\r
156 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
157 IN EFI_HANDLE Handle,\r
158 IN UINTN NumberOfChildren,\r
159 IN EFI_HANDLE *ChildHandleBuffer\r
160 )\r
161/*++\r
162\r
163Routine Description:\r
164\r
165 TODO: Add function description\r
166\r
167Arguments:\r
168\r
169 This - TODO: add argument description\r
170 Handle - TODO: add argument description\r
171 NumberOfChildren - TODO: add argument description\r
172 ChildHandleBuffer - TODO: add argument description\r
173\r
174Returns:\r
175\r
176 TODO: add return values\r
177\r
178--*/\r
179;\r
180\r
181//\r
182// Block IO protocol member functions\r
183//\r
10160456 184EFI_STATUS\r
185EFIAPI\r
186WinNtBlockIoReadBlocks (\r
187 IN EFI_BLOCK_IO_PROTOCOL *This,\r
188 IN UINT32 MediaId,\r
189 IN EFI_LBA Lba,\r
190 IN UINTN BufferSize,\r
191 OUT VOID *Buffer\r
192 )\r
193/*++\r
194\r
195Routine Description:\r
196\r
197 TODO: Add function description\r
198\r
199Arguments:\r
200\r
201 This - TODO: add argument description\r
202 MediaId - TODO: add argument description\r
203 Lba - TODO: add argument description\r
204 BufferSize - TODO: add argument description\r
205 Buffer - TODO: add argument description\r
206\r
207Returns:\r
208\r
209 TODO: add return values\r
210\r
211--*/\r
212;\r
213\r
10160456 214EFI_STATUS\r
215EFIAPI\r
216WinNtBlockIoWriteBlocks (\r
217 IN EFI_BLOCK_IO_PROTOCOL *This,\r
218 IN UINT32 MediaId,\r
219 IN EFI_LBA Lba,\r
220 IN UINTN BufferSize,\r
221 IN VOID *Buffer\r
222 )\r
223/*++\r
224\r
225Routine Description:\r
226\r
227 TODO: Add function description\r
228\r
229Arguments:\r
230\r
231 This - TODO: add argument description\r
232 MediaId - TODO: add argument description\r
233 Lba - TODO: add argument description\r
234 BufferSize - TODO: add argument description\r
235 Buffer - TODO: add argument description\r
236\r
237Returns:\r
238\r
239 TODO: add return values\r
240\r
241--*/\r
242;\r
243\r
10160456 244EFI_STATUS\r
245EFIAPI\r
246WinNtBlockIoFlushBlocks (\r
247 IN EFI_BLOCK_IO_PROTOCOL *This\r
248 )\r
249/*++\r
250\r
251Routine Description:\r
252\r
253 TODO: Add function description\r
254\r
255Arguments:\r
256\r
257 This - TODO: add argument description\r
258\r
259Returns:\r
260\r
261 TODO: add return values\r
262\r
263--*/\r
264;\r
265\r
10160456 266EFI_STATUS\r
267EFIAPI\r
268WinNtBlockIoResetBlock (\r
269 IN EFI_BLOCK_IO_PROTOCOL *This,\r
270 IN BOOLEAN ExtendedVerification\r
271 )\r
272/*++\r
273\r
274Routine Description:\r
275\r
276 TODO: Add function description\r
277\r
278Arguments:\r
279\r
280 This - TODO: add argument description\r
281 ExtendedVerification - TODO: add argument description\r
282\r
283Returns:\r
284\r
285 TODO: add return values\r
286\r
287--*/\r
288;\r
289\r
290//\r
291// Private Worker functions\r
292//\r
10160456 293EFI_STATUS\r
294WinNtBlockIoCreateMapping (\r
295 IN EFI_WIN_NT_IO_PROTOCOL *WinNtIo,\r
296 IN EFI_HANDLE EfiDeviceHandle,\r
297 IN CHAR16 *Filename,\r
298 IN BOOLEAN ReadOnly,\r
299 IN BOOLEAN RemovableMedia,\r
300 IN UINTN NumberOfBlocks,\r
301 IN UINTN BlockSize,\r
302 IN WIN_NT_RAW_DISK_DEVICE_TYPE DeviceType\r
303 )\r
304/*++\r
305\r
306Routine Description:\r
307\r
308 TODO: Add function description\r
309\r
310Arguments:\r
311\r
312 WinNtIo - TODO: add argument description\r
313 EfiDeviceHandle - TODO: add argument description\r
314 Filename - TODO: add argument description\r
315 ReadOnly - TODO: add argument description\r
316 RemovableMedia - TODO: add argument description\r
317 NumberOfBlocks - TODO: add argument description\r
318 BlockSize - TODO: add argument description\r
319 DeviceType - TODO: add argument description\r
320\r
321Returns:\r
322\r
323 TODO: add return values\r
324\r
325--*/\r
326;\r
327\r
10160456 328EFI_STATUS\r
329WinNtBlockIoReadWriteCommon (\r
330 IN WIN_NT_BLOCK_IO_PRIVATE *Private,\r
331 IN UINT32 MediaId,\r
332 IN EFI_LBA Lba,\r
333 IN UINTN BufferSize,\r
334 IN VOID *Buffer,\r
335 IN CHAR8 *CallerName\r
336 )\r
337/*++\r
338\r
339Routine Description:\r
340\r
341 TODO: Add function description\r
342\r
343Arguments:\r
344\r
345 Private - TODO: add argument description\r
346 MediaId - TODO: add argument description\r
347 Lba - TODO: add argument description\r
348 BufferSize - TODO: add argument description\r
349 Buffer - TODO: add argument description\r
350 CallerName - TODO: add argument description\r
351\r
352Returns:\r
353\r
354 TODO: add return values\r
355\r
356--*/\r
357;\r
358\r
10160456 359EFI_STATUS\r
360WinNtBlockIoError (\r
361 IN WIN_NT_BLOCK_IO_PRIVATE *Private\r
362 )\r
363/*++\r
364\r
365Routine Description:\r
366\r
367 TODO: Add function description\r
368\r
369Arguments:\r
370\r
371 Private - TODO: add argument description\r
372\r
373Returns:\r
374\r
375 TODO: add return values\r
376\r
377--*/\r
378;\r
379\r
10160456 380EFI_STATUS\r
381WinNtBlockIoOpenDevice (\r
382 WIN_NT_BLOCK_IO_PRIVATE *Private\r
383 )\r
384/*++\r
385\r
386Routine Description:\r
387\r
388 TODO: Add function description\r
389\r
390Arguments:\r
391\r
392 Private - TODO: add argument description\r
393\r
394Returns:\r
395\r
396 TODO: add return values\r
397\r
398--*/\r
399;\r
400\r
10160456 401CHAR16 *\r
402GetNextElementPastTerminator (\r
403 IN CHAR16 *EnvironmentVariable,\r
404 IN CHAR16 Terminator\r
405 )\r
406/*++\r
407\r
408Routine Description:\r
409\r
410 TODO: Add function description\r
411\r
412Arguments:\r
413\r
414 EnvironmentVariable - TODO: add argument description\r
415 Terminator - TODO: add argument description\r
416\r
417Returns:\r
418\r
419 TODO: add return values\r
420\r
421--*/\r
422;\r
423\r
424\r
425\r
426EFI_STATUS\r
427SetFilePointer64 (\r
428 IN WIN_NT_BLOCK_IO_PRIVATE *Private,\r
429 IN INT64 DistanceToMove,\r
430 OUT UINT64 *NewFilePointer,\r
431 IN DWORD MoveMethod\r
432 )\r
433/*++\r
434\r
435Routine Description:\r
436\r
437 TODO: Add function description\r
438\r
439Arguments:\r
440\r
441 Private - TODO: add argument description\r
442 DistanceToMove - TODO: add argument description\r
443 NewFilePointer - TODO: add argument description\r
444 MoveMethod - TODO: add argument description\r
445\r
446Returns:\r
447\r
448 TODO: add return values\r
449\r
450--*/\r
451;\r
452\r
453UINTN\r
454Atoi (\r
455 CHAR16 *String\r
456 )\r
457/*++\r
458\r
459Routine Description:\r
460\r
461 TODO: Add function description\r
462\r
463Arguments:\r
464\r
465 String - TODO: add argument description\r
466\r
467Returns:\r
468\r
469 TODO: add return values\r
470\r
471--*/\r
472;\r
473\r
474#endif\r