]> git.sesse.net Git - vlc/blobdiff - libs/loader/wine/module.h
Create a modules-like directory for libraries
[vlc] / libs / loader / wine / module.h
diff --git a/libs/loader/wine/module.h b/libs/loader/wine/module.h
new file mode 100644 (file)
index 0000000..6f6b31a
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * Module definitions
+ *
+ * Copyright 1995 Alexandre Julliard
+ */
+
+#ifndef __WINE_MODULE_H
+#define __WINE_MODULE_H
+
+#include "windef.h"
+#include "pe_image.h"
+
+
+typedef struct {
+    BYTE type;
+    BYTE flags;
+    BYTE segnum;
+    WORD offs WINE_PACKED;
+} ET_ENTRY;
+
+typedef struct {
+    WORD first; /* ordinal */
+    WORD last; /* ordinal */
+    WORD next; /* bundle */
+} ET_BUNDLE;
+
+
+  /* In-memory segment table */
+typedef struct
+{
+    WORD      filepos;   /* Position in file, in sectors */
+    WORD      size;      /* Segment size on disk */
+    WORD      flags;     /* Segment flags */
+    WORD      minsize;   /* Min. size of segment in memory */
+    HANDLE16  hSeg;      /* Selector or handle (selector - 1) */
+                         /* of segment in memory */
+} SEGTABLEENTRY;
+
+
+  /* Self-loading modules contain this structure in their first segment */
+
+#include "pshpack1.h"
+
+typedef struct
+{
+    WORD      version;       /* Must be "A0" (0x3041) */
+    WORD      reserved;
+    FARPROC16 BootApp;       /* startup procedure */
+    FARPROC16 LoadAppSeg;    /* procedure to load a segment */
+    FARPROC16 reserved2;
+    FARPROC16 MyAlloc;       /* memory allocation procedure, 
+                              * wine must write this field */
+    FARPROC16 EntryAddrProc;
+    FARPROC16 ExitProc;      /* exit procedure */
+    WORD      reserved3[4];
+    FARPROC16 SetOwner;      /* Set Owner procedure, exported by wine */
+} SELFLOADHEADER;
+
+  /* Parameters for LoadModule() */
+typedef struct
+{
+    HGLOBAL16 hEnvironment;         /* Environment segment */
+    SEGPTR    cmdLine WINE_PACKED;  /* Command-line */
+    SEGPTR    showCmd WINE_PACKED;  /* Code for ShowWindow() */
+    SEGPTR    reserved WINE_PACKED;
+} LOADPARAMS16;
+
+typedef struct 
+{
+    LPSTR lpEnvAddress;
+    LPSTR lpCmdLine;
+    UINT16 *lpCmdShow;
+    DWORD dwReserved;
+} LOADPARAMS;
+
+#include "poppack.h"
+
+/* internal representation of 32bit modules. per process. */
+typedef enum {
+       MODULE32_PE = 1,
+       MODULE32_ELF,
+       MODULE32_ELFDLL
+} MODULE32_TYPE;
+
+typedef struct _wine_modref
+{
+       struct _wine_modref     *next;
+       struct _wine_modref     *prev;
+       MODULE32_TYPE           type;
+       union {
+               PE_MODREF       pe;
+               ELF_MODREF      elf;
+       } binfmt;
+
+       HMODULE                 module;
+
+       int                     nDeps;
+       struct _wine_modref     **deps;
+
+       int                     flags;
+       int                     refCount;
+
+       char                    *filename;
+       char                    *modname;
+       char                    *short_filename;
+       char                    *short_modname;
+} WINE_MODREF;
+
+#define WINE_MODREF_INTERNAL              0x00000001
+#define WINE_MODREF_NO_DLL_CALLS          0x00000002
+#define WINE_MODREF_PROCESS_ATTACHED      0x00000004
+#define WINE_MODREF_LOAD_AS_DATAFILE      0x00000010
+#define WINE_MODREF_DONT_RESOLVE_REFS     0x00000020
+#define WINE_MODREF_MARKER                0x80000000
+
+
+
+/* Resource types */
+typedef struct resource_typeinfo_s NE_TYPEINFO;
+typedef struct resource_nameinfo_s NE_NAMEINFO;
+
+#define NE_SEG_TABLE(pModule) \
+    ((SEGTABLEENTRY *)((char *)(pModule) + (pModule)->seg_table))
+
+#define NE_MODULE_TABLE(pModule) \
+    ((WORD *)((char *)(pModule) + (pModule)->modref_table))
+
+#define NE_MODULE_NAME(pModule) \
+    (((OFSTRUCT *)((char*)(pModule) + (pModule)->fileinfo))->szPathName)
+
+struct modref_list_t;
+
+typedef struct modref_list_t
+{
+    WINE_MODREF* wm;
+    struct modref_list_t *next;
+    struct modref_list_t *prev;
+} modref_list;
+
+
+/* module.c */
+extern FARPROC MODULE_GetProcAddress( HMODULE hModule, LPCSTR function, WIN_BOOL snoop );
+extern WINE_MODREF *MODULE32_LookupHMODULE( HMODULE hModule );
+extern WINE_MODREF *MODULE_FindModule( LPCSTR path );
+
+/* resource.c */
+extern INT       WINAPI AccessResource(HMODULE,HRSRC); 
+
+#endif  /* __WINE_MODULE_H */