3 Copyright (c) 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 Produce block IO abstractions for real devices on your PC using Win32 APIs.
19 The configuration of what devices to mount or emulate comes from NT
20 environment variables. The variables must be visible to the Microsoft*
21 Developer Studio for them to work.
23 * Other names and brands may be claimed as the property of others.
27 #ifndef _WIN_NT_BLOCK_IO_H_
28 #define _WIN_NT_BLOCK_IO_H_
32 #define FILENAME_BUFFER_SIZE 80
35 // Language supported for driverconfiguration protocol
37 #define LANGUAGESUPPORTED "eng"
41 EfiWinNtPhysicalDisks
,
43 } WIN_NT_RAW_DISK_DEVICE_TYPE
;
45 #define WIN_NT_BLOCK_IO_PRIVATE_SIGNATURE EFI_SIGNATURE_32 ('N', 'T', 'b', 'k')
51 CHAR16 Filename
[FILENAME_BUFFER_SIZE
];
57 WIN_NT_RAW_DISK_DEVICE_TYPE DeviceType
;
61 UINT64 NumberOfBlocks
;
64 EFI_BLOCK_IO_PROTOCOL BlockIo
;
65 EFI_BLOCK_IO_MEDIA Media
;
67 EFI_UNICODE_STRING_TABLE
*ControllerNameTable
;
69 EFI_WIN_NT_THUNK_PROTOCOL
*WinNtThunk
;
71 } WIN_NT_BLOCK_IO_PRIVATE
;
73 #define WIN_NT_BLOCK_IO_PRIVATE_DATA_FROM_THIS(a) \
74 CR(a, WIN_NT_BLOCK_IO_PRIVATE, BlockIo, WIN_NT_BLOCK_IO_PRIVATE_SIGNATURE)
76 #define LIST_BUFFER_SIZE 512
79 // Block I/O Global Variables
81 extern EFI_DRIVER_BINDING_PROTOCOL gWinNtBlockIoDriverBinding
;
82 extern EFI_COMPONENT_NAME_PROTOCOL gWinNtBlockIoComponentName
;
83 extern EFI_DRIVER_CONFIGURATION_PROTOCOL gWinNtBlockIoDriverConfiguration
;
84 extern EFI_DRIVER_DIAGNOSTICS_PROTOCOL gWinNtBlockIoDriverDiagnostics
;
87 // EFI Driver Binding Functions
91 WinNtBlockIoDriverBindingSupported (
92 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
94 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
100 TODO: Add function description
104 This - TODO: add argument description
105 Handle - TODO: add argument description
106 RemainingDevicePath - TODO: add argument description
110 TODO: add return values
117 WinNtBlockIoDriverBindingStart (
118 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
119 IN EFI_HANDLE Handle
,
120 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
126 TODO: Add function description
130 This - TODO: add argument description
131 Handle - TODO: add argument description
132 RemainingDevicePath - TODO: add argument description
136 TODO: add return values
143 WinNtBlockIoDriverBindingStop (
144 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
145 IN EFI_HANDLE Handle
,
146 IN UINTN NumberOfChildren
,
147 IN EFI_HANDLE
*ChildHandleBuffer
153 TODO: Add function description
157 This - TODO: add argument description
158 Handle - TODO: add argument description
159 NumberOfChildren - TODO: add argument description
160 ChildHandleBuffer - TODO: add argument description
164 TODO: add return values
170 // Block IO protocol member functions
175 WinNtBlockIoReadBlocks (
176 IN EFI_BLOCK_IO_PROTOCOL
*This
,
186 TODO: Add function description
190 This - TODO: add argument description
191 MediaId - TODO: add argument description
192 Lba - TODO: add argument description
193 BufferSize - TODO: add argument description
194 Buffer - TODO: add argument description
198 TODO: add return values
206 WinNtBlockIoWriteBlocks (
207 IN EFI_BLOCK_IO_PROTOCOL
*This
,
217 TODO: Add function description
221 This - TODO: add argument description
222 MediaId - TODO: add argument description
223 Lba - TODO: add argument description
224 BufferSize - TODO: add argument description
225 Buffer - TODO: add argument description
229 TODO: add return values
237 WinNtBlockIoFlushBlocks (
238 IN EFI_BLOCK_IO_PROTOCOL
*This
244 TODO: Add function description
248 This - TODO: add argument description
252 TODO: add return values
260 WinNtBlockIoResetBlock (
261 IN EFI_BLOCK_IO_PROTOCOL
*This
,
262 IN BOOLEAN ExtendedVerification
268 TODO: Add function description
272 This - TODO: add argument description
273 ExtendedVerification - TODO: add argument description
277 TODO: add return values
283 // Private Worker functions
287 WinNtBlockIoCreateMapping (
288 IN EFI_WIN_NT_IO_PROTOCOL
*WinNtIo
,
289 IN EFI_HANDLE EfiDeviceHandle
,
292 IN BOOLEAN RemovableMedia
,
293 IN UINTN NumberOfBlocks
,
295 IN WIN_NT_RAW_DISK_DEVICE_TYPE DeviceType
301 TODO: Add function description
305 WinNtIo - TODO: add argument description
306 EfiDeviceHandle - TODO: add argument description
307 Filename - TODO: add argument description
308 ReadOnly - TODO: add argument description
309 RemovableMedia - TODO: add argument description
310 NumberOfBlocks - TODO: add argument description
311 BlockSize - TODO: add argument description
312 DeviceType - TODO: add argument description
316 TODO: add return values
323 WinNtBlockIoReadWriteCommon (
324 IN WIN_NT_BLOCK_IO_PRIVATE
*Private
,
335 TODO: Add function description
339 Private - TODO: add argument description
340 MediaId - TODO: add argument description
341 Lba - TODO: add argument description
342 BufferSize - TODO: add argument description
343 Buffer - TODO: add argument description
344 CallerName - TODO: add argument description
348 TODO: add return values
356 IN WIN_NT_BLOCK_IO_PRIVATE
*Private
362 TODO: Add function description
366 Private - TODO: add argument description
370 TODO: add return values
377 WinNtBlockIoOpenDevice (
378 WIN_NT_BLOCK_IO_PRIVATE
*Private
384 TODO: Add function description
388 Private - TODO: add argument description
392 TODO: add return values
399 GetNextElementPastTerminator (
400 IN CHAR16
*EnvironmentVariable
,
407 TODO: Add function description
411 EnvironmentVariable - TODO: add argument description
412 Terminator - TODO: add argument description
416 TODO: add return values
425 IN WIN_NT_BLOCK_IO_PRIVATE
*Private
,
426 IN INT64 DistanceToMove
,
427 OUT UINT64
*NewFilePointer
,
434 TODO: Add function description
438 Private - TODO: add argument description
439 DistanceToMove - TODO: add argument description
440 NewFilePointer - TODO: add argument description
441 MoveMethod - TODO: add argument description
445 TODO: add return values
458 TODO: Add function description
462 String - TODO: add argument description
466 TODO: add return values