⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dalbase.h

📁 此代码为WCE5.0下显示器的源代码
💻 H
📖 第 1 页 / 共 2 页
字号:

typedef struct _EDID_BUFFER
{
    ULONG   ulSize;
    ULONG   ulFormatId;
    UCHAR   aucEdidDataBuffer[256];
} EDID_BUFFER, FAR *LPEDID_BUFFER;

#define EDID_DETAILED_V1x_FLAG_BIT1         0x02
#define EDID_DETAILED_V1x_FLAG_BIT2         0x04
#define EDID_DETAILED_V1x_FLAG_BIT3         0x08
#define EDID_DETAILED_V1x_FLAG_BIT4         0x10
#define EDID_DETAILED_V1x_FLAG_INTERLACED   0x80

// Structure definition for EDID detailed timing section
typedef struct _EDID_DETAILED_V11
{
   USHORT usPixelClock;       // Pixel Clock
   UCHAR ucHActiveL8;         // H.Active[7-0]
   UCHAR ucHBlankingL8;       // H.Blanking[7-0]
   UCHAR ucHActive_HBlankU4;  // 7-4:H.Active[11-8], 3-0:H.blanking[11-8]
   UCHAR ucVActiveL8;         // V.Active[7-0]
   UCHAR ucVBlankingL8;       // V.Blanking[7-0]
   UCHAR ucVActive_VBlankU4;  // 7-4:V.Active[11-8], 3-0:V.blanking[11-8]
   UCHAR ucHSyncOffsetL8;     // H.SyncOffset[7-0]
   UCHAR ucHSyncWidthL8;      // H.SyncWidth[7-0]
   UCHAR ucVSyncOffset_VSyncWidthL4; // 7-4:V.SyncOffset[3-0], 3-0:V.SyncWidth[3-0]
   UCHAR ucHSyncOffset_HSyncWidth_VSyncOffset_VSyncWidth;  // 7,6:HSyncOffset[9,8], 5,4:HSyncWidth[9,8], 3,2:VSyncOffset[5,4], 1,0:VSyncWidth[5,4]
   UCHAR ucHImageSize;        // mm, lower 8 bits
   UCHAR ucVImageSize;        // mm, lower 8 bits
   UCHAR ucHVImageSizeU4;     // 7-4:H.ImageSize[11-8], 3-0:V.ImageSize[11-8]
   UCHAR ucHBorder;           // H.Border in pixels
   UCHAR ucVBorder;           // V.Border in lines
   UCHAR ucFlags;             // Interlace, stereo, H.Polarity, V.Polaritym, SConfig, Reserved
} EDID_DETAILED_V11, FAR *LPEDID_DETAILED_V11;

typedef struct _EDID_STANDARD_TIMING
{
    UCHAR ucHorizontalActive;                       // (Horizontal Active pixels / 8) - 1
    UCHAR ucAspectAndRefreshRate;                   // Bits 6-7 = aspect ratio, bits 0-5 = refresh rate - 60
} EDID_STANDARD_TIMING, *LPEDID_STANDARD_TIMING;

// Structure definition for DDC EDID information block
typedef struct _EDID_DATA_V11
{
   UCHAR aucHeader [8];
   UCHAR aucVendorID [10];
   UCHAR aucVersion [2];
   UCHAR aucBasicDisplayParameters [5];
   UCHAR aucColorCharacteristics [10];
   UCHAR aucEstablishedTimings [3];
   USHORT ausStandardTimings [8];
   EDID_DETAILED_V11 EDIDDetailedTimings [4];
   UCHAR ucExtensionFlag;
   UCHAR ucChecksum;
} EDID_DATA_V11, FAR *LPEDID_DATA_V11;

// Structure definition for DDC EDID 2.0 information block
typedef struct _EDID_DATA_V20
{
   UCHAR ucVersion;
   UCHAR aucVendorID [7];
   UCHAR aucManufacturerID[32];
   UCHAR aucSerialNumber[16];
   UCHAR aucReserved[8];
   UCHAR aucDisplayInterfaceParameters[15];
   UCHAR aucDisplayDeviceDescription[5];
   UCHAR aucDisplayResponseTime[2];
   UCHAR aucColorDescription[28];
   UCHAR aucDisplaySpatialDescription[10];
   UCHAR ucReserved;
   UCHAR ucGTFInformation;
   UCHAR aucMapofTimingInfo[2];
   UCHAR aucTimingDescriptions[127];
   UCHAR ucChecksum;
} EDID_DATA_V20, FAR *LPEDID_DATA_V20;

typedef struct _EDID_DETAILED_V11 EDID_DETAILED_V1X, FAR *LPEDID_DETAILED_V1X;

