📄 hmodule.h
字号:
//==================================
// SHOW16 - Matt Pietrek 1995
// FILE: HMODULE.H
//==================================
#pragma pack (1)
typedef struct
{
WORD sector_offset; // Offset to logical sector
WORD segment_length; // Size in bytes of segment
WORD flags; // flags for segment
WORD alloc_size; // Segment allocation size
WORD handle; // Global heap handle assigned by loader
} SEGMENT_RECORD, FAR * LPSEGMENT_RECORD;
typedef enum
{ // Segment type constants
CODE = 0x0000, // Code segment type
DATA = 0x0001, // Data segment type
} SEGMENT_TYPES;
//
// In memory representation of the module table
//
typedef struct
{
WORD ne_signature; // 'NE'
WORD ne_usage; // reference count of module
WORD ne_npEntryTable; // near pointer to entry table
HMODULE ne_npNextExe; // next module database
WORD ne_npAutoData; // near pointer to DGROUP segment entry
WORD ne_npFileInfo; // near pointer to OFSTRUCT with file name
WORD ne_flags;
WORD ne_autodata; // segment index of DGROUP segment
WORD ne_heap;
WORD ne_stack;
DWORD ne_csip;
DWORD ne_sssp;
WORD ne_cseg;
WORD ne_cModules;
WORD ne_cbNonResNamesTab;
WORD ne_segtab;
WORD ne_rsrcTab;
WORD ne_resNamesTab;
WORD ne_modRefTab;
WORD ne_importedNamesTab;
DWORD ne_nonResNamesTab;
WORD ne_cMovEnt;
WORD ne_align;
WORD ne_cres;
unsigned char ne_exetyp;
unsigned char ne_flagsother;
WORD ne_importedNamesTab2;
WORD ne_importedNamesTab3;
WORD ne_swaparea; // minimum code swap area size
WORD ne_expver; // expected windows version num
DWORD ne_Win32BaseAddr1; // (Win32 only) Base addr of module
DWORD ne_Win32BaseAddr2; // (Win32 only) Base addr of module
DWORD ne_Win32ResourceAddr; // (Win32 only) Base addr of resources
} MODULE, FAR * LPMODULE;
typedef struct
{
WORD firstEntry;
WORD lastEntry;
WORD nextBundle;
} ENTRY_BUNDLE_HEADER, FAR *LPENTRY_BUNDLE_HEADER;
typedef struct
{
BYTE segType;
BYTE flags;
BYTE segNumber;
WORD offset;
} ENTRY, FAR * LPENTRY;
typedef struct
{
WORD ID;
WORD count;
DWORD function;
} RESOURCE_TYPE, FAR *LPRESOURCE_TYPE;
typedef struct
{
WORD offset;
WORD length;
WORD flags;
WORD ID;
WORD handle;
WORD usage;
} RESOURCE_INFO, FAR * LPRESOURCE_INFO;
#define NEAPPTYP 0x0700 // Application type mask
#define NEWINAPI 0x0300 // Uses windowing API
#define NEWINCOMPAT 0x0200 // Compatible with windowing API
#define NENOTWINCOMPAT 0x0100 // Not compatible with windowing API
#define NENONRES 0x0080 // Contains non-resident code segments
#define NELIM32 0x0010 // Uses LIM 3.2 API
#define NEPROT 0x0008 // Runs in protected mode only
#define NEPPLI 0x0004 // Per-Process Library Initialization
// Target operating systems
#define NE_UNKNOWN 0
#define NE_OS2 1 // Microsoft/IBM OS/2
#define NE_WINDOWS 2 // Microsoft Windows
#define NE_DOS4 3 // Microsoft European MS-DOS 4.x
#define NE_DEV386 4 // Microsoft Windows 386
#define MODFLAGS_DLL 0x8000
#define MODFLAGS_CALL_WEP 0x4000
#define MODFLAGS_SELF_LOADING 0x0800
#define MODFLAGS_APPTYPE 0x0300
// 0x0300 = Uses Windows API
// 0x0200 = Can be run in a window
// 0x0100 = full-screen text app
#define MODFLAGS_IMPLICIT_LOAD 0x0040 // DLL is implicitly loaded
#define MODFLAGS_WIN32 0x0010
#define MODFLAGS_AUTODATA 0x0002
#define MODFLAGS_SINGLEDATA 0x0001
typedef struct tagOFSTRUCT_EXT
{
WORD cBytes; // This is a single BYTE in the regular OFSTRUCT
BYTE fFixedDisk;
UINT nErrCode;
BYTE reserved[4];
char szPathName[128];
} OFSTRUCT_EXT;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -