beautypg.com

Intel Extensible Firmware Interface User Manual

Page 901

background image

32/64-Bit UNDI Specification

Version 1.10

12/01/02

E-35

E.3.5.2 PXE_SW_UNDI

This section defines the C structures and #defines for the !PXE S/W UNDI interface.

#pragma pack(1)

typedef struct s_pxe_sw_undi {

PXE_UINT32

Signature; //

PXE_ROMID_SIGNATURE

PXE_UINT8

Len; //

sizeof(PXE_SW_UNDI)

PXE_UINT8

Fudge;

// makes 8-bit cksum zero

PXE_UINT8

Rev; //

PXE_ROMID_REV

PXE_UINT8

IFcnt;

// physical connector count

PXE_UINT8

MajorVer;

//

PXE_ROMID_MAJORVER

PXE_UINT8

MinorVer;

//

PXE_ROMID_MINORVER

PXE_UINT16

reserved1;

// zero, not used

PXE_UINT32

Implementation; // Implementation flags

PXE_UINT64

EntryPoint;

// API entry point

PXE_UINT8

reserved2[3];

// zero, not used

PXE_UINT8

BusCnt;

// number of bustypes supported

PXE_UINT32

BusType[1];

// list of supported bustypes

} PXE_SW_UNDI;

#pragma pack()

E.3.5.3 PXE_UNDI

PXE_UNDI combines both the H/W and S/W UNDI types into one typedef and has #defines for
common fields in both H/W and S/W UNDI types.

#pragma pack(1)

typedef union u_pxe_undi {

PXE_HW_UNDI

hw;

PXE_SW_UNDI

sw;

} PXE_UNDI;

#pragma pack()

// Signature of !PXE structure

#define PXE_ROMID_SIGNATURE

PXE_BUSTYPE(’!’, ’P’, ’X’, ’E’)

// !PXE structure format revision

#define

PXE_ROMID_REV

0x02

// UNDI command interface revision. These are the values that
// get sent in option 94 (Client Network Interface Identifier) in
// the DHCP Discover and PXE Boot Server Request packets.

#define

PXE_ROMID_MAJORVER

0x03

#define

PXE_ROMID_MINORVER

0x01