typedef struct _EDID_DATA_V1X
{
   UCHAR aucHeader [8];
   UCHAR aucVendorID [10];
   UCHAR aucVersion [2];
   UCHAR aucBasicDisplayParameters [5];
   UCHAR aucColorCharacteristics [10];
   UCHAR aucEstablishedTimings [3];
   EDID_STANDARD_TIMING ausStandardTimings [8];
   EDID_DETAILED_V1X    EDIDDetailedTimings[4];
   UCHAR ucExtensionFlag;
   UCHAR ucChecksum;
}EDID_DATA_V1X, FAR * LPEDID_DATA_V1X;

typedef struct _FREQUENCY_RANGE
{
   USHORT usMax_Frequency;
   USHORT usMin_Frequency;
} FREQUENCY_RANGE, FAR *LPFREQUENCY_RAGNE;

#define MODESUPPORTEDFLAG_EXACT_FREQ   0x00000001 // Flag to indicate only this frequecy
                                                  // is supported

typedef struct _MODE_SUPPORTED
{
    ULONG   ulModeFlags;
    ULONG   ulHorizontalRes;
    ULONG   ulVerticalRes;
    ULONG   ulRefreshRate;
}MODE_SUPPORTED, FAR *LPMODE_SUPPORTED;

#define MONITORINFO_DISPLAYCAPS_FIXEDDISPLAY      0x00000001 // Flag to indicate that
                                                             // the display device could
                                                             // not be changed.

#define MONITORINFO_DISPLAYCAPS_USEOSMONITORINFO  0x80000000 // Is this should be here???

typedef struct _MONITOR_INFO
{
    ULONG   ulMaxHorizontalRes;
    ULONG   ulMaxVerticalRes;
    ULONG   ulMaxRefreshRate;
    ULONG   ulMinHorizontalFreq;
    ULONG   ulMaxHorizontalFreq;
    ULONG   ulUseOverride;
    ULONG   ulDisplayCaps;
    MODE_SUPPORTED  aModeSupported[MAX_NO_MONITOR_INFO_MODES];
    EDID_BUFFER     EDIDRegMonInfo;
    
}MONITOR_INFO, FAR *LPMONITOR_INFO;

typedef struct _MONITOR_RANGE_LIMTS
{
    ULONG   ulMinVerticalRate;
    ULONG   ulMaxVerticalRate;
    ULONG   ulMinHorizontalRate;
    ULONG   ulMaxHorizontalRate;
    ULONG   ulMaxPixelClock;
}MONITOR_RANGE_LIMITS, FAR *LPMONITOR_RANGE_LIMITS;

#define DDC_INFO_FLAG_MONITORRANGELIMITSUPPORTED      0x00000001L

typedef struct _DDC_INFO
{
    UCHAR           DDCDisplayName[EDID_DISPLAY_NAME_SIZE];
    ULONG           ulDDCInfoFlag;
    ULONG           ulDDCManufacturerName;
    ULONG           ulDDCProductCode;
    ULONG           ulDDCEdidVersion;
    MODE_SUPPORTED  DDCMaxModeSupported;
    MONITOR_RANGE_LIMITS sMonitorRangeLimits;
}DDC_INFO, FAR *LPDDC_INFO;

enum
{
  VRAM_FASTPAGE = 1,
  VRAM_EDO,
  VRAM_WRAM,
  VRAM_SDRSDRAM,
  VRAM_DDRSDRAM,
  VRAM_SDRSGRAM,
  VRAM_DDRSGRAM,
  VRAM_INBEDDED,
  VRAM_RAMBUS
};

// DAL_DISPLAYDEVICEINFO structure will be used by GDOs
// to pass device info to DAL.
typedef struct _DAL_DISPLAYDEVICEINFO
{
    ULONG  ulOutputType;		      // Composite/SVIDEO/Analog/Digital/...
    ULONG  ulFlag;
    ULONG  ulReserved1;
    ULONG  ulReserved2;
    ULONG  ulReserved3;
    ULONG  ulReserved4;
} DAL_DISPLAYDEVICEINFO, FAR *LPDAL_DISPLAYDEVICEINFO;

//
// Flags used for manipulating the DAL_DISPLAYDEVICEINFO structure.
//
#define DAL_DISPLAY_OUTPUTTYPE_UNKNOWN                        0
#define DAL_DISPLAY_OUTPUTTYPE_COMPOSITE                      1
#define DAL_DISPLAY_OUTPUTTYPE_SVIDEO                         2
#define DAL_DISPLAY_OUTPUTTYPE_ANALOG                         3
#define DAL_DISPLAY_OUTPUTTYPE_DIGITAL                        4

#define DAL_DISPLAY_FEATUREFLAG_SMARTDETECTION_SUPPORTED      0x00000001

#ifdef CE_BUILD

