⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pe_linker.h

📁 ndis在linux下的无线网卡驱动源码
💻 H
📖 第 1 页 / 共 3 页
字号:
  WORD  Magic;  BYTE  MajorLinkerVersion;  BYTE  MinorLinkerVersion;  DWORD SizeOfCode;  DWORD SizeOfInitializedData;  DWORD SizeOfUninitializedData;  DWORD AddressOfEntryPoint;  DWORD BaseOfCode;  /* NT additional fields */  ULONGLONG 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;  ULONGLONG SizeOfStackReserve;  ULONGLONG SizeOfStackCommit;  ULONGLONG SizeOfHeapReserve;  ULONGLONG SizeOfHeapCommit;  DWORD LoaderFlags;  DWORD NumberOfRvaAndSizes;  IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];} IMAGE_OPTIONAL_HEADER64, *PIMAGE_OPTIONAL_HEADER64;#ifdef CONFIG_X86_64typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER;typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER;#elsetypedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER;typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER;#endiftypedef struct _IMAGE_NT_HEADERS32 {  DWORD Signature; /* "PE"\0\0 */	/* 0x00 */  IMAGE_FILE_HEADER FileHeader;		/* 0x04 */  IMAGE_OPTIONAL_HEADER32 OptionalHeader;	/* 0x18 */} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;typedef struct _IMAGE_NT_HEADERS64 {  DWORD Signature; /* "PE"\0\0 */	/* 0x00 */  IMAGE_FILE_HEADER FileHeader;		/* 0x04 */  IMAGE_OPTIONAL_HEADER64 OptionalHeader;	/* 0x18 */} IMAGE_NT_HEADERS64, *PIMAGE_NT_HEADERS64;#ifdef CONFIG_X86_64typedef IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS;typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS;#elsetypedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS;typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS;#endif#define IMAGE_SIZEOF_SHORT_NAME 8typedef struct _IMAGE_SECTION_HEADER {  BYTE  Name[IMAGE_SIZEOF_SHORT_NAME];  union {    DWORD PhysicalAddress;    DWORD VirtualSize;  } Misc;  DWORD VirtualAddress;  DWORD SizeOfRawData;  DWORD PointerToRawData;  DWORD PointerToRelocations;  DWORD PointerToLinenumbers;  WORD  NumberOfRelocations;  WORD  NumberOfLinenumbers;  DWORD Characteristics;} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;#define	IMAGE_SIZEOF_SECTION_HEADER 40#define IMAGE_FIRST_SECTION(ntheader) \((PIMAGE_SECTION_HEADER)((LPBYTE)&((PIMAGE_NT_HEADERS)(ntheader))->OptionalHeader + \((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader))/* These defines are for the Characteristics bitfield. *//* #define IMAGE_SCN_TYPE_REG			0x00000000 - Reserved *//* #define IMAGE_SCN_TYPE_DSECT			0x00000001 - Reserved *//* #define IMAGE_SCN_TYPE_NOLOAD		0x00000002 - Reserved *//* #define IMAGE_SCN_TYPE_GROUP			0x00000004 - Reserved */#define IMAGE_SCN_TYPE_NO_PAD			0x00000008 /* Reserved *//* #define IMAGE_SCN_TYPE_COPY			0x00000010 - Reserved */#define IMAGE_SCN_CNT_CODE			0x00000020#define IMAGE_SCN_CNT_INITIALIZED_DATA		0x00000040#define IMAGE_SCN_CNT_UNINITIALIZED_DATA	0x00000080#define	IMAGE_SCN_LNK_OTHER			0x00000100#define	IMAGE_SCN_LNK_INFO			0x00000200/* #define IMAGE_SCN_TYPE_OVER		0x00000400 - Reserved */#define	IMAGE_SCN_LNK_REMOVE			0x00000800#define	IMAGE_SCN_LNK_COMDAT			0x00001000/* 						0x00002000 - Reserved *//* #define IMAGE_SCN_MEM_PROTECTED 		0x00004000 - Obsolete */#define	IMAGE_SCN_MEM_FARDATA			0x00008000/* #define IMAGE_SCN_MEM_SYSHEAP		0x00010000 - Obsolete */#define	IMAGE_SCN_MEM_PURGEABLE			0x00020000#define	IMAGE_SCN_MEM_16BIT			0x00020000#define	IMAGE_SCN_MEM_LOCKED			0x00040000#define	IMAGE_SCN_MEM_PRELOAD			0x00080000#define	IMAGE_SCN_ALIGN_1BYTES			0x00100000#define	IMAGE_SCN_ALIGN_2BYTES			0x00200000#define	IMAGE_SCN_ALIGN_4BYTES			0x00300000#define	IMAGE_SCN_ALIGN_8BYTES			0x00400000#define	IMAGE_SCN_ALIGN_16BYTES			0x00500000  /* Default */#define	IMAGE_SCN_ALIGN_32BYTES			0x00600000#define	IMAGE_SCN_ALIGN_64BYTES			0x00700000#define	IMAGE_SCN_ALIGN_128BYTES		0x00800000#define	IMAGE_SCN_ALIGN_256BYTES		0x00900000#define	IMAGE_SCN_ALIGN_512BYTES		0x00A00000#define	IMAGE_SCN_ALIGN_1024BYTES		0x00B00000#define	IMAGE_SCN_ALIGN_2048BYTES		0x00C00000#define	IMAGE_SCN_ALIGN_4096BYTES		0x00D00000#define	IMAGE_SCN_ALIGN_8192BYTES		0x00E00000/* 						0x00F00000 - Unused */#define	IMAGE_SCN_ALIGN_MASK			0x00F00000#define IMAGE_SCN_LNK_NRELOC_OVFL		0x01000000#define IMAGE_SCN_MEM_DISCARDABLE		0x02000000#define IMAGE_SCN_MEM_NOT_CACHED		0x04000000#define IMAGE_SCN_MEM_NOT_PAGED			0x08000000#define IMAGE_SCN_MEM_SHARED			0x10000000#define IMAGE_SCN_MEM_EXECUTE			0x20000000#define IMAGE_SCN_MEM_READ			0x40000000#define IMAGE_SCN_MEM_WRITE			0x80000000typedef struct _IMAGE_SYMBOL {    union {        BYTE    ShortName[8];        struct {            DWORD   Short;            DWORD   Long;        } Name;        DWORD   LongName[2];    } N;    DWORD   Value;    SHORT   SectionNumber;    WORD    Type;    BYTE    StorageClass;    BYTE    NumberOfAuxSymbols;} IMAGE_SYMBOL;typedef IMAGE_SYMBOL *PIMAGE_SYMBOL;#define IMAGE_SIZEOF_SYMBOL 18typedef struct _IMAGE_LINENUMBER {    union {        DWORD   SymbolTableIndex;        DWORD   VirtualAddress;    } Type;    WORD    Linenumber;} IMAGE_LINENUMBER;typedef IMAGE_LINENUMBER *PIMAGE_LINENUMBER;#define IMAGE_SIZEOF_LINENUMBER  6typedef union _IMAGE_AUX_SYMBOL {    struct {        DWORD    TagIndex;        union {            struct {                WORD    Linenumber;                WORD    Size;            } LnSz;           DWORD    TotalSize;        } Misc;        union {            struct {                DWORD    PointerToLinenumber;                DWORD    PointerToNextFunction;            } Function;            struct {                WORD     Dimension[4];            } Array;        } FcnAry;        WORD    TvIndex;    } Sym;    struct {        BYTE    Name[IMAGE_SIZEOF_SYMBOL];    } File;    struct {        DWORD   Length;        WORD    NumberOfRelocations;        WORD    NumberOfLinenumbers;        DWORD   CheckSum;        SHORT   Number;        BYTE    Selection;    } Section;} IMAGE_AUX_SYMBOL;typedef IMAGE_AUX_SYMBOL *PIMAGE_AUX_SYMBOL;#define IMAGE_SIZEOF_AUX_SYMBOL 18#define IMAGE_SYM_UNDEFINED           (SHORT)0#define IMAGE_SYM_ABSOLUTE            (SHORT)-1#define IMAGE_SYM_DEBUG               (SHORT)-2#define IMAGE_SYM_TYPE_NULL                 0x0000#define IMAGE_SYM_TYPE_VOID                 0x0001#define IMAGE_SYM_TYPE_CHAR                 0x0002#define IMAGE_SYM_TYPE_SHORT                0x0003#define IMAGE_SYM_TYPE_INT                  0x0004#define IMAGE_SYM_TYPE_LONG                 0x0005#define IMAGE_SYM_TYPE_FLOAT                0x0006#define IMAGE_SYM_TYPE_DOUBLE               0x0007#define IMAGE_SYM_TYPE_STRUCT               0x0008#define IMAGE_SYM_TYPE_UNION                0x0009#define IMAGE_SYM_TYPE_ENUM                 0x000A#define IMAGE_SYM_TYPE_MOE                  0x000B#define IMAGE_SYM_TYPE_BYTE                 0x000C#define IMAGE_SYM_TYPE_WORD                 0x000D#define IMAGE_SYM_TYPE_UINT                 0x000E#define IMAGE_SYM_TYPE_DWORD                0x000F#define IMAGE_SYM_TYPE_PCODE                0x8000#define IMAGE_SYM_DTYPE_NULL                0#define IMAGE_SYM_DTYPE_POINTER             1#define IMAGE_SYM_DTYPE_FUNCTION            2#define IMAGE_SYM_DTYPE_ARRAY               3#define IMAGE_SYM_CLASS_END_OF_FUNCTION     (BYTE )-1#define IMAGE_SYM_CLASS_NULL                0x0000#define IMAGE_SYM_CLASS_AUTOMATIC           0x0001#define IMAGE_SYM_CLASS_EXTERNAL            0x0002#define IMAGE_SYM_CLASS_STATIC              0x0003#define IMAGE_SYM_CLASS_REGISTER            0x0004#define IMAGE_SYM_CLASS_EXTERNAL_DEF        0x0005#define IMAGE_SYM_CLASS_LABEL               0x0006#define IMAGE_SYM_CLASS_UNDEFINED_LABEL     0x0007#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT    0x0008#define IMAGE_SYM_CLASS_ARGUMENT            0x0009#define IMAGE_SYM_CLASS_STRUCT_TAG          0x000A#define IMAGE_SYM_CLASS_MEMBER_OF_UNION     0x000B#define IMAGE_SYM_CLASS_UNION_TAG           0x000C#define IMAGE_SYM_CLASS_TYPE_DEFINITION     0x000D#define IMAGE_SYM_CLASS_UNDEFINED_STATIC    0x000E#define IMAGE_SYM_CLASS_ENUM_TAG            0x000F#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM      0x0010#define IMAGE_SYM_CLASS_REGISTER_PARAM      0x0011#define IMAGE_SYM_CLASS_BIT_FIELD           0x0012#define IMAGE_SYM_CLASS_FAR_EXTERNAL        0x0044#define IMAGE_SYM_CLASS_BLOCK               0x0064#define IMAGE_SYM_CLASS_FUNCTION            0x0065#define IMAGE_SYM_CLASS_END_OF_STRUCT       0x0066#define IMAGE_SYM_CLASS_FILE                0x0067#define IMAGE_SYM_CLASS_SECTION             0x0068#define IMAGE_SYM_CLASS_WEAK_EXTERNAL       0x0069#define N_BTMASK                            0x000F#define N_TMASK                             0x0030#define N_TMASK1                            0x00C0#define N_TMASK2                            0x00F0#define N_BTSHFT                            4#define N_TSHIFT                            2#define BTYPE(x) ((x) & N_BTMASK)#ifndef ISPTR#define ISPTR(x) (((x) & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT))#endif#ifndef ISFCN#define ISFCN(x) (((x) & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT))#endif#ifndef ISARY#define ISARY(x) (((x) & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT))#endif#ifndef ISTAG#define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG || (x)==IMAGE_SYM_CLASS_UNION_TAG || (x)==IMAGE_SYM_CLASS_ENUM_TAG)#endif#ifndef INCREF#define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|((x)&N_BTMASK))#endif#ifndef DECREF#define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))#endif#define IMAGE_COMDAT_SELECT_NODUPLICATES    1#define IMAGE_COMDAT_SELECT_ANY             2#define IMAGE_COMDAT_SELECT_SAME_SIZE       3#define IMAGE_COMDAT_SELECT_EXACT_MATCH     4#define IMAGE_COMDAT_SELECT_ASSOCIATIVE     5#define IMAGE_COMDAT_SELECT_LARGEST         6#define IMAGE_COMDAT_SELECT_NEWEST          7#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY  1#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY    2#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS      3/* Export module directory */typedef struct _IMAGE_EXPORT_DIRECTORY {	DWORD	Characteristics;	DWORD	TimeDateStamp;	WORD	MajorVersion;	WORD	MinorVersion;	DWORD	Name;	DWORD	Base;	DWORD	NumberOfFunctions;	DWORD	NumberOfNames;	DWORD	AddressOfFunctions;	DWORD	AddressOfNames;	DWORD	AddressOfNameOrdinals;} IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;/* Import name entry */typedef struct _IMAGE_IMPORT_BY_NAME {	WORD	Hint;	BYTE	Name[1];} IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -