Newer
Older
AMI-Aptio-BIOS-Reversed / Mtftp6Dxe / Mtftp6Dxe.md
@Ajax Dong Ajax Dong 2 days ago 3 KB Init

Mtftp6Dxe

Function Table

Address Name Description
Mtftp6DriverEntryPoint
Mtftp6DriverBindingSupported
Mtftp6DriverBindingStart
Mtftp6DriverBindingStop
Mtftp6ServiceCreateChild
Mtftp6ServiceDestroyChild
Mtftp6GetModeData
Mtftp6Configure
Mtftp6ReadFile
Mtftp6WriteFile
Mtftp6ReadDirectory
Mtftp6Poll
Mtftp6RrqCallback
Mtftp6WrqCallback
Mtftp6MulticastCallback
Mtftp6TimeoutNotify
Mtftp6CleanupOperation
Mtftp6SendAck
Mtftp6SendError
Mtftp6DataProcess
Mtftp6SendRequest
Mtftp6Transmit
Module globals
EFI_HANDLE gImageHandle = NULL;
Driver Binding Protocol instance table (off_9E50):
EFI_DRIVER_BINDING_PROTOCOL mDriverBinding = {
Component Name table (off_9E80):
EFI_COMPONENT_NAME2_PROTOCOL mComponentName2 = {
Service Binding Protocol instance (off_9E98):
EFI_SERVICE_BINDING_PROTOCOL mServiceBinding = {
MTFTP6 Protocol instance template (off_9ED0):
EFI_MTFTP6_PROTOCOL mMtftp6ProtocolTemplate = {
DRIVER ENTRY POINT (sub_528 + sub_698)
Save global pointers and initialize library constructors
gImageHandle = ImageHandle;
Open DPC protocol (gEfiDpcProtocolGuid = {0x4F948815-...})
Status = gBS->LocateProtocol (
Read NetworkStackVar and install driver binding
Variable exists -> install driver binding protocol
Status = gBS->InstallMultipleProtocolInterfaces (
DRIVER BINDING PROTOCOL
Check if controller already has MTFTP6 service binding installed
EFI_STATUS Status;
Already has our protocol -> unsupported (already bound)
Now try to create a child: open config protocol and create service
Allocate a timer event for timeout handling
Status = gBS->CreateEvent (
Open UDP I/O for IPv6
No RxNotify
return EFI_UNSUPPORTED; // Placeholder
MTFTP6 PROTOCOL IMPLEMENTATION
Allocates a MTFTP6_INSTANCE (280 bytes), copies config data
opens UDP I/O from controller, returns mode info.
return EFI_UNSUPPORTED;
Marks instance as configured, sets up UDP I/O callback
registration for Rx and Tx.
Main read file entry:
Main write file entry.
Similar to ReadFile but uses WRQ operation.
Not implemented (returns EFI_UNSUPPORTED)
Polls for Rx events via UdpIoRecvDatagram / DPC queue drain.
CALLBACK HANDLERS
Main RRQ receive callback:
Triggered by UdpIo when a datagram arrives.
Main WRQ receive callback:
Triggered by UdpIo when a datagram arrives during WRQ.
Multicast reception callback.
Handles data blocks arriving on the multicast socket.
INTERNAL OPERATIONS
Timer event callback:
return EFI_SUCCESS;
Cleans up an in-progress operation:
Build and send an ACK packet:
Build and send an ERROR packet:
Process incoming DATA packet:
Build the initial request packet (RRQ or WRQ):
2 (opcode) + len(filename) + 1 + len("octet") + 1 +
sum for each option: len(optname)+1 + len(optval)+1
Core transmit routine:

Generated by HR650X BIOS Decompilation Project