| 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