📄 pxe.h
字号:
SEGSEL_t ROMAddress; /* Real mode ROM segment address */ uint16_t RxBufCt; /* Receive queue length */ uint16_t TxBufCt; /* Transmit queue length */} PACKED t_PXENV_UNDI_GET_INFORMATION;#define PXENV_UNDI_GET_STATISTICS 0x000Dtypedef struct { PXENV_STATUS_t Status; uint32_t XmitGoodFrames; /* Number of successful transmissions */ uint32_t RcvGoodFrames; /* Number of good frames received */ uint32_t RcvCRCErrors; /* Number of frames with CRC errors */ uint32_t RcvResourceErrors; /* Number of frames dropped */} PACKED t_PXENV_UNDI_GET_STATISTICS;#define PXENV_UNDI_CLEAR_STATISTICS 0x000Etypedef struct { PXENV_STATUS_t Status;} PACKED t_PXENV_UNDI_CLEAR_STATISTICS;#define PXENV_UNDI_INITIATE_DIAGS 0x000Ftypedef struct { PXENV_STATUS_t Status;} PACKED t_PXENV_UNDI_INITIATE_DIAGS;#define PXENV_UNDI_FORCE_INTERRUPT 0x0010typedef struct { PXENV_STATUS_t Status;} PACKED t_PXENV_UNDI_FORCE_INTERRUPT;#define PXENV_UNDI_GET_MCAST_ADDRESS 0x0011typedef struct { PXENV_STATUS_t Status; IP4_t InetAddr; /* IP mulicast address */ MAC_ADDR MediaAddr; /* MAC multicast address */} PACKED t_PXENV_UNDI_GET_MCAST_ADDR;#define PXENV_UNDI_GET_NIC_TYPE 0x0012typedef struct { PXENV_STATUS_t Status; uint8_t NicType; /* Type of NIC */# define PCI_NIC 2# define PnP_NIC 3# define CardBus_NIC 4 union { struct { uint16_t Vendor_ID; uint16_t Dev_ID; uint8_t Base_Class; uint8_t Sub_Class; uint8_t Prog_Intf; uint8_t Rev; uint16_t BusDevFunc; uint16_t SubVendor_ID; uint16_t SubDevice_ID; } pci, cardbus; struct { uint32_t EISA_Dev_ID; uint8_t Base_Class; uint8_t Sub_Class; uint8_t Prog_Intf; uint16_t CardSelNum; } pnp; } info;} PACKED t_PXENV_UNDI_GET_NIC_TYPE;#define PXENV_UNDI_GET_IFACE_INFO 0x0013typedef struct { PXENV_STATUS_t Status; uint8_t IfaceType[16]; /* Name of MAC type in ASCII. */ uint32_t LinkSpeed; /* Defined in NDIS 2.0 spec */ uint32_t ServiceFlags; /* Defined in NDIS 2.0 spec */ uint32_t Reserved[4]; /* must be 0 */} PACKED t_PXENV_UNDI_GET_NDIS_INFO;#define PXENV_UNDI_ISR 0x0014typedef struct { PXENV_STATUS_t Status; uint16_t FuncFlag; /* PXENV_UNDI_ISR_OUT_xxx */ uint16_t BufferLength; /* Length of Frame */ uint16_t FrameLength; /* Total length of reciever frame */ uint16_t FrameHeaderLength; /* Length of the media header in Frame */ SEGOFF16_t Frame; /* receive buffer */ uint8_t ProtType; /* Protocol type */ uint8_t PktType; /* Packet Type */# define PXENV_UNDI_ISR_IN_START 1# define PXENV_UNDI_ISR_IN_PROCESS 2# define PXENV_UNDI_ISR_IN_GET_NEXT 3 /* one of these will be returned for PXENV_UNDI_ISR_IN_START */# define PXENV_UNDI_ISR_OUT_OURS 0# define PXENV_UNDI_ISR_OUT_NOT_OUTS 1 /* * one of these will bre returnd for PXEND_UNDI_ISR_IN_PROCESS * and PXENV_UNDI_ISR_IN_GET_NEXT */# define PXENV_UNDI_ISR_OUT_DONE 0# define PXENV_UNDI_ISR_OUT_TRANSMIT 2# define PXENV_UNDI_ISR_OUT_RECIEVE 3# define PXENV_UNDI_ISR_OUT_BUSY 4} PACKED t_PXENV_UNDI_ISR;#define PXENV_STOP_UNDI 0x0015typedef struct { PXENV_STATUS_t Status;} PACKED t_PXENV_STOP_UNDI;#define PXENV_TFTP_OPEN 0x0020typedef struct { PXENV_STATUS_t Status; IP4_t ServerIPAddress; IP4_t GatewayIPAddress; uint8_t FileName[128]; UDP_PORT_t TFTPPort; uint16_t PacketSize;} PACKED t_PXENV_TFTP_OPEN;#define PXENV_TFTP_CLOSE 0x0021typedef struct { PXENV_STATUS_t Status;} PACKED t_PXENV_TFTP_CLOSE;#define PXENV_TFTP_READ 0x0022typedef struct { PXENV_STATUS_t Status; uint16_t PacketNumber; uint16_t BufferSize; SEGOFF16_t Buffer;} PACKED t_PXENV_TFTP_READ;#define PXENV_TFTP_READ_FILE 0x0023typedef struct { PXENV_STATUS_t Status; uint8_t FileName[128]; uint32_t BufferSize; ADDR32_t Buffer; IP4_t ServerIPAddress; IP4_t GatewayIPAdress; IP4_t McastIPAdress; UDP_PORT_t TFTPClntPort; UDP_PORT_t TFTPSrvPort; uint16_t TFTPOpenTimeOut; uint16_t TFTPReopenDelay;} PACKED t_PXENV_TFTP_READ_FILE;#define PXENV_TFTP_GET_FSIZE 0x0025typedef struct { PXENV_STATUS_t Status; IP4_t ServerIPAddress; IP4_t GatewayIPAdress; uint8_t FileName[128]; uint32_t FileSize;} PACKED t_PXENV_TFTP_GET_FSIZE;#define PXENV_UDP_OPEN 0x0030typedef struct { PXENV_STATUS_t status; IP4_t src_ip; /* IP address of this station */} PACKED t_PXENV_UDP_OPEN;#define PXENV_UDP_CLOSE 0x0031typedef struct { PXENV_STATUS_t status;} PACKED t_PXENV_UDP_CLOSE;#define PXENV_UDP_READ 0x0032typedef struct { PXENV_STATUS_t status; IP4_t src_ip; /* IP of sender */ IP4_t dest_ip; /* Only accept packets sent to this IP */ UDP_PORT_t s_port; /* UDP source port of sender */ UDP_PORT_t d_port; /* Only accept packets sent to this port */ uint16_t buffer_size; /* Size of the packet buffer */ SEGOFF16_t buffer; /* SEG:OFF to the packet buffer */} PACKED t_PXENV_UDP_READ;#define PXENV_UDP_WRITE 0x0033typedef struct { PXENV_STATUS_t status; IP4_t ip; /* dest ip addr */ IP4_t gw; /* ip gateway */ UDP_PORT_t src_port; /* source udp port */ UDP_PORT_t dst_port; /* destination udp port */ uint16_t buffer_size; /* Size of the packet buffer */ SEGOFF16_t buffer; /* SEG:OFF to the packet buffer */} PACKED t_PXENV_UDP_WRITE;#define PXENV_UNLOAD_STACK 0x0070typedef struct { PXENV_STATUS_t Status; uint8_t reserved[10];} PACKED t_PXENV_UNLOAD_STACK;#define PXENV_GET_CACHED_INFO 0x0071typedef struct { PXENV_STATUS_t Status; uint16_t PacketType; /* type (defined right here) */# define PXENV_PACKET_TYPE_DHCP_DISCOVER 1# define PXENV_PACKET_TYPE_DHCP_ACK 2# define PXENV_PACKET_TYPE_BINL_REPLY 3 uint16_t BufferSize; /* max to copy, leave at 0 for pointer */ SEGOFF16_t Buffer; /* copy to, leave at 0 for pointer */ uint16_t BufferLimit; /* max size of buffer in BC dataseg ? */} PACKED t_PXENV_GET_CACHED_INFO;/* structure filled in by PXENV_GET_CACHED_INFO * (how we determine which IP we downloaded the initial bootstrap from) * words can't describe... */typedef struct { uint8_t opcode;# define BOOTP_REQ 1# define BOOTP_REP 2 uint8_t Hardware; /* hardware type */ uint8_t Hardlen; /* hardware addr len */ uint8_t Gatehops; /* zero it */ uint32_t ident; /* random number chosen by client */ uint16_t seconds; /* seconds since did initial bootstrap */ uint16_t Flags; /* seconds since did initial bootstrap */# define BOOTP_BCAST 0x8000 /* ? */ IP4_t cip; /* Client IP */ IP4_t yip; /* Your IP */ IP4_t sip; /* IP to use for next boot stage */ IP4_t gip; /* Relay IP ? */ MAC_ADDR CAddr; /* Client hardware address */ uint8_t Sname[64]; /* Server's hostname (Optional) */ uint8_t bootfile[128]; /* boot filename */ union {# if 1# define BOOTP_DHCPVEND 1024 /* DHCP extended vendor field size */# else# define BOOTP_DHCPVEND 312 /* DHCP standard vendor field size */# endif uint8_t d[BOOTP_DHCPVEND]; /* raw array of vendor/dhcp options */ struct { uint8_t magic[4]; /* DHCP magic cookie */# ifndef VM_RFC1048# define VM_RFC1048 0x63825363L /* ? */# endif uint32_t flags; /* bootp flags/opcodes */ uint8_t pad[56]; /* I don't think intel knows what a union does... */ } v; } vendor;} PACKED BOOTPLAYER;#define PXENV_RESTART_TFTP 0x0073#define t_PXENV_RESTART_TFTP t_PXENV_TFTP_READ_FILE#define PXENV_START_BASE 0x0075typedef struct { PXENV_STATUS_t Status;} PACKED t_PXENV_START_BASE;#define PXENV_STOP_BASE 0x0076typedef struct { PXENV_STATUS_t Status;} PACKED t_PXENV_STOP_BASE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -