Removed a few dependencies on kernel32 functions.
[wine] / dlls / dplayx / dplayx_main.c
1 /* 
2  * DPLAYX.DLL LibMain
3  *
4  * Copyright 1999,2000 - Peter Hunnisett 
5  *
6  * contact <hunnise@nortelnetworks.com>
7  */
8 #include "winerror.h"
9 #include "winbase.h"
10 #include "debugtools.h"
11
12 #include "initguid.h"  /* To define the GUIDs */
13 #include "dplaysp.h"
14 #include "dplayx_global.h"
15
16 DEFAULT_DEBUG_CHANNEL(dplay);
17
18 DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
19
20 static DWORD DPLAYX_dwProcessesAttached = 0;
21
22 /* This is a globally exported variable at ordinal 6 of DPLAYX.DLL */
23 DWORD gdwDPlaySPRefCount = 0; /* FIXME: Should it be initialized here? */
24
25
26 BOOL WINAPI DPLAYX_LibMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved )
27 {
28
29   TRACE( "(%u,0x%08lx,%p) & 0x%08lx\n", hinstDLL, fdwReason, lpvReserved, DPLAYX_dwProcessesAttached );
30
31   switch ( fdwReason ) 
32   {
33     case DLL_PROCESS_ATTACH:
34     {
35
36       if ( DPLAYX_dwProcessesAttached++ == 0 )
37       {
38         /* First instance perform construction of global processor data */ 
39         return DPLAYX_ConstructData();
40       } 
41
42       break;
43     }
44
45     case DLL_PROCESS_DETACH:
46     {
47
48       if ( --DPLAYX_dwProcessesAttached == 0 )
49       {
50         /* Last instance performs destruction of global processor data */
51         return DPLAYX_DestructData(); 
52       }
53  
54       break;
55     }
56
57     case DLL_THREAD_ATTACH: /* Do nothing */
58     case DLL_THREAD_DETACH: /* Do nothing */
59       break;
60     default:                
61       break;
62
63   }
64
65   return TRUE;
66 }
67
68 /***********************************************************************
69  *              DllCanUnloadNow (DPLAYX.10)
70  */
71 HRESULT WINAPI DPLAYX_DllCanUnloadNow(void)
72 {
73   HRESULT hr = ( gdwDPlaySPRefCount > 0 ) ? S_FALSE : S_OK;
74
75   /* FIXME: Should I be putting a check in for class factory objects 
76    *        as well
77    */
78
79   TRACE( ": returning 0x%08lx\n", hr );
80  
81   return hr;
82 }
83