Board logo

标题: [求助] 获取VESA版本信息 [打印本页]

作者: liutao2008     时间: 2006-11-8 10:06    标题: [求助] 获取VESA版本信息

各位大侠::D
    我现在是要在DOS下实现获取VESA版本信息,一直取不成功。
各位大侠,谁有相应的例子,给提供一个。谢谢了
:D
作者: zyl910     时间: 2006-11-8 21:35
/* VESA 信息块 */
typedef struct tagVBE_INFO
{
        char          VbeSignature[4];      /* VESA标志: 'VESA', 'VBE2' */
        WORD          VbeVersion;           /* VESA 版本号 */
        char far *OemStringPtr;         /* 制造商字串指针 */
        DWORD     Capabilities;         /* 视频显示能力 */
        WORD far *VideoModePtr;         /* 扩展显示模式集指针 */
        WORD      TotalMemory;          /* 显示卡显存,单位为64KB*/
        /*VBE 2.0*/
        WORD      OemSoftwareRev;       /*VBE软件的OEM修订版本号*/
        char far *OemVendorNamePtr;     /*指向显示卡制造厂商的字符串指针*/
        char far *OemProductNamePtr;    /*指向显示卡产品名称的字符串指针*/
        char far *OemProductRevPtr;     /*指向显示卡修订版本号或产品等级的字符串指针*/
        BYTE      reserved[222];        /*保留*/
        BYTE      OemData[256];
}VBE_INFO;


        VBE_INFO        vbeinfo;

        memchr(&vbeinfo, 0, sizeof(vbeinfo));
        _ES = FP_SEG(&vbeinfo);
        _DI = FP_OFF(&vbeinfo);
        _AX = 0x4F00;
        geninterrupt(0x10);
        rc = _AX;
        if (rc != 0x004F)
        {
                printf("Status(%4.4X): ", rc);
                PrintVBEError(stdout, rc);
                printf("\n");
                printf("VBE is not exist!\n");
                return 1;
        }
        PrintVBEINFO(stdout, &vbeinfo);
作者: liutao2008     时间: 2006-11-9 12:22
请问你使用的什么编译器?
我用的watcom c\c++,上面的代码编不过。
另外,如果在386保护模式下用32位的方式如何取信息呢?