1

我试图让这段代码工作,从这里

    char *mem = (unsigned char *) 0xF0000;
    int length, i;
    unsigned char checksum;
    while ((unsigned int) mem < 0x100000) {
        if (mem[0] == '_' && mem[1] == 'S' && mem[2] == 'M' && mem[3] == '_') {
            length = mem[5];
            checksum = 0;
            for(i = 0; i < length; i++) {
                checksum += mem[i];
            }
            if(checksum == 0) break;
        }
        mem += 16;
}

有一些类型错误,例如不能用 unsigned char* 初始化 char*。

当我尝试char *unsigned char *int 第一行替换时,我不能使用 [] 表示法,我该如何使用memcmp这段代码?

4

2 回答 2

2

在第一行中,您转换为unsigned char*,但尝试分配给char*。为什么不直接投到char*

我假设您正在处理一些嵌入式系统代码,因为对于多任务操作系统,简单地访问硬编码的内存位置会导致您的程序崩溃。

于 2011-08-31T11:37:49.333 回答
0

该代码无法工作,因为在 EFI 机器上查找 smbios 入口点结构地址的方法不正确,

于 2011-09-01T12:13:49.840 回答