typedef struct _VIDEO_MODE_INFORMATION {
    ULONG Length;
    ULONG ModeIndex;
    ULONG VisScreenWidth;
    ULONG VisScreenHeight;
    ULONG ScreenStride;
    ULONG NumberOfPlanes;
    ULONG BitsPerPlane;
    ULONG Frequency;
    ULONG XMillimeter;
    ULONG YMillimeter;
    ULONG NumberRedBits;
    ULONG NumberGreenBits;
    ULONG NumberBlueBits;
    ULONG RedMask;
    ULONG GreenMask;
    ULONG BlueMask;
    ULONG AttributeFlags;
    ULONG VideoMemoryBitmapWidth;
    ULONG VideoMemoryBitmapHeight;
    ULONG DriverSpecificAttributeFlags;
} VIDEO_MODE_INFORMATION, FAR *LPVIDEO_MODE_INFORMATION;

//
// Bit definitions for Attribute Flags
//

#define VIDEO_MODE_COLOR            0x0001  // 0 = Mono-compatible, 1 = Color
#define VIDEO_MODE_GRAPHICS         0x0002  // 0 = Text mode, 1 = Graphics
#define VIDEO_MODE_PALETTE_DRIVEN   0x0004  // 0 = Colors are direct
                                            // 1 = Colors are index to a palette
#define VIDEO_MODE_MANAGED_PALETTE  0x0008  // 0 = Palette is fixed (must be
                                            //     queried from miniport
                                            // 1 = Palette is settable.
#define VIDEO_MODE_INTERLACED       0x0010  // 1 = Mode is interlaced
                                            // 0 = non-interlaced
#define VIDEO_MODE_NO_OFF_SCREEN    0x0020  // 1 = Offscreen memory CAN NOT be
                                            //     used to store information.
                                            // 0 = Offscreen memory is available
#define VIDEO_MODE_NO_64_BIT_ACCESS 0x0040  // 1 = 64 bit memory writes to frame
                                            //     buffer are not handled properly.
                                            // 0 = 64 bit memory writes to frame
                                            //     buffer are handled properly.

//
//Length - Length of the structure in bytes. Also used to do verisioning.
//
//ModeIndex - Number used to set this mode when calling the miniport driver.
//
//VisScreenWidth - Number of visible horizontal pixels on a scan line
//
//VisScreenHeight - Number of visible lines (or scan lines)
//
//ScreenStride - Delta, in *BYTES*, between the start of two scan lines.
//
//    NOTE: the width and height are in pixels, but the stride is in bytes !!!
//
//NumberOfPlanes - Number of separate planes combined by the device.
//
//BitsPerPlane - Number of bits per pixel on a plane.
//
//Frequency - Screen Frequency, in Hertz.
//
//XMillimeter - Size of the horizontal active region on the output device,
//    in millimeters.
//
//YMillimeter - Size of the vertical active region on the output device,
//    in millimeters.
//
//NumberRedBits - Number of bits in the red DAC.
//
//NumberGreenBits - Number of bits in the green DAC.
//
//NumberBlueBits - Number of bits in the blue DAC.
//
//RedMask - Red color Mask for device with direct color modes. Bits turned
//    on indicate the bit is of color Red.
//
//GreenMask - Green color Mask for device with direct color modes. Bits
//    turned on indicate the bit is of color Green.
//
//BlueMask - Blue color Mask for device with direct color modes. Bits
//    turned on indicate the bit is of color Blue.
//
//AttributeFlags. Flags indicating certain behavior for the device.
//
//VideoMemoryBitmapWidth - Width of the video memory bitmap.
//    VisScreenWidth <= VideoMemoryBitmapWidth <= ScreenStride
//
//VideoMemoryBitmapHeight - Height of the video memory bitmap.
//   VisScreenHeight <= VideoMemoryBitmapHeight = VideoRamLength / ScreenStride
//
//DriverSpecificAttributeFlags - Flags indicating certain behavior for the
//   device that are private to the miniport\display driver.
//


typedef struct _VIDEO_NUM_MODES {
    ULONG NumModes;
    ULONG ModeInformationLength;
} VIDEO_NUM_MODES, FAR *LPVIDEO_NUM_MODES;

//
//NumModes - Returns the number of modes supported by the kernel driver.
//
//ModeInformationLength - Length of the VIDEO_MODE_INFORMATION structure
//    for the IOCTL_VIDEO QUERY_AVAILABLE_MODES IOCTL.

#endif  // WIN9X_BUILD


// The following registry keys are shared among DAL - GCOs - GDOs
#define DALREGKEY_DDC1SUPPORT                    "DALRULE_DDC1SUPPORT"
#define DALREGKEY_MAXDDC1TRIES                   "DALOPTION_MAXDDC1TRIES"


// options definition,used for GCOProcessMiscINFO to get/set required info from GCO
#define GCO_PROCESSMISCINFO_VGAACTIVEDISPLAY     0x00000001L

#if defined(_X86_)
#pragma pack()
#endif

#endif /*_DALBASE_H*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -