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

Last change on this file since 5120 was 4317, checked in by hugh, 25 years ago

Added ID tags

File size: 2.0 KB
Line 
1// $Id: dplayx_main.cpp,v 1.2 2000-09-24 22:47:37 hugh 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
21DEFAULT_DEBUG_CHANNEL(dplay);
22
23DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
24
25static DWORD DPLAYX_dwProcessesAttached = 0;
26
27/* This is a globally exported variable at ordinal 6 of DPLAYX.DLL */
28DWORD gdwDPlaySPRefCount = 0; /* FIXME: Should it be initialized here? */
29
30extern "C" {
31void CDECL _ctordtorTerm( void );
32}
33
34BOOL WINAPI DPLAYX_LibMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved )
35{
36
37 TRACE( "(%u,0x%08lx,%p) & 0x%08lx\n", hinstDLL, fdwReason, lpvReserved, DPLAYX_dwProcessesAttached );
38
39 switch ( fdwReason )
40 {
41 case DLL_PROCESS_ATTACH:
42 {
43
44 if ( DPLAYX_dwProcessesAttached++ == 0 )
45 {
46 /* First instance perform construction of global processor data */
47 return DPLAYX_ConstructData();
48 }
49
50 break;
51 }
52
53 case DLL_PROCESS_DETACH:
54 {
55
56 if ( --DPLAYX_dwProcessesAttached == 0 )
57 {
58 BOOL rc;
59 /* Last instance performs destruction of global processor data */
60 rc = DPLAYX_DestructData();
61 _ctordtorTerm();
62 return rc;
63 }
64
65 break;
66 }
67
68 case DLL_THREAD_ATTACH: /* Do nothing */
69 case DLL_THREAD_DETACH: /* Do nothing */
70 break;
71 default:
72 break;
73
74 }
75
76 return TRUE;
77}
78
79/***********************************************************************
80 * DllCanUnloadNow (DPLAYX.10)
81 */
82HRESULT WINAPI DPLAYX_DllCanUnloadNow(void)
83{
84 HRESULT hr = ( gdwDPlaySPRefCount > 0 ) ? S_FALSE : S_OK;
85
86 /* FIXME: Should I be putting a check in for class factory objects
87 * as well
88 */
89
90 TRACE( ": returning 0x%08lx\n", hr );
91
92 return hr;
93}
94
95
Note: See TracBrowser for help on using the repository browser.