source: trunk/src/DPlayX/dplayx_main.cpp@ 5135

Last change on this file since 5135 was 5135, checked in by sandervl, 25 years ago

VAC 3.6.5 bug workaround

File size: 2.0 KB
Line 
1// $Id: dplayx_main.cpp,v 1.3 2001-02-14 15:14:41 sandervl Exp $
2/*
3 * DPLAYX.DLL LibMain
4 *
5 * Copyright 1999,2000 - Peter Hunnisett
6 *
7 * contact <hunnise@nortelnetworks.com>
8 */
9#include <string.h>
10#include <odin.h>
11#define ICOM_CINTERFACE 1
12#define CINTERFACE
13#include "winerror.h"
14#include "winbase.h"
15#include "debugtools.h"
16#define INITGUID
17#include "initguid.h" /* To define the GUIDs */
18#include "dplaysp.h"
19#include "dplayx_global.h"
20#ifdef __WIN32OS2__
21#include <initdll.h>
22#endif
23
24DEFAULT_DEBUG_CHANNEL(dplay);
25
26DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
27
28static DWORD DPLAYX_dwProcessesAttached = 0;
29
30/* This is a globally exported variable at ordinal 6 of DPLAYX.DLL */
31DWORD gdwDPlaySPRefCount = 0; /* FIXME: Should it be initialized here? */
32
33BOOL WINAPI DPLAYX_LibMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved )
34{
35
36 TRACE( "(%u,0x%08lx,%p) & 0x%08lx\n", hinstDLL, fdwReason, lpvReserved, DPLAYX_dwProcessesAttached );
37
38 switch ( fdwReason )
39 {
40 case DLL_PROCESS_ATTACH:
41 {
42
43 if ( DPLAYX_dwProcessesAttached++ == 0 )
44 {
45 /* First instance perform construction of global processor data */
46 return DPLAYX_ConstructData();
47 }
48
49 break;
50 }
51
52 case DLL_PROCESS_DETACH:
53 {
54
55 if ( --DPLAYX_dwProcessesAttached == 0 )
56 {
57 BOOL rc;
58 /* Last instance performs destruction of global processor data */
59 rc = DPLAYX_DestructData();
60#ifdef __WIN32OS2__
61 ctordtorTerm();
62#endif
63 return rc;
64 }
65
66 break;
67 }
68
69 case DLL_THREAD_ATTACH: /* Do nothing */
70 case DLL_THREAD_DETACH: /* Do nothing */
71 break;
72 default:
73 break;
74
75 }
76
77 return TRUE;
78}
79
80/***********************************************************************
81 * DllCanUnloadNow (DPLAYX.10)
82 */
83HRESULT WINAPI DPLAYX_DllCanUnloadNow(void)
84{
85 HRESULT hr = ( gdwDPlaySPRefCount > 0 ) ? S_FALSE : S_OK;
86
87 /* FIXME: Should I be putting a check in for class factory objects
88 * as well
89 */
90
91 TRACE( ": returning 0x%08lx\n", hr );
92
93 return hr;
94}
95
96
Note: See TracBrowser for help on using the repository browser.