标签:映射文件 val 入口 ice class 文件 允许 提交 device
在win32 SDK的文件winnt.h中有PE文件格式的定义/
一个MS-DOS头部 IMAGE_DOS_HEADER
一个是DOS的程序残余以及一个PE文件标志
PE文件头和可选头部: IMAGE_NT_HEADERS
typedef struct IMAGE_NT_HEADERS { DWORD Signature; IMAGE_FILE_HEADER FileHeader; // PE文件头 IMAGE_OPTIONAL_HEADER32 OptionalHeader; // 可选头部 }IMAGE_NT_HEADERS,*PIMAGE_NT_HEADERS;
typedef struct _IMAGE_OPTIONAL_HEADER { WORD Magic; BYTE MajorLinkerVersion; BYTE MinorLinkerVersion; DWORD SizeOfCode; DWORD SizeOfInitializedData; DWORD SizeOfUninitializedData; DWORD AddressOfEntryPoint; DWORD BaseOfCode; DWORD BaseOfData; DWORD ImageBase; DWORD SectionAlignment; DWORD FileAlignment; WORD MajorOperatingSystemVersion; WORD MinorOperatingSystemVersion; WORD MajorImageVersion; WORD MinorImageVersion; WORD MajorSubsystemVersion; WORD MinorSubsystemVersion; DWORD Win32VersionValue; DWORD SizeOfImage; DWORD SizeOfHeaders; DWORD CheckSum; WORD Subsystem; WORD DllCharacteristics; DWORD SizeOfStackReserve; DWORD SizeOfStackCommit; DWORD SizeOfHeapReserve; DWORD SizeOfHeapCommit; DWORD LoaderFlags; DWORD NumberOfRvaAndSizes; IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; } IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;
AddressOfEntryPoint,表示程序的入口点。
A pointer to the entry point function, relative to the image base address. For executable files, this is the starting address. For device drivers, this is the address of the initialization function. The entry point function is optional for DLLs. When no entry point is present, this member is zero.
所有的段头部,
所有的段实体
一些其它的区域,其中是一些混杂的信息,包括重分配信息 、符号表信息、行号信息以及字串表数据。
内存映射文件,允许用户使用一个简单的指针来存取文件中所包含的数据,因此所有的示例都使用了内存映射文件来存取PE文件中的数据。
Windows装载器 装载,构成内存,执行。
Windows装载器在装载的时候仅仅建立好虚拟地址和PE文件之间的映射关系,只有真正执行到某个内存页中的指令或访问某一页中的数据时,这个页才会被从磁盘提交到物理内存。
http://www.cnblogs.com/tk091/archive/2012/09/04/2670936.html
标签:映射文件 val 入口 ice class 文件 允许 提交 device
原文地址:http://www.cnblogs.com/yiii/p/6883746.html