module.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:4k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*
  2.  * Module definitions
  3.  *
  4.  * Copyright 1995 Alexandre Julliard
  5.  */
  6. #ifndef __WINE_MODULE_H
  7. #define __WINE_MODULE_H
  8. #include "windef.h"
  9. #include "pe_image.h"
  10. typedef struct {
  11.     BYTE type;
  12.     BYTE flags;
  13.     BYTE segnum;
  14.     WORD offs WINE_PACKED;
  15. } ET_ENTRY;
  16. typedef struct {
  17.     WORD first; /* ordinal */
  18.     WORD last; /* ordinal */
  19.     WORD next; /* bundle */
  20. } ET_BUNDLE;
  21.   /* In-memory segment table */
  22. typedef struct
  23. {
  24.     WORD      filepos;   /* Position in file, in sectors */
  25.     WORD      size;      /* Segment size on disk */
  26.     WORD      flags;     /* Segment flags */
  27.     WORD      minsize;   /* Min. size of segment in memory */
  28.     HANDLE16  hSeg;      /* Selector or handle (selector - 1) */
  29.                          /* of segment in memory */
  30. } SEGTABLEENTRY;
  31.   /* Self-loading modules contain this structure in their first segment */
  32. #include "pshpack1.h"
  33. typedef struct
  34. {
  35.     WORD      version;       /* Must be "A0" (0x3041) */
  36.     WORD      reserved;
  37.     FARPROC16 BootApp;       /* startup procedure */
  38.     FARPROC16 LoadAppSeg;    /* procedure to load a segment */
  39.     FARPROC16 reserved2;
  40.     FARPROC16 MyAlloc;       /* memory allocation procedure, 
  41.                               * wine must write this field */
  42.     FARPROC16 EntryAddrProc;
  43.     FARPROC16 ExitProc;      /* exit procedure */
  44.     WORD      reserved3[4];
  45.     FARPROC16 SetOwner;      /* Set Owner procedure, exported by wine */
  46. } SELFLOADHEADER;
  47.   /* Parameters for LoadModule() */
  48. typedef struct
  49. {
  50.     HGLOBAL16 hEnvironment;         /* Environment segment */
  51.     SEGPTR    cmdLine WINE_PACKED;  /* Command-line */
  52.     SEGPTR    showCmd WINE_PACKED;  /* Code for ShowWindow() */
  53.     SEGPTR    reserved WINE_PACKED;
  54. } LOADPARAMS16;
  55. typedef struct 
  56. {
  57.     LPSTR lpEnvAddress;
  58.     LPSTR lpCmdLine;
  59.     UINT16 *lpCmdShow;
  60.     DWORD dwReserved;
  61. } LOADPARAMS;
  62. #include "poppack.h"
  63. /* internal representation of 32bit modules. per process. */
  64. typedef enum {
  65. MODULE32_PE = 1,
  66. MODULE32_ELF,
  67. MODULE32_ELFDLL
  68. } MODULE32_TYPE;
  69. typedef struct _wine_modref
  70. {
  71. struct _wine_modref *next;
  72. struct _wine_modref *prev;
  73. MODULE32_TYPE type;
  74. union {
  75. PE_MODREF pe;
  76. ELF_MODREF elf;
  77. } binfmt;
  78. HMODULE module;
  79. int nDeps;
  80. struct _wine_modref **deps;
  81. int flags;
  82. int refCount;
  83. char *filename;
  84. char *modname;
  85. char *short_filename;
  86. char *short_modname;
  87. } WINE_MODREF;
  88. #define WINE_MODREF_INTERNAL              0x00000001
  89. #define WINE_MODREF_NO_DLL_CALLS          0x00000002
  90. #define WINE_MODREF_PROCESS_ATTACHED      0x00000004
  91. #define WINE_MODREF_LOAD_AS_DATAFILE      0x00000010
  92. #define WINE_MODREF_DONT_RESOLVE_REFS     0x00000020
  93. #define WINE_MODREF_MARKER                0x80000000
  94. /* Resource types */
  95. typedef struct resource_typeinfo_s NE_TYPEINFO;
  96. typedef struct resource_nameinfo_s NE_NAMEINFO;
  97. #define NE_SEG_TABLE(pModule) 
  98.     ((SEGTABLEENTRY *)((char *)(pModule) + (pModule)->seg_table))
  99. #define NE_MODULE_TABLE(pModule) 
  100.     ((WORD *)((char *)(pModule) + (pModule)->modref_table))
  101. #define NE_MODULE_NAME(pModule) 
  102.     (((OFSTRUCT *)((char*)(pModule) + (pModule)->fileinfo))->szPathName)
  103. struct modref_list_t;
  104. typedef struct modref_list_t
  105. {
  106.     WINE_MODREF* wm;
  107.     struct modref_list_t *next;
  108.     struct modref_list_t *prev;
  109. } modref_list;
  110. /* module.c */
  111. extern FARPROC MODULE_GetProcAddress( HMODULE hModule, LPCSTR function, WIN_BOOL snoop );
  112. extern WINE_MODREF *MODULE32_LookupHMODULE( HMODULE hModule );
  113. extern WINE_MODREF *MODULE_FindModule( LPCSTR path );
  114. /* resource.c */
  115. extern INT       WINAPI AccessResource(HMODULE,HRSRC); 
  116. #endif  /* __WINE_MODULE_H */