编程时有时直接调用API函数算底层吗?
设置钩子算底层吗?
子类化算底层吗?
编写dll算底层吗?有哪个高手能向我说明一下用VC怎么才算牵扯到了底层的东西?
我上面举的例子里有牵扯到底层的吗?

解决方案 »

  1.   

    底层就是和操作系统相关的东西
    钩子也算,还有底层的函数,比如Native API,驱动所用的函数,过滤驱动等
      

  2.   

    比如Windows CE系统下
    编写完某个驱动程序(流接口,分层驱动等)
    完成了其控制底层的接口函数
    就可以编写一小段VC代码
    来测试一下驱动是否加载成功
    可以调用DeviceIoControl与驱动交互
    可以调用驱动的接口函数来操作硬件
    测试是否成功
    另外可以通过VC写的一段代码
    直接读写或者擦除硬盘,SD卡,U盘的物理扇区等等
    我觉得在嵌入式系统方面工作的人
    更容易涉及到底层的东西
    因为嵌入式系统一般要软硬兼施
    不知道我说的是不是楼主所说的底层朱铭雷
      

  3.   

    感觉大家讲的还是有些含糊,也许是我的理解力比较差吧.
    如果能贴段涉及底层操作的代码的话,可能我比较好理解。int* p=(int *)malloc(sizeof(int));
    算直接操作内存吗?算底层操作代码吗?
      

  4.   

    filename = _T("\\.\DSK1:");    
    HANDLE hFile = CreateFile(filename, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_WRITE_THROUGH, NULL);    
    if (hFile == INVALID_HANDLE_VALUE)    
    {    
    MessageBox(_T("打开U盘失败!"));    
    CloseHandle(hFile);    
    return;    
    }    
    else    
    {    
    MessageBox(_T("打开U盘成功!"));   
    m_edit = (long)hFile;    
    UpdateData(false);    
    }    
    BYTE buffer[512];    
    for(int i=0;i < 512;i++)    
    {    
    buffer[i] = 0xA5;    
    }    
    SG_REQ SG_req1;    
    SG_req1.sr_start = 0;    
    SG_req1.sr_num_sec = 1;    
    SG_req1.sr_num_sg = 1;    
    SG_req1.sr_status = 0;    
    SG_req1.sr_callback = NULL;    
    SG_req1.sr_sglist[0].sb_len = 512;    
    SG_req1.sr_sglist[0].sb_buf = buffer;    
    DWORD actnum;    
    if(!DeviceIoControl(hFile,IOCTL_DISK_WRITE,&SG_req1,   
    sizeof(SG_req1),0,0,&actnum,0))    
    {    
    MessageBox(_T("写U盘失败!"));    
    }    
    else    
    {    
    MessageBox(_T("写U盘成功!"));   这段代码,我直接写U盘的物理扇区0
    写完之后那WinHex看,0扇区已经全部为0了
    这样再插到系统之后,主引导破坏,就不识别了
    这是一个特别的应用中写的一段代码
    运行环境是Windows CE 5.0
    不知道算不算楼主说的底层。朱铭雷