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