]> git.proxmox.com Git - mirror_edk2.git/blame - Nt32Pkg/WinNtBlockIoDxe/WinNtBlockIo.h
Regenerate Fat binaries for the bug fix of LookupUnicodeString2() in UefiLib (r4655).
[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
db168de9 102extern EFI_DRIVER_DIAGNOSTICS2_PROTOCOL gWinNtBlockIoDriverDiagnostics2;\r
10160456 103\r
104//\r
105// EFI Driver Binding Functions\r
106//\r
107EFI_STATUS\r
108EFIAPI\r
109WinNtBlockIoDriverBindingSupported (\r
110 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
111 IN EFI_HANDLE Handle,\r
112 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
113 )\r
114/*++\r
115\r
116Routine Description:\r
117\r
118 TODO: Add function description\r
119\r
120Arguments:\r
121\r
122 This - TODO: add argument description\r
123 Handle - TODO: add argument description\r
124 RemainingDevicePath - TODO: add argument description\r
125\r
126Returns:\r
127\r
128 TODO: add return values\r
129\r
130--*/\r
131;\r
132\r
133EFI_STATUS\r
134EFIAPI\r
135WinNtBlockIoDriverBindingStart (\r
136 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
137 IN EFI_HANDLE Handle,\r
138 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
139 )\r
140/*++\r
141\r
142Routine Description:\r
143\r
144 TODO: Add function description\r
145\r
146Arguments:\r
147\r
148 This - TODO: add argument description\r
149 Handle - TODO: add argument description\r
150 RemainingDevicePath - TODO: add argument description\r
151\r
152Returns:\r
153\r
154 TODO: add return values\r
155\r
156--*/\r
157;\r
158\r
159EFI_STATUS\r
160EFIAPI\r
161WinNtBlockIoDriverBindingStop (\r
162 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
163 IN EFI_HANDLE Handle,\r
164 IN UINTN NumberOfChildren,\r
165 IN EFI_HANDLE *ChildHandleBuffer\r
166 )\r
167/*++\r
168\r
169Routine Description:\r
170\r
171 TODO: Add function description\r
172\r
173Arguments:\r
174\r
175 This - TODO: add argument description\r
176 Handle - TODO: add argument description\r
177 NumberOfChildren - TODO: add argument description\r
178 ChildHandleBuffer - TODO: add argument description\r
179\r
180Returns:\r
181\r
182 TODO: add return values\r
183\r
184--*/\r
185;\r
186\r
187//\r
188// Block IO protocol member functions\r
189//\r
190STATIC\r
191EFI_STATUS\r
192EFIAPI\r
193WinNtBlockIoReadBlocks (\r
194 IN EFI_BLOCK_IO_PROTOCOL *This,\r
195 IN UINT32 MediaId,\r
196 IN EFI_LBA Lba,\r
197 IN UINTN BufferSize,\r
198 OUT VOID *Buffer\r
199 )\r
200/*++\r
201\r
202Routine Description:\r
203\r
204 TODO: Add function description\r
205\r
206Arguments:\r
207\r
208 This - TODO: add argument description\r
209 MediaId - TODO: add argument description\r
210 Lba - TODO: add argument description\r
211 BufferSize - TODO: add argument description\r
212 Buffer - TODO: add argument description\r
213\r
214Returns:\r
215\r
216 TODO: add return values\r
217\r
218--*/\r
219;\r
220\r
221STATIC\r
222EFI_STATUS\r
223EFIAPI\r
224WinNtBlockIoWriteBlocks (\r
225 IN EFI_BLOCK_IO_PROTOCOL *This,\r
226 IN UINT32 MediaId,\r
227 IN EFI_LBA Lba,\r
228 IN UINTN BufferSize,\r
229 IN VOID *Buffer\r
230 )\r
231/*++\r
232\r
233Routine Description:\r
234\r
235 TODO: Add function description\r
236\r
237Arguments:\r
238\r
239 This - TODO: add argument description\r
240 MediaId - TODO: add argument description\r
241 Lba - TODO: add argument description\r
242 BufferSize - TODO: add argument description\r
243 Buffer - TODO: add argument description\r
244\r
245Returns:\r
246\r
247 TODO: add return values\r
248\r
249--*/\r
250;\r
251\r
252STATIC\r
253EFI_STATUS\r
254EFIAPI\r
255WinNtBlockIoFlushBlocks (\r
256 IN EFI_BLOCK_IO_PROTOCOL *This\r
257 )\r
258/*++\r
259\r
260Routine Description:\r
261\r
262 TODO: Add function description\r
263\r
264Arguments:\r
265\r
266 This - TODO: add argument description\r
267\r
268Returns:\r
269\r
270 TODO: add return values\r
271\r
272--*/\r
273;\r
274\r
275STATIC\r
276EFI_STATUS\r
277EFIAPI\r
278WinNtBlockIoResetBlock (\r
279 IN EFI_BLOCK_IO_PROTOCOL *This,\r
280 IN BOOLEAN ExtendedVerification\r
281 )\r
282/*++\r
283\r
284Routine Description:\r
285\r
286 TODO: Add function description\r
287\r
288Arguments:\r
289\r
290 This - TODO: add argument description\r
291 ExtendedVerification - TODO: add argument description\r
292\r
293Returns:\r
294\r
295 TODO: add return values\r
296\r
297--*/\r
298;\r
299\r
300//\r
301// Private Worker functions\r
302//\r
303STATIC\r
304EFI_STATUS\r
305WinNtBlockIoCreateMapping (\r
306 IN EFI_WIN_NT_IO_PROTOCOL *WinNtIo,\r
307 IN EFI_HANDLE EfiDeviceHandle,\r
308 IN CHAR16 *Filename,\r
309 IN BOOLEAN ReadOnly,\r
310 IN BOOLEAN RemovableMedia,\r
311 IN UINTN NumberOfBlocks,\r
312 IN UINTN BlockSize,\r
313 IN WIN_NT_RAW_DISK_DEVICE_TYPE DeviceType\r
314 )\r
315/*++\r
316\r
317Routine Description:\r
318\r
319 TODO: Add function description\r
320\r
321Arguments:\r
322\r
323 WinNtIo - TODO: add argument description\r
324 EfiDeviceHandle - TODO: add argument description\r
325 Filename - TODO: add argument description\r
326 ReadOnly - TODO: add argument description\r
327 RemovableMedia - TODO: add argument description\r
328 NumberOfBlocks - TODO: add argument description\r
329 BlockSize - TODO: add argument description\r
330 DeviceType - TODO: add argument description\r
331\r
332Returns:\r
333\r
334 TODO: add return values\r
335\r
336--*/\r
337;\r
338\r
339STATIC\r
340EFI_STATUS\r
341WinNtBlockIoReadWriteCommon (\r
342 IN WIN_NT_BLOCK_IO_PRIVATE *Private,\r
343 IN UINT32 MediaId,\r
344 IN EFI_LBA Lba,\r
345 IN UINTN BufferSize,\r
346 IN VOID *Buffer,\r
347 IN CHAR8 *CallerName\r
348 )\r
349/*++\r
350\r
351Routine Description:\r
352\r
353 TODO: Add function description\r
354\r
355Arguments:\r
356\r
357 Private - TODO: add argument description\r
358 MediaId - TODO: add argument description\r
359 Lba - TODO: add argument description\r
360 BufferSize - TODO: add argument description\r
361 Buffer - TODO: add argument description\r
362 CallerName - TODO: add argument description\r
363\r
364Returns:\r
365\r
366 TODO: add return values\r
367\r
368--*/\r
369;\r
370\r
371STATIC\r
372EFI_STATUS\r
373WinNtBlockIoError (\r
374 IN WIN_NT_BLOCK_IO_PRIVATE *Private\r
375 )\r
376/*++\r
377\r
378Routine Description:\r
379\r
380 TODO: Add function description\r
381\r
382Arguments:\r
383\r
384 Private - TODO: add argument description\r
385\r
386Returns:\r
387\r
388 TODO: add return values\r
389\r
390--*/\r
391;\r
392\r
393STATIC\r
394EFI_STATUS\r
395WinNtBlockIoOpenDevice (\r
396 WIN_NT_BLOCK_IO_PRIVATE *Private\r
397 )\r
398/*++\r
399\r
400Routine Description:\r
401\r
402 TODO: Add function description\r
403\r
404Arguments:\r
405\r
406 Private - TODO: add argument description\r
407\r
408Returns:\r
409\r
410 TODO: add return values\r
411\r
412--*/\r
413;\r
414\r
415STATIC\r
416CHAR16 *\r
417GetNextElementPastTerminator (\r
418 IN CHAR16 *EnvironmentVariable,\r
419 IN CHAR16 Terminator\r
420 )\r
421/*++\r
422\r
423Routine Description:\r
424\r
425 TODO: Add function description\r
426\r
427Arguments:\r
428\r
429 EnvironmentVariable - TODO: add argument description\r
430 Terminator - TODO: add argument description\r
431\r
432Returns:\r
433\r
434 TODO: add return values\r
435\r
436--*/\r
437;\r
438\r
439\r
440\r
441EFI_STATUS\r
442SetFilePointer64 (\r
443 IN WIN_NT_BLOCK_IO_PRIVATE *Private,\r
444 IN INT64 DistanceToMove,\r
445 OUT UINT64 *NewFilePointer,\r
446 IN DWORD MoveMethod\r
447 )\r
448/*++\r
449\r
450Routine Description:\r
451\r
452 TODO: Add function description\r
453\r
454Arguments:\r
455\r
456 Private - TODO: add argument description\r
457 DistanceToMove - TODO: add argument description\r
458 NewFilePointer - TODO: add argument description\r
459 MoveMethod - TODO: add argument description\r
460\r
461Returns:\r
462\r
463 TODO: add return values\r
464\r
465--*/\r
466;\r
467\r
468UINTN\r
469Atoi (\r
470 CHAR16 *String\r
471 )\r
472/*++\r
473\r
474Routine Description:\r
475\r
476 TODO: Add function description\r
477\r
478Arguments:\r
479\r
480 String - TODO: add argument description\r
481\r
482Returns:\r
483\r
484 TODO: add return values\r
485\r
486--*/\r
487;\r
488\r
489#endif\r