4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI FTPv4 (File Transfer Protocol version 4) Protocol Definition
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The EFI FTPv4 Protocol is used to locate communication devices that are
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync supported by an EFI FTPv4 Protocol driver and to create and destroy instances
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the EFI FTPv4 Protocol child protocol driver that can use the underlying
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync communication device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The definitions in this file are defined in UEFI Specification 2.3, which have
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync not been verified by one implementation yet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @par Revision Reference:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This Protocol is introduced in UEFI Specification 2.2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef __EFI_FTP4_PROTOCOL_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __EFI_FTP4_PROTOCOL_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_FTP4_SERVICE_BINDING_PROTOCOL_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0xfaaecb1, 0x226e, 0x4782, {0xaa, 0xce, 0x7d, 0xb9, 0xbc, 0xbf, 0x4d, 0xaf } \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_FTP4_PROTOCOL_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0xeb338826, 0x681b, 0x4295, {0xb3, 0x56, 0x2b, 0x36, 0x4c, 0x75, 0x7b, 0x9 } \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_FTP4_PROTOCOL EFI_FTP4_PROTOCOL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// EFI_FTP4_CONNECTION_TOKEN
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The Event to signal after the connection is established and Status field is updated
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// by the EFI FTP v4 Protocol driver. The type of Event must be
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EVENT_NOTIFY_SIGNAL, and its Task Priority Level (TPL) must be lower than or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// equal to TPL_CALLBACK. If it is set to NULL, this function will not return until the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// function completes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_EVENT Event;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The variable to receive the result of the completed operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_SUCCESS: The FTP connection is established successfully
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_ACCESS_DENIED: The FTP server denied the access the user's request to access it.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_CONNECTION_RESET: The connect fails because the connection is reset either by instance
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// itself or communication peer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_TIMEOUT: The connection establishment timer expired and no more specific
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// information is available.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_NETWORK_UNREACHABLE: The active open fails because an ICMP network unreachable error is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// received.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_HOST_UNREACHABLE: The active open fails because an ICMP host unreachable error is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// received.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_PROTOCOL_UNREACHABLE: The active open fails because an ICMP protocol unreachable error is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// received.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_PORT_UNREACHABLE: The connection establishment timer times out and an ICMP port
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// unreachable error is received.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_ICMP_ERROR: The connection establishment timer timeout and some other ICMP
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// error is received.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_DEVICE_ERROR: An unexpected system or network error occurred.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_STATUS Status;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_FTP4_CONNECTION_TOKEN;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// EFI_FTP4_CONFIG_DATA
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Pointer to a ASCII string that contains user name. The caller is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// responsible for freeing Username after GetModeData() is called.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 *Username;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Pointer to a ASCII string that contains password. The caller is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// responsible for freeing Password after GetModeData() is called.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 *Password;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Set it to TRUE to initiate an active data connection. Set it to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// FALSE to initiate a passive data connection.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN Active;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Boolean value indicating if default network settting used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN UseDefaultSetting;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// IP address of station if UseDefaultSetting is FALSE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv4_ADDRESS StationIp;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Subnet mask of station if UseDefaultSetting is FALSE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv4_ADDRESS SubnetMask;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// IP address of gateway if UseDefaultSetting is FALSE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv4_ADDRESS GatewayIp;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// IP address of FTPv4 server.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv4_ADDRESS ServerIp;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// FTPv4 server port number of control connection, and the default
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// value is 21 as convention.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 ServerPort;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// FTPv4 server port number of data connection. If it is zero, use
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// (ServerPort - 1) by convention.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 AltDataPort;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// A byte indicate the representation type. The right 4 bit is used for
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// first parameter, the left 4 bit is use for second parameter
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// - For the first parameter, 0x0 = image, 0x1 = EBCDIC, 0x2 = ASCII, 0x3 = local
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// - For the second parameter, 0x0 = Non-print, 0x1 = Telnet format effectors, 0x2 =
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Carriage Control.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// - If it is a local type, the second parameter is the local byte byte size.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// - If it is a image type, the second parameter is undefined.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 RepType;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Defines the file structure in FTP used. 0x00 = file, 0x01 = record, 0x02 = page.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 FileStruct;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Defines the transifer mode used in FTP. 0x00 = stream, 0x01 = Block, 0x02 = Compressed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 TransMode;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_FTP4_CONFIG_DATA;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_FTP4_COMMAND_TOKEN EFI_FTP4_COMMAND_TOKEN;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Callback function when process inbound or outbound data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If it is receiving function that leads to inbound data, the callback function
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is called when data buffer is full. Then, old data in the data buffer should be
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync flushed and new data is stored from the beginning of data buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If it is a transmit function that lead to outbound data and the size of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Data in daata buffer has been transmitted, this callback function is called to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync supply additional data to be transmitted.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This Pointer to the EFI_FTP4_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Token Pointer to the token structure to provide the parameters that
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are used in this operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return User defined Status.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_FTP4_DATA_CALLBACK)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FTP4_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FTP4_COMMAND_TOKEN *Token
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// EFI_FTP4_COMMAND_TOKEN
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct _EFI_FTP4_COMMAND_TOKEN {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The Event to signal after request is finished and Status field
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// is updated by the EFI FTP v4 Protocol driver. The type of Event
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// must be EVT_NOTIFY_SIGNAL, and its Task Priority Level
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// (TPL) must be lower than or equal to TPL_CALLBACK. If it is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// set to NULL, related function must wait until the function
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// completes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_EVENT Event;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Pointer to a null-terminated ASCII name string.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 *Pathname;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The size of data buffer in bytes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 DataBufferSize;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Pointer to the data buffer. Data downloaded from FTP server
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// through connection is downloaded here.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID *DataBuffer;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Pointer to a callback function. If it is receiving function that leads
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// to inbound data, the callback function is called when databuffer is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// full. Then, old data in the data buffer should be flushed and new
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// data is stored from the beginning of data buffer. If it is a transmit
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// function that lead to outbound data and DataBufferSize of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Data in DataBuffer has been transmitted, this callback
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// function is called to supply additional data to be transmitted. The
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// size of additional data to be transmitted is indicated in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// DataBufferSize, again. If there is no data remained,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// DataBufferSize should be set to 0.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_FTP4_DATA_CALLBACK *DataCallback;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Pointer to the parameter for DataCallback.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID *Context;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// The variable to receive the result of the completed operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_SUCCESS: The FTP command is completed successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_ACCESS_DENIED: The FTP server denied the access to the requested file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_CONNECTION_RESET: The connect fails because the connection is reset either
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// by instance itself or communication peer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_TIMEOUT: The connection establishment timer expired and no more
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// specific information is available.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_NETWORK_UNREACHABLE: The active open fails because an ICMP network unreachable
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// error is received.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_HOST_UNREACHABLE: The active open fails because an ICMP host unreachable
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// error is received.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_PROTOCOL_UNREACHABLE: The active open fails because an ICMP protocol unreachable
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// error is received.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_PORT_UNREACHABLE: The connection establishment timer times out and an ICMP port
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// unreachable error is received.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_ICMP_ERROR: The connection establishment timer timeout and some other ICMP
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// error is received.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// EFI_DEVICE_ERROR: An unexpected system or network error occurred.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_STATUS Status;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Gets the current operational settings.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The GetModeData() function reads the current operational settings of this
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI FTPv4 Protocol driver instance. EFI_FTP4_CONFIG_DATA is defined in the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_FTP4_PROTOCOL.Configure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This Pointer to the EFI_FTP4_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] ModeData Pointer to storage for the EFI FTPv4 Protocol driver
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mode data. The string buffers for Username and Password
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync in EFI_FTP4_CONFIG_DATA are allocated by the function,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync and the caller should take the responsibility to free the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buffer later.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS This function is called successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER One or more of the following are TRUE:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - This is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - ModeData is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_STARTED The EFI FTPv4 Protocol driver has not been started
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Could not allocate enough resource to finish the operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR An unexpected system or network error occurred.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_FTP4_GET_MODE_DATA)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FTP4_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT EFI_FTP4_CONFIG_DATA *ModeData
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Disconnecting a FTP connection gracefully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The Connect() function will initiate a connection request to the remote FTP server
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync with the corresponding connection token. If this function returns EFI_SUCCESS, the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync connection sequence is initiated successfully. If the connection succeeds or faild
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync due to any error, the Token->Event will be signaled and Token->Status will be updated
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync accordingly.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This Pointer to the EFI_FTP4_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Token Pointer to the token used to establish control connection.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The connection sequence is successfully initiated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER One or more of the following are TRUE:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - This is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Token is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Token->Event is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_STARTED The EFI FTPv4 Protocol driver has not been started.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NO_MAPPING When using a default address, configuration (DHCP, BOOTP,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RARP, etc.) is not finished yet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Could not allocate enough resource to finish the operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR An unexpected system or network error occurred.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_FTP4_CONNECT)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FTP4_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FTP4_CONNECTION_TOKEN *Token
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Disconnecting a FTP connection gracefully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The Close() function will initiate a close request to the remote FTP server with the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync corresponding connection token. If this function returns EFI_SUCCESS, the control
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync connection with the remote FTP server is closed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This Pointer to the EFI_FTP4_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Token Pointer to the token used to close control connection.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The close request is successfully initiated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER One or more of the following are TRUE:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - This is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Token is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Token->Event is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_STARTED The EFI FTPv4 Protocol driver has not been started.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NO_MAPPING When using a default address, configuration (DHCP, BOOTP,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RARP, etc.) is not finished yet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Could not allocate enough resource to finish the operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR An unexpected system or network error occurred.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_FTP4_CLOSE)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FTP4_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FTP4_CONNECTION_TOKEN *Token
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Sets or clears the operational parameters for the FTP child driver.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The Configure() function will configure the connected FTP session with the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync configuration setting specified in FtpConfigData. The configuration data can
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync be reset by calling Configure() with FtpConfigData set to NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This Pointer to the EFI_FTP4_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] FtpConfigData Pointer to configuration data that will be assigned to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the FTP child driver instance. If NULL, the FTP child
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync driver instance is reset to startup defaults and all
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync pending transmit and receive requests are flushed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The FTPv4 driver was configured successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER One or more following conditions are TRUE:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - This is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - FtpConfigData.RepType is invalid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - FtpConfigData.FileStruct is invalid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - FtpConfigData.TransMode is invalid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - IP address in FtpConfigData is invalid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NO_MAPPING When using a default address, configuration (DHCP, BOOTP,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RARP, etc.) is not finished yet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED One or more of the configuration parameters are not supported
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync by this implementation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES The EFI FTPv4 Protocol driver instance data could not be
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync allocated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR An unexpected system or network error occurred. The EFI FTPv4
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Protocol driver instance is not configured.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_FTP4_CONFIGURE)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FTP4_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FTP4_CONFIG_DATA *FtpConfigData OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Downloads a file from an FTPv4 server.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The ReadFile() function is used to initialize and start an FTPv4 download process
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync and optionally wait for completion. When the download operation completes, whether
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync successfully or not, the Token.Status field is updated by the EFI FTPv4 Protocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync driver and then Token.Event is signaled (if it is not NULL).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Data will be downloaded from the FTPv4 server into Token.DataBuffer. If the file size
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is larger than Token.DataBufferSize, Token.DataCallback will be called to allow for
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync processing data and then new data will be placed at the beginning of Token.DataBuffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This Pointer to the EFI_FTP4_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Token Pointer to the token structure to provide the parameters that
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are used in this operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The data file is being downloaded successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER One or more of the parameters is not valid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - This is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Token is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Token.Pathname is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Token. DataBuffer is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Token. DataBufferSize is 0.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_STARTED The EFI FTPv4 Protocol driver has not been started.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NO_MAPPING When using a default address, configuration (DHCP, BOOTP,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RARP, etc.) is not finished yet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR An unexpected network error or system error occurred.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_FTP4_READ_FILE)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FTP4_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FTP4_COMMAND_TOKEN *Token
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Uploads a file from an FTPv4 server.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The WriteFile() function is used to initialize and start an FTPv4 upload process and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync optionally wait for completion. When the upload operation completes, whether successfully
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync or not, the Token.Status field is updated by the EFI FTPv4 Protocol driver and then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Token.Event is signaled (if it is not NULL). Data to be uploaded to server is stored
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync into Token.DataBuffer. Token.DataBufferSize is the number bytes to be transferred.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If the file size is larger than Token.DataBufferSize, Token.DataCallback will be called
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync to allow for processing data and then new data will be placed at the beginning of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Token.DataBuffer. Token.DataBufferSize is updated to reflect the actual number of bytes
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync to be transferred. Token.DataBufferSize is set to 0 by the call back to indicate the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync completion of data transfer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This Pointer to the EFI_FTP4_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Token Pointer to the token structure to provide the parameters that
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are used in this operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS TThe data file is being uploaded successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED The operation is not supported by this implementation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER One or more of the parameters is not valid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - This is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Token is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Token.Pathname is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Token. DataBuffer is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Token. DataBufferSize is 0.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_STARTED The EFI FTPv4 Protocol driver has not been started.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NO_MAPPING When using a default address, configuration (DHCP, BOOTP,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RARP, etc.) is not finished yet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR An unexpected network error or system error occurred.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_FTP4_WRITE_FILE)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FTP4_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FTP4_COMMAND_TOKEN *Token
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Download a data file "directory" from a FTPv4 server. May be unsupported in some EFI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync implementations.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The ReadDirectory() function is used to return a list of files on the FTPv4 server that
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync logically (or operationally) related to Token.Pathname, and optionally wait for completion.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync When the download operation completes, whether successfully or not, the Token.Status field
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is updated by the EFI FTPv4 Protocol driver and then Token.Event is signaled (if it is not
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NULL). Data will be downloaded from the FTPv4 server into Token.DataBuffer. If the file size
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is larger than Token.DataBufferSize, Token.DataCallback will be called to allow for processing
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync data and then new data will be placed at the beginning of Token.DataBuffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This Pointer to the EFI_FTP4_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Token Pointer to the token structure to provide the parameters that
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are used in this operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The file list information is being downloaded successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED The operation is not supported by this implementation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER One or more of the parameters is not valid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - This is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Token is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Token. DataBuffer is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Token. DataBufferSize is 0.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_STARTED The EFI FTPv4 Protocol driver has not been started.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NO_MAPPING When using a default address, configuration (DHCP, BOOTP,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RARP, etc.) is not finished yet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR An unexpected network error or system error occurred.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_FTP4_READ_DIRECTORY)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FTP4_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FTP4_COMMAND_TOKEN *Token
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Polls for incoming data packets and processes outgoing data packets.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The Poll() function can be used by network drivers and applications to increase the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rate that data packets are moved between the communications device and the transmit
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync and receive queues. In some systems, the periodic timer event in the managed network
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync driver may not poll the underlying communications device fast enough to transmit
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync and/or receive all data packets without missing incoming packets or dropping outgoing
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync packets. Drivers and applications that are experiencing packet loss should try calling
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the Poll() function more often.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This Pointer to the EFI_FTP4_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Incoming or outgoing data was processed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_STARTED This EFI FTPv4 Protocol instance has not been started.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER This is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR EapAuthType An unexpected system or network error occurred.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_TIMEOUT Data was dropped out of the transmit and/or receive queue.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Consider increasing the polling rate.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_FTP4_POLL)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FTP4_PROTOCOL *This
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// EFI_FTP4_PROTOCOL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// provides basic services for client-side FTP (File Transfer Protocol)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// operations.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct _EFI_FTP4_PROTOCOL {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_FTP4_GET_MODE_DATA GetModeData;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_FTP4_CONNECT Connect;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_FTP4_CLOSE Close;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_FTP4_CONFIGURE Configure;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_FTP4_READ_FILE ReadFile;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_FTP4_WRITE_FILE WriteFile;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_FTP4_READ_DIRECTORY ReadDirectory;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_FTP4_POLL Poll;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiFtp4ServiceBindingProtocolGuid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiFtp4ProtocolGuid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync