12#define LANGUAGE_CODE_ENGLISH "eng"
16EFI_COMPONENT_NAME_PROTOCOL
23EFI_DRIVER_BINDING_PROTOCOL
30 .DriverBindingHandle = NULL
36 IN EFI_HANDLE ImageHandle,
37 IN EFI_SYSTEM_TABLE *SystemTable
41 EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;
43 Status =
gBS->OpenProtocol (
46 (VOID **)&LoadedImage,
49 EFI_OPEN_PROTOCOL_GET_PROTOCOL
51 if (EFI_ERROR (Status)) {
52 DEBUG ((DEBUG_INFO,
"NTFS: Could not open loaded image protocol - %r\n", Status));
59 Status =
gBS->InstallMultipleProtocolInterfaces (
67 if (EFI_ERROR (Status)) {
68 DEBUG ((DEBUG_INFO,
"NTFS: Could not bind driver - %r\n", Status));
80 IN EFI_HANDLE ImageHandle
88 Status =
gBS->LocateHandleBuffer (
95 if (EFI_ERROR (Status)) {
99 for (Index = 0; Index < NumOfHandles; ++Index) {
100 gBS->DisconnectController (
Buffer[Index], ImageHandle, NULL);
107 Status =
gBS->UninstallMultipleProtocolInterfaces (
122 IN EFI_DRIVER_BINDING_PROTOCOL *This,
123 IN EFI_HANDLE Controller,
124 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
130 Instance = AllocateZeroPool (
sizeof (
EFI_FS));
131 if (Instance == NULL) {
132 DEBUG ((DEBUG_INFO,
"NTFS: Out of memory.\n"));
133 return EFI_UNSUPPORTED;
136 Status =
gBS->OpenProtocol (
140 This->DriverBindingHandle,
142 EFI_OPEN_PROTOCOL_GET_PROTOCOL
144 if (EFI_ERROR (Status)) {
149 Status =
gBS->OpenProtocol (
152 (VOID **)&Instance->
DiskIo,
153 This->DriverBindingHandle,
155 EFI_OPEN_PROTOCOL_BY_DRIVER
157 if (EFI_ERROR (Status)) {
163 if (EFI_ERROR (Status)) {
164 DEBUG ((DEBUG_INFO,
"NTFS: This is not NTFS Volume.\n"));
165 Status = EFI_UNSUPPORTED;
177 This->DriverBindingHandle,
190 IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This,
191 OUT EFI_FILE_PROTOCOL **Root
199 Instance = (
EFI_FS *)This;
212 IN EFI_DRIVER_BINDING_PROTOCOL *This,
213 IN EFI_HANDLE Controller,
214 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
220 Instance = AllocateZeroPool (
sizeof (
EFI_FS));
221 if (Instance == NULL) {
222 DEBUG ((DEBUG_INFO,
"NTFS: Could not allocate a new file system instance\n"));
223 return EFI_OUT_OF_RESOURCES;
226 Instance->
FileIoInterface.Revision = EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION;
231 DEBUG ((DEBUG_INFO,
"NTFS: Could not get Device Path\n"));
233 return EFI_NO_MAPPING;
236 Status =
gBS->OpenProtocol (
240 This->DriverBindingHandle,
248 EFI_OPEN_PROTOCOL_GET_PROTOCOL
250 if (EFI_ERROR (Status)) {
251 DEBUG ((DEBUG_INFO,
"NTFS: Could not access BlockIO protocol - %r\n", Status));
256 Status =
gBS->OpenProtocol (
259 (VOID **)&Instance->
DiskIo,
260 This->DriverBindingHandle,
262 EFI_OPEN_PROTOCOL_BY_DRIVER
264 if (EFI_ERROR (Status)) {
265 DEBUG ((DEBUG_INFO,
"NTFS: Could not access DiskIO protocol - %r\n", Status));
270 Instance->
EfiFile.Revision = EFI_FILE_PROTOCOL_REVISION2;
283 if (EFI_ERROR (Status)) {
284 DEBUG ((DEBUG_INFO,
"NTFS: Could not mount file system.\n"));
289 Status =
gBS->InstallMultipleProtocolInterfaces (
295 if (EFI_ERROR (Status)) {
296 DEBUG ((DEBUG_INFO,
"NTFS: Could not install simple file system protocol - %r\n", Status));
300 This->DriverBindingHandle,
311 return EFI_UNSUPPORTED;
323 IN EFI_DRIVER_BINDING_PROTOCOL *This,
324 IN EFI_HANDLE Controller,
325 IN UINTN NumberOfChildren,
326 IN EFI_HANDLE *ChildHandleBuffer OPTIONAL
330 EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *NTFS;
333 Status =
gBS->OpenProtocol (
337 This->DriverBindingHandle,
339 EFI_OPEN_PROTOCOL_GET_PROTOCOL
341 if (EFI_ERROR (Status)) {
342 DEBUG ((DEBUG_INFO,
"NTFS: Could not locate our instance - %r\n", Status));
346 Status =
gBS->UninstallMultipleProtocolInterfaces (
352 if (EFI_ERROR (Status)) {
359 Status =
gBS->CloseProtocol (
362 This->DriverBindingHandle,
365 if (EFI_ERROR (Status)) {
369 Instance = (
EFI_FS *)NTFS;
383 IN EFI_COMPONENT_NAME_PROTOCOL *This,
385 OUT CHAR16 **DriverName
395 IN EFI_COMPONENT_NAME_PROTOCOL *This,
396 IN EFI_HANDLE Controller,
397 IN EFI_HANDLE ChildHandle OPTIONAL,
399 OUT CHAR16 **ControllerName
402 return EFI_UNSUPPORTED;
VOID FreeAttr(IN NTFS_ATTR *Attr)
EFI_STATUS NtfsMount(IN EFI_FS *FileSystem)
EFI_STATUS EFIAPI FileSetInfo(IN EFI_FILE_PROTOCOL *This, IN EFI_GUID *InformationType, IN UINTN BufferSize, IN VOID *Buffer)
EFI_STATUS EFIAPI FileGetInfo(IN EFI_FILE_PROTOCOL *This, IN EFI_GUID *Type, IN OUT UINTN *Len, OUT VOID *Data)
EFI_STATUS EFIAPI NTFSStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL)
#define LANGUAGE_CODE_ENGLISH
EFI_STATUS EFIAPI NTFSSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL)
EFI_DRIVER_BINDING_PROTOCOL gNTFSDriverBinding
EFI_STATUS EFIAPI NTFSCtlGetControllerName(IN EFI_COMPONENT_NAME_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_HANDLE ChildHandle OPTIONAL, IN CHAR8 *Language, OUT CHAR16 **ControllerName)
EFI_STATUS EFIAPI NTFSCtlDriverName(IN EFI_COMPONENT_NAME_PROTOCOL *This, IN CHAR8 *Language, OUT CHAR16 **DriverName)
EFI_STATUS EFIAPI NTFSStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer OPTIONAL)
STATIC EFI_STATUS EFIAPI OpenVolume(IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This, OUT EFI_FILE_PROTOCOL **Root)
EFI_COMPONENT_NAME_PROTOCOL gNTFSDriverNames
EFI_STATUS EFIAPI NTFSEntryPoint(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
EFI_STATUS EFIAPI UnloadNTFSDriver(IN EFI_HANDLE ImageHandle)
EFI_STATUS EFIAPI FileClose(IN EFI_FILE_PROTOCOL *This)
EFI_STATUS EFIAPI FileFlush(IN EFI_FILE_PROTOCOL *This)
EFI_STATUS EFIAPI FileDelete(IN EFI_FILE_PROTOCOL *This)
EFI_STATUS EFIAPI FileSetPosition(IN EFI_FILE_PROTOCOL *This, IN UINT64 Position)
EFI_STATUS EFIAPI FileOpen(IN EFI_FILE_PROTOCOL *This, OUT EFI_FILE_PROTOCOL **NewHandle, IN CHAR16 *FileName, IN UINT64 OpenMode, IN UINT64 Attributes)
EFI_STATUS EFIAPI FileWrite(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, IN VOID *Buffer)
EFI_STATUS EFIAPI FileGetPosition(IN EFI_FILE_PROTOCOL *This, OUT UINT64 *Position)
EFI_STATUS EFIAPI FileRead(IN EFI_FILE_PROTOCOL *This, IN OUT UINTN *BufferSize, OUT VOID *Buffer)
OC_TYPING_BUFFER_ENTRY Buffer[OC_TYPING_BUFFER_SIZE]
EFI_GUID gEfiDriverBindingProtocolGuid
EFI_GUID gEfiSimpleFileSystemProtocolGuid
EFI_GUID gEfiComponentNameProtocolGuid
EFI_GUID gEfiBlockIoProtocolGuid
EFI_GUID gEfiDiskIoProtocolGuid
EFI_GUID gEfiLoadedImageProtocolGuid
EFI_DEVICE_PATH_PROTOCOL *EFIAPI DevicePathFromHandle(IN EFI_HANDLE Handle)
EFI_FILE_PROTOCOL EfiFile
EFI_DISK_IO_PROTOCOL * DiskIo
EFI_BLOCK_IO_PROTOCOL * BlockIo
EFI_DEVICE_PATH * DevicePath
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL FileIoInterface