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