windows下ELF学习总结

来源:互联网 发布:批量条码生成软件 编辑:程序博客网 时间:2024/06/13 20:48

0. 使用VS2010进行测试 

1. ELF文件结构的定义在WinNT.h中,该文件放在C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include目录下

2. 添加WinNT.h头文件在工程后,编译过程中报错,显示“DWORD”无法解析。解决方法是,由于DWORD这个宏定义包含在windows.h头文件中,只要再添加上windows.h头文件即可。于此同时,诸如“WORD”,“PWORD”这样的宏定义都可以找到了

3. 读取二进制.obj文件

3.1 打开二进制文件

    FILE * fopen(const char * path,const char * mode);


path: 文件所在的路径,比如

    "F:\\VS2010\\DumpbinElf.obj"
需要注意的是,要使用两个\\,第一个\表示转移字符

mode: 读取二进制文件使用"rb",读取一般文件只用"r"即可。

fopen()函数返回FILE类型的指针,比如

     FILE *infile; 


一个打开二进制文件的例子:

    FILE *infile;      infile = fopen("F:\\VS2010\\DumpbinElf.obj", "rb");      if(NULL == infile)    {        printf("File read ERROR!\n");        exit(1);    }

3.2 读取二进制文件

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

stream是3.1节中所打开的二进制文件。

ptr指向一段空间,用于保存读取的数据。

size是每次读取一个数据的长度,以byte为单位,比如size=2,每次读取2 bytes。

count是每次读取多少个数据,其单位是第二个参数size。

返回值是读取了数据的个数,单位是字节。

如果读取成功,每调用一次fread函数,将读取数据的长度是size*count,单位是byte


一个读取二进制文件的例子:

char buf[1024];while((rc=fread(buf,sizeof(int),4,infile))!=0);
在这个例子中,每次读取2*4个字节的数据,

下面这个网址有关于fread的详细介绍:

http://www.cplusplus.com/reference/cstdio/fread/