]> git.proxmox.com Git - mirror_edk2.git/blame - Nt32Pkg/WinNtBlockIoDxe/WinNtBlockIo.h
BaseTools/BinToPcd: Fix Python 2.7.x compatibility issue
[mirror_edk2.git] / Nt32Pkg / WinNtBlockIoDxe / WinNtBlockIo.h
CommitLineData
6ae81428 1/**@file\r
10160456 2\r
8f2a5f80
HT
3Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
4This program and the accompanying materials \r
10160456 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
6ae81428 25**/\r
10160456 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
99e1dd89 61#define WIN_NT_BLOCK_IO_PRIVATE_SIGNATURE SIGNATURE_32 ('N', 'T', 'b', 'k')\r
10160456 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
10160456 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
10160456 220EFI_STATUS\r
221EFIAPI\r
222WinNtBlockIoWriteBlocks (\r
223 IN EFI_BLOCK_IO_PROTOCOL *This,\r
224 IN UINT32 MediaId,\r
225 IN EFI_LBA Lba,\r
226 IN UINTN BufferSize,\r
227 IN VOID *Buffer\r
228 )\r
229/*++\r
230\r
231Routine Description:\r
232\r
233 TODO: Add function description\r
234\r
235Arguments:\r
236\r
237 This - TODO: add argument description\r
238 MediaId - TODO: add argument description\r
239 Lba - TODO: add argument description\r
240 BufferSize - TODO: add argument description\r
241 Buffer - TODO: add argument description\r
242\r
243Returns:\r
244\r
245 TODO: add return values\r
246\r
247--*/\r
248;\r
249\r
10160456 250EFI_STATUS\r
251EFIAPI\r
252WinNtBlockIoFlushBlocks (\r
253 IN EFI_BLOCK_IO_PROTOCOL *This\r
254 )\r
255/*++\r
256\r
257Routine Description:\r
258\r
259 TODO: Add function description\r
260\r
261Arguments:\r
262\r
263 This - TODO: add argument description\r
264\r
265Returns:\r
266\r
267 TODO: add return values\r
268\r
269--*/\r
270;\r
271\r
10160456 272EFI_STATUS\r
273EFIAPI\r
274WinNtBlockIoResetBlock (\r
275 IN EFI_BLOCK_IO_PROTOCOL *This,\r
276 IN BOOLEAN ExtendedVerification\r
277 )\r
278/*++\r
279\r
280Routine Description:\r
281\r
282 TODO: Add function description\r
283\r
284Arguments:\r
285\r
286 This - TODO: add argument description\r
287 ExtendedVerification - TODO: add argument description\r
288\r
289Returns:\r
290\r
291 TODO: add return values\r
292\r
293--*/\r
294;\r
295\r
296//\r
297// Private Worker functions\r
298//\r
10160456 299EFI_STATUS\r
300WinNtBlockIoCreateMapping (\r
301 IN EFI_WIN_NT_IO_PROTOCOL *WinNtIo,\r
302 IN EFI_HANDLE EfiDeviceHandle,\r
303 IN CHAR16 *Filename,\r
304 IN BOOLEAN ReadOnly,\r
305 IN BOOLEAN RemovableMedia,\r
306 IN UINTN NumberOfBlocks,\r
307 IN UINTN BlockSize,\r
308 IN WIN_NT_RAW_DISK_DEVICE_TYPE DeviceType\r
309 )\r
310/*++\r
311\r
312Routine Description:\r
313\r
314 TODO: Add function description\r
315\r
316Arguments:\r
317\r
318 WinNtIo - TODO: add argument description\r
319 EfiDeviceHandle - TODO: add argument description\r
320 Filename - TODO: add argument description\r
321 ReadOnly - TODO: add argument description\r
322 RemovableMedia - TODO: add argument description\r
323 NumberOfBlocks - TODO: add argument description\r
324 BlockSize - TODO: add argument description\r
325 DeviceType - TODO: add argument description\r
326\r
327Returns:\r
328\r
329 TODO: add return values\r
330\r
331--*/\r
332;\r
333\r
10160456 334EFI_STATUS\r
335WinNtBlockIoReadWriteCommon (\r
336 IN WIN_NT_BLOCK_IO_PRIVATE *Private,\r
337 IN UINT32 MediaId,\r
338 IN EFI_LBA Lba,\r
339 IN UINTN BufferSize,\r
340 IN VOID *Buffer,\r
341 IN CHAR8 *CallerName\r
342 )\r
343/*++\r
344\r
345Routine Description:\r
346\r
347 TODO: Add function description\r
348\r
349Arguments:\r
350\r
351 Private - TODO: add argument description\r
352 MediaId - TODO: add argument description\r
353 Lba - TODO: add argument description\r
354 BufferSize - TODO: add argument description\r
355 Buffer - TODO: add argument description\r
356 CallerName - TODO: add argument description\r
357\r
358Returns:\r
359\r
360 TODO: add return values\r
361\r
362--*/\r
363;\r
364\r
10160456 365EFI_STATUS\r
366WinNtBlockIoError (\r
367 IN WIN_NT_BLOCK_IO_PRIVATE *Private\r
368 )\r
369/*++\r
370\r
371Routine Description:\r
372\r
373 TODO: Add function description\r
374\r
375Arguments:\r
376\r
377 Private - TODO: add argument description\r
378\r
379Returns:\r
380\r
381 TODO: add return values\r
382\r
383--*/\r
384;\r
385\r
10160456 386EFI_STATUS\r
387WinNtBlockIoOpenDevice (\r
388 WIN_NT_BLOCK_IO_PRIVATE *Private\r
389 )\r
390/*++\r
391\r
392Routine Description:\r
393\r
394 TODO: Add function description\r
395\r
396Arguments:\r
397\r
398 Private - TODO: add argument description\r
399\r
400Returns:\r
401\r
402 TODO: add return values\r
403\r
404--*/\r
405;\r
406\r
10160456 407CHAR16 *\r
408GetNextElementPastTerminator (\r
409 IN CHAR16 *EnvironmentVariable,\r
410 IN CHAR16 Terminator\r
411 )\r
412/*++\r
413\r
414Routine Description:\r
415\r
416 TODO: Add function description\r
417\r
418Arguments:\r
419\r
420 EnvironmentVariable - TODO: add argument description\r
421 Terminator - TODO: add argument description\r
422\r
423Returns:\r
424\r
425 TODO: add return values\r
426\r
427--*/\r
428;\r
429\r
430\r
431\r
432EFI_STATUS\r
433SetFilePointer64 (\r
434 IN WIN_NT_BLOCK_IO_PRIVATE *Private,\r
435 IN INT64 DistanceToMove,\r
436 OUT UINT64 *NewFilePointer,\r
437 IN DWORD MoveMethod\r
438 )\r
439/*++\r
440\r
441Routine Description:\r
442\r
443 TODO: Add function description\r
444\r
445Arguments:\r
446\r
447 Private - TODO: add argument description\r
448 DistanceToMove - TODO: add argument description\r
449 NewFilePointer - TODO: add argument description\r
450 MoveMethod - TODO: add argument description\r
451\r
452Returns:\r
453\r
454 TODO: add return values\r
455\r
456--*/\r
457;\r
458\r
459UINTN\r
460Atoi (\r
461 CHAR16 *String\r
462 )\r
463/*++\r
464\r
465Routine Description:\r
466\r
467 TODO: Add function description\r
468\r
469Arguments:\r
470\r
471 String - TODO: add argument description\r
472\r
473Returns:\r
474\r
475 TODO: add return values\r
476\r
477--*/\r
478;\r
479\r
480#endif\r