Extensible Firmware Interface Specification
378 12/12/00 Version 1.02

G.2 Overview

There are three major design changes between this specification and the 16-bit UNDI in version 2.1
of the PXE Specification:
A new architectural hardware interface has been added.
All UNDI commands use the same command format.
BC is no longer part of the UNDI ROM.

G.2.1 32/64-bit UNDI Interface

The !PXE structures are used locate and identify the type of 32/64-bit UNDI interface (H/W or
S/W). These structures are normally only used by the system BIOS and universal network drivers.
Len +
0x0C
Offset 0x00 0x01 0x02 0x03
0x00
0x04
0x08
0x0C
Len
Len +
0x04
Len +
0x08
!PXE
H/W UNDI
Offset 0x00 0x01 0x02 0x03
0x00
0x04
0x08
0x0C
0x18
0x10
!PXE
S/W UNDI
0x20
0x14
0x1C
Signature
Len
Fudge
Rev
IFcnt
Implemenation
reserved
BusType(s)
EntryPoint
#bus
More BusType(s)
0x10
Signature
Len
Fudge
Rev
IFcnt
Major Minor
Implemenation
Status
Command
CDBaddr
reserved
reserved
Major Minor
reserved
Figure G-2. !PXE Structures for H/W and S/W UNDI
The !PXE structures used for H/W and S/W UNDIs are similar but not identical. The difference in
the format is tied directly to the differences required by the implementation. The !PXE structures
for 32/64-bit UNDI are not compatible with the !PXE structure for 16-bit UNDI.
The !PXE structure for H/W UNDI is built into the NIC hardware. The first nine fields (from
offsets 0x00 to 0x0F) are implemented as read-only memory (or ports). The last three fields (from
Len to Len + 0x0F) are implemented as read/write memory (or ports). The optional reserved field
at 0x10 is not defined in this specification and may be used for vendor data. How the location of
the !PXE structure is found in system memory, or I/O, space is architecture dependent and is
outside the scope of this specification.