vesabiosextensions.h
来自「EFI BIOS是Intel提出的下一代的BIOS标准。这里上传的Edk源代码是」· C头文件 代码 · 共 458 行 · 第 1/2 页
H
458 行
/*++
Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
Module Name:
VesaBiosExtensions.h
Abstract:
Revision History
--*/
#ifndef _VESA_BIOS_EXTENSIONS_H
#define _VESA_BIOS_EXTENSIONS_H
//
// Turn on byte packing of data structures
//
#pragma pack(1)
//
// VESA BIOS Extensions status codes
//
#define VESA_BIOS_EXTENSIONS_STATUS_SUCCESS 0x004f
//
// VESA BIOS Extensions Services
//
#define VESA_BIOS_EXTENSIONS_RETURN_CONTROLLER_INFORMATION 0x4f00
/*++
Routine Description:
Function 00 : Return Controller Information
Arguments:
Inputs:
AX = 0x4f00
ES:DI = Pointer to buffer to place VESA_BIOS_EXTENSIONS_INFORMATION_BLOCK structure
Outputs:
AX = Return Status
--*/
#define VESA_BIOS_EXTENSIONS_RETURN_MODE_INFORMATION 0x4f01
/*++
Routine Description:
Function 01 : Return Mode Information
Arguments:
Inputs:
AX = 0x4f01
CX = Mode Number
ES:DI = Pointer to buffer to place VESA_BIOS_EXTENSIONS_MODE_INFORMATION_BLOCK structure
Outputs:
AX = Return Status
--*/
#define VESA_BIOS_EXTENSIONS_SET_MODE 0x4f02
/*++
Routine Description:
Function 02 : Set Mode
Arguments:
Inputs:
AX = 0x4f02
BX = Desired mode to set
D0-D8 = Mode Number
D9-D10 = Reserved (must be 0)
D11 = 0 - Use current default refresh rate
= 1 - Use user specfieid CRTC values for refresh rate
D12-D13 = Reserved (must be 0)
D14 = 0 - Use windowed frame buffer model
= 1 - Use linear/flat frame buffer model
D15 = 0 - Clear display memory
= 1 - Don't clear display memory
ES:DI = Pointer to buffer to the VESA_BIOS_EXTENSIONS_CRTC_INFORMATION_BLOCK structure
Outputs:
AX = Return Status
--*/
#define VESA_BIOS_EXTENSIONS_RETURN_CURRENT_MODE 0x4f03
/*++
Routine Description:
Function 03 : Return Current Mode
Arguments:
Inputs:
AX = 0x4f03
Outputs:
AX = Return Status
BX = Current mode
D0-D13 = Mode Number
D14 = 0 - Windowed frame buffer model
= 1 - Linear/flat frame buffer model
D15 = 0 - Memory cleared at last mode set
= 1 - Memory not cleared at last mode set
--*/
#define VESA_BIOS_EXTENSIONS_SAVE_RESTORE_STATE 0x4f04
/*++
Routine Description:
Function 04 : Save/Restore State
Arguments:
Inputs:
AX = 0x4f03
DL = 0x00 - Return Save/Restore State buffer size
= 0x01 - Save State
= 0x02 - Restore State
CX = Requested Status
D0 = Save/Restore controller hardware state
D1 = Save/Restore BIOS data state
D2 = Save/Restore DAC state
D3 = Save/Restore Regsiter state
ES:BX = Pointer to buffer if DL=1 or DL=2
Outputs:
AX = Return Status
BX = Number of 64 byte blocks to hold the state buffer if DL=0
--*/
#define VESA_BIOS_EXTENSIONS_EDID 0x4f15
/*++
Routine Description:
Function 15 : implement VBE/DDC service
Arguments:
Inputs:
AX = 0x4f15
BL = 0x00 - Report VBE/DDC Capabilities
CX = 0x00 - Controller unit number (00 = primary controller)
ES:DI = Null pointer, must be 0:0 in version 1.0
Outputs:
AX = Return Status
BH = Approx. time in seconds, rounded up, to transfer one EDID block(128 bytes)
BL = DDC level supported
D0 = 0 DDC1 not supported
= 1 DDC1 supported
D1 = 0 DDC2 not supported
= 1 DDC2 supported
D2 = 0 Screen not blanked during data transfer
= 1 Screen blanked during data transfer
Inputs:
AX = 0x4f15
BL = 0x01 - Read EDID
CX = 0x00 - Controller unit number (00 = primary controller)
DX = 0x00 - EDID block number
ES:DI = Pointer to buffer in which the EDID block is returned
Outputs:
AX = Return Status
--*/
//
// Timing data from EDID data block
//
#define VESA_BIOS_EXTENSIONS_EDID_BLOCK_SIZE 128
#define VESA_BIOS_EXTENSIONS_EDID_ESTABLISHED_TIMING_MAX_NUMBER 17
typedef struct {
UINT16 HorizontalResolution;
UINT16 VerticalResolution;
UINT16 RefreshRate;
} VESA_BIOS_EXTENSIONS_EDID_TIMING;
typedef struct {
UINT32 ValidNumber;
UINT32 Key[VESA_BIOS_EXTENSIONS_EDID_ESTABLISHED_TIMING_MAX_NUMBER];
} VESA_BIOS_EXTENSIONS_VALID_EDID_TIMING;
typedef struct {
UINT8 Header[8]; //EDID header "00 FF FF FF FF FF FF 00"
UINT16 ManufactureName; //EISA 3-character ID
UINT16 ProductCode; //Vendor assigned code
UINT32 SerialNumber; //32-bit serial number
UINT8 WeekOfManufacture; //Week number
UINT8 YearOfManufacture; //Year
UINT8 EdidVersion; //EDID Structure Version
UINT8 EdidRevision; //EDID Structure Revision
UINT8 VideoInputDefinition;
UINT8 MaxHorizontalImageSize; //cm
UINT8 MaxVerticalImageSize; //cm
UINT8 DisplayTransferCharacteristic;
UINT8 FeatureSupport;
UINT8 RedGreenLowBits; //Rx1 Rx0 Ry1 Ry0 Gx1 Gx0 Gy1Gy0
UINT8 BlueWhiteLowBits; //Bx1 Bx0 By1 By0 Wx1 Wx0 Wy1 Wy0
UINT8 RedX; //Red-x Bits 9 - 2
UINT8 RedY; //Red-y Bits 9 - 2
UINT8 GreenX; //Green-x Bits 9 - 2
UINT8 GreenY; //Green-y Bits 9 - 2
UINT8 BlueX; //Blue-x Bits 9 - 2
UINT8 BlueY; //Blue-y Bits 9 - 2
UINT8 WhiteX; //White-x Bits 9 - 2
UINT8 WhiteY; //White-x Bits 9 - 2
UINT8 EstablishedTimings[3];
UINT8 StandardTimingIdentification[16];
UINT8 DetailedTimingDescriptions[72];
UINT8 ExtensionFlag; //Number of (optional) 128-byte EDID extension blocks to follow
UINT8 Checksum;
} VESA_BIOS_EXTENSIONS_EDID_DATA_BLOCK;
//
// Super VGA Information Block
//
typedef struct {
UINT32 VESASignature; // 'VESA' 4 byte signature
UINT16 VESAVersion; // VBE version number
UINT32 OEMStringPtr; // Pointer to OEM string
UINT32 Capabilities; // Capabilities of video card
UINT32 VideoModePtr; // Pointer to an array of 16-bit supported modes values terminated by 0xFFFF
UINT16 TotalMemory; // Number of 64kb memory blocks
UINT16 OemSoftwareRev; // VBE implementation Software revision
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?