- Forward ordinals 40, 41, 143, 362 to appropriate routines.
[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 HMODULE SHLWAPI_hversion = 0;
24
25 DWORD SHLWAPI_ThreadRef_index = -1;
26
27 /*************************************************************************
28  * SHLWAPI LibMain
29  *
30  * NOTES
31  *  calling oleinitialize here breaks sone apps.
32  */
33 BOOL WINAPI SHLWAPI_LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
34 {
35         TRACE("0x%x 0x%lx %p\n", hinstDLL, fdwReason, fImpLoad);
36         switch (fdwReason)
37         {
38           case DLL_PROCESS_ATTACH:
39             shlwapi_hInstance = hinstDLL;
40             SHLWAPI_ThreadRef_index = TlsAlloc();
41             break;
42           case DLL_PROCESS_DETACH:
43             if (SHLWAPI_hshell32)  FreeLibrary(SHLWAPI_hshell32);
44             if (SHLWAPI_hwinmm)    FreeLibrary(SHLWAPI_hwinmm);
45             if (SHLWAPI_hcomdlg32) FreeLibrary(SHLWAPI_hcomdlg32);
46             if (SHLWAPI_hmpr)      FreeLibrary(SHLWAPI_hmpr);
47             if (SHLWAPI_hmlang)    FreeLibrary(SHLWAPI_hmlang);
48             if (SHLWAPI_hversion)  FreeLibrary(SHLWAPI_hversion);
49             if (SHLWAPI_ThreadRef_index >= 0) TlsFree(SHLWAPI_ThreadRef_index);
50             break;
51         }
52         return TRUE;
53 }
54
55 /***********************************************************************
56  * DllGetVersion [SHLWAPI.@]
57  *
58  * Retrieves version information of the 'SHLWAPI.DLL'
59  *
60  * PARAMS
61  *     pdvi [O] pointer to version information structure.
62  *
63  * RETURNS
64  *     Success: S_OK
65  *     Failure: E_INVALIDARG
66  *
67  * NOTES
68  *     Returns version of a SHLWAPI.dll from IE5.01.
69  */
70
71 HRESULT WINAPI SHLWAPI_DllGetVersion (DLLVERSIONINFO *pdvi)
72 {
73         if (pdvi->cbSize != sizeof(DLLVERSIONINFO))
74         {
75           WARN("wrong DLLVERSIONINFO size from app\n");
76           return E_INVALIDARG;
77         }
78
79         pdvi->dwMajorVersion = 5;
80         pdvi->dwMinorVersion = 0;
81         pdvi->dwBuildNumber = 2314;
82         pdvi->dwPlatformID = 1000;
83
84         TRACE("%lu.%lu.%lu.%lu\n",
85            pdvi->dwMajorVersion, pdvi->dwMinorVersion,
86            pdvi->dwBuildNumber, pdvi->dwPlatformID);
87
88         return S_OK;
89 }