Add exclusion defs & remaining funcs, remove internal types &
[wine] / dlls / shlwapi / shlwapi_main.c
1 /*
2  * SHLWAPI initialisation
3  *
4  *  Copyright 1998 Marcus Meissner
5  *  Copyright 1998 Juergen Schmied (jsch)
6  */
7
8 #include "winbase.h"
9 #include "winerror.h"
10 #include "winreg.h"
11 #include "debugtools.h"
12 #define NO_SHLWAPI_STREAM
13 #include "shlwapi.h"
14
15 DEFAULT_DEBUG_CHANNEL(shell);
16
17 HINSTANCE shlwapi_hInstance = 0; 
18 HMODULE SHLWAPI_hshell32 = 0;
19 HMODULE SHLWAPI_hwinmm = 0;
20 HMODULE SHLWAPI_hcomdlg32 = 0;
21 HMODULE SHLWAPI_hmpr = 0;
22 HMODULE SHLWAPI_hmlang = 0;
23
24 /*************************************************************************
25  * SHLWAPI LibMain
26  *
27  * NOTES
28  *  calling oleinitialize here breaks sone apps.
29  */
30 BOOL WINAPI SHLWAPI_LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
31 {
32         TRACE("0x%x 0x%lx %p\n", hinstDLL, fdwReason, fImpLoad);
33         switch (fdwReason)
34         {
35           case DLL_PROCESS_ATTACH:
36             shlwapi_hInstance = hinstDLL;
37             break;
38           case DLL_PROCESS_DETACH:
39             if (SHLWAPI_hshell32)  FreeLibrary(SHLWAPI_hshell32);
40             if (SHLWAPI_hwinmm)    FreeLibrary(SHLWAPI_hwinmm);
41             if (SHLWAPI_hcomdlg32) FreeLibrary(SHLWAPI_hcomdlg32);
42             if (SHLWAPI_hmpr)      FreeLibrary(SHLWAPI_hmpr);
43             if (SHLWAPI_hmlang)    FreeLibrary(SHLWAPI_hmlang);
44             break;
45         }
46         return TRUE;
47 }
48
49 /***********************************************************************
50  * DllGetVersion [SHLWAPI.@]
51  *
52  * Retrieves version information of the 'SHLWAPI.DLL'
53  *
54  * PARAMS
55  *     pdvi [O] pointer to version information structure.
56  *
57  * RETURNS
58  *     Success: S_OK
59  *     Failure: E_INVALIDARG
60  *
61  * NOTES
62  *     Returns version of a SHLWAPI.dll from IE5.01.
63  */
64
65 HRESULT WINAPI SHLWAPI_DllGetVersion (DLLVERSIONINFO *pdvi)
66 {
67         if (pdvi->cbSize != sizeof(DLLVERSIONINFO))
68         {
69           WARN("wrong DLLVERSIONINFO size from app\n");
70           return E_INVALIDARG;
71         }
72
73         pdvi->dwMajorVersion = 5;
74         pdvi->dwMinorVersion = 0;
75         pdvi->dwBuildNumber = 2314;
76         pdvi->dwPlatformID = 1000;
77
78         TRACE("%lu.%lu.%lu.%lu\n",
79            pdvi->dwMajorVersion, pdvi->dwMinorVersion,
80            pdvi->dwBuildNumber, pdvi->dwPlatformID);
81
82         return S_OK;
83 }