ReactOS 0.4.15-dev-7788-g1ad9096
dllfunc.c File Reference
#include "config.h"
#include <stdarg.h>
#include <assert.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winerror.h"
#include "winreg.h"
#include "objbase.h"
#include "uuids.h"
#include "strmif.h"
#include "wine/unicode.h"
#include "wine/debug.h"
#include "wine/strmbase.h"
Include dependency graph for dllfunc.c:

Go to the source code of this file.

Classes

struct  IClassFactoryImpl
 

Macros

#define COBJMACROS
 
#define NONAMELESSSTRUCT
 
#define NONAMELESSUNION
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (strmbase)
 
static HRESULT SetupRegisterClass (HKEY clsid, LPCWSTR szCLSID, LPCWSTR szDescription, LPCWSTR szFileName, LPCWSTR szServerType, LPCWSTR szThreadingModel)
 
static HRESULT SetupRegisterAllClasses (const FactoryTemplate *pList, int num, LPCWSTR szFileName, BOOL bRegister)
 
HRESULT WINAPI AMovieSetupRegisterFilter2 (const AMOVIESETUP_FILTER *pFilter, IFilterMapper2 *pIFM2, BOOL bRegister)
 
HRESULT WINAPI AMovieDllRegisterServer2 (BOOL bRegister)
 
static void SetupInitializeServers (const FactoryTemplate *pList, int num, BOOL bLoading)
 
BOOL WINAPI STRMBASE_DllMain (HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
 
static IClassFactoryImplimpl_from_IClassFactory (IClassFactory *iface)
 
static HRESULT WINAPI DSCF_QueryInterface (IClassFactory *iface, REFIID riid, void **ppobj)
 
static ULONG WINAPI DSCF_AddRef (IClassFactory *iface)
 
static ULONG WINAPI DSCF_Release (IClassFactory *iface)
 
static HRESULT WINAPI DSCF_CreateInstance (IClassFactory *iface, IUnknown *pOuter, REFIID riid, void **ppobj)
 
static HRESULT WINAPI DSCF_LockServer (IClassFactory *iface, BOOL dolock)
 
HRESULT WINAPI STRMBASE_DllGetClassObject (REFCLSID rclsid, REFIID riid, LPVOID *ppv)
 
HRESULT WINAPI STRMBASE_DllCanUnloadNow (void)
 

Variables

const int g_cTemplates
 
const FactoryTemplate g_Templates []
 
static HINSTANCE g_hInst = NULL
 
static LONG server_locks = 0
 
static const WCHAR clsid_keyname [] = {'C','L','S','I','D',0 }
 
static const WCHAR ips32_keyname [] = {'I','n','P','r','o','c','S','e','r','v','e','r','3','2',0}
 
static const WCHAR tmodel_keyname [] = {'T','h','r','e','a','d','i','n','g','M','o','d','e','l',0}
 
static const WCHAR tmodel_both [] = {'B','o','t','h',0}
 
static const IClassFactoryVtbl DSCF_Vtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 26 of file dllfunc.c.

◆ NONAMELESSSTRUCT

#define NONAMELESSSTRUCT

Definition at line 27 of file dllfunc.c.

◆ NONAMELESSUNION

#define NONAMELESSUNION

Definition at line 28 of file dllfunc.c.

Function Documentation

◆ AMovieDllRegisterServer2()

HRESULT WINAPI AMovieDllRegisterServer2 ( BOOL  bRegister)

Definition at line 155 of file dllfunc.c.

156{
157 HRESULT hr;
158 int i;
159 IFilterMapper2 *pIFM2 = NULL;
160 WCHAR szFileName[MAX_PATH];
161
162 if (!GetModuleFileNameW(g_hInst, szFileName, MAX_PATH))
163 {
164 ERR("Failed to get module file name for registration\n");
165 return E_FAIL;
166 }
167
168 if (bRegister)
170
172
173 TRACE("Getting IFilterMapper2\r\n");
174 hr = CoCreateInstance(&CLSID_FilterMapper2, NULL, CLSCTX_INPROC_SERVER,
175 &IID_IFilterMapper2, (void **)&pIFM2);
176
177 for (i = 0; SUCCEEDED(hr) && i < g_cTemplates; i++)
178 hr = AMovieSetupRegisterFilter2(g_Templates[i].m_pAMovieSetup_Filter, pIFM2, bRegister);
179
180 /* release interface */
181 if (pIFM2)
182 IFilterMapper2_Release(pIFM2);
183
184 /* and clear up */
187
188 /* if unregistering, unregister all OLE servers */
189 if (SUCCEEDED(hr) && !bRegister)
191
192 return hr;
193}
#define ERR(fmt,...)
Definition: debug.h:110
#define E_FAIL
Definition: ddrawi.h:102
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define MAX_PATH
Definition: compat.h:34
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
Definition: loader.c:600
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
void WINAPI DECLSPEC_HOTPATCH CoFreeUnusedLibraries(void)
Definition: compobj.c:3701
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:1964
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:2067
static HRESULT SetupRegisterAllClasses(const FactoryTemplate *pList, int num, LPCWSTR szFileName, BOOL bRegister)
Definition: dllfunc.c:106
HRESULT WINAPI AMovieSetupRegisterFilter2(const AMOVIESETUP_FILTER *pFilter, IFilterMapper2 *pIFM2, BOOL bRegister)
Definition: dllfunc.c:134
const int g_cTemplates
Definition: qcap_main.c:145
const FactoryTemplate g_Templates[]
Definition: qcap_main.c:76
static HINSTANCE g_hInst
Definition: dllfunc.c:48
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define SUCCEEDED(hr)
Definition: intsafe.h:50
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by DllRegisterServer(), and DllUnregisterServer().

◆ AMovieSetupRegisterFilter2()

HRESULT WINAPI AMovieSetupRegisterFilter2 ( const AMOVIESETUP_FILTER pFilter,
IFilterMapper2 pIFM2,
BOOL  bRegister 
)

Definition at line 134 of file dllfunc.c.

135{
136 if (!pFilter)
137 return S_OK;
138
139 if (bRegister)
140 {
141 {
142 REGFILTER2 rf2;
143 rf2.dwVersion = 1;
144 rf2.dwMerit = pFilter->merit;
145 rf2.u.s1.cPins = pFilter->pins;
146 rf2.u.s1.rgPins = pFilter->pPin;
147
148 return IFilterMapper2_RegisterFilter(pIFM2, pFilter->clsid, pFilter->name, NULL, &CLSID_LegacyAmFilterCategory, NULL, &rf2);
149 }
150 }
151 else
152 return IFilterMapper2_UnregisterFilter(pIFM2, &CLSID_LegacyAmFilterCategory, NULL, pFilter->clsid);
153}
#define S_OK
Definition: intsafe.h:52
const CLSID * clsid
Definition: strmbase.h:323
const AMOVIESETUP_PIN * pPin
Definition: strmbase.h:327
const WCHAR * name
Definition: strmbase.h:324
DWORD dwVersion
Definition: axextend.idl:236
const REGFILTERPINS * rgPins
Definition: axextend.idl:244
ULONG cPins
Definition: axextend.idl:243
DWORD dwMerit
Definition: axextend.idl:237

Referenced by AMovieDllRegisterServer2().

◆ DSCF_AddRef()

static ULONG WINAPI DSCF_AddRef ( IClassFactory iface)
static

Definition at line 262 of file dllfunc.c.

263{
265 return InterlockedIncrement(&This->ref);
266}
#define InterlockedIncrement
Definition: armddk.h:53
static IClassFactoryImpl * impl_from_IClassFactory(IClassFactory *iface)
Definition: dllfunc.c:242

◆ DSCF_CreateInstance()

static HRESULT WINAPI DSCF_CreateInstance ( IClassFactory iface,
IUnknown pOuter,
REFIID  riid,
void **  ppobj 
)
static

Definition at line 279 of file dllfunc.c.

281{
284 LPUNKNOWN punk;
285
286 TRACE("(%p)->(%p,%s,%p)\n", This, pOuter, debugstr_guid(riid), ppobj);
287
288 if (!ppobj)
289 return E_POINTER;
290
291 /* Enforce the normal OLE rules regarding interfaces and delegation */
292 if (pOuter && !IsEqualGUID(riid, &IID_IUnknown))
293 return E_NOINTERFACE;
294
295 *ppobj = NULL;
296 punk = This->pfnCreateInstance(pOuter, &hres);
297 if (!punk)
298 {
299 /* No object created, update error if it isn't done already and return */
300 if (SUCCEEDED(hres))
302 return hres;
303 }
304
305 if (SUCCEEDED(hres))
306 {
307 hres = IUnknown_QueryInterface(punk, riid, ppobj);
308 }
309 /* Releasing the object. If everything was successful, QueryInterface
310 should have incremented the refcount once more, otherwise this will
311 purge the object. */
312 IUnknown_Release(punk);
313 return hres;
314}
const GUID IID_IUnknown
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define ERROR_SUCCESS
Definition: deptool.c:10
REFIID riid
Definition: atlbase.h:39
#define debugstr_guid
Definition: kernel32.h:35
HRESULT hres
Definition: protocol.c:465
static LPUNKNOWN
Definition: ndr_ole.c:49
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define E_NOINTERFACE
Definition: winerror.h:2364
#define E_POINTER
Definition: winerror.h:2365

◆ DSCF_LockServer()

static HRESULT WINAPI DSCF_LockServer ( IClassFactory iface,
BOOL  dolock 
)
static

Definition at line 316 of file dllfunc.c.

317{
319 TRACE("(%p)->(%d)\n",This, dolock);
320
321 if (dolock)
323 else
325 return S_OK;
326}
#define InterlockedDecrement
Definition: armddk.h:52
static LONG server_locks
Definition: dllfunc.c:49

◆ DSCF_QueryInterface()

static HRESULT WINAPI DSCF_QueryInterface ( IClassFactory iface,
REFIID  riid,
void **  ppobj 
)
static

Definition at line 247 of file dllfunc.c.

248{
251 {
252 IClassFactory_AddRef(iface);
253 *ppobj = iface;
254 return S_OK;
255 }
256
257 *ppobj = NULL;
258 WARN("(%p)->(%s,%p), not found\n", iface, debugstr_guid(riid), ppobj);
259 return E_NOINTERFACE;
260}
const GUID IID_IClassFactory
#define WARN(fmt,...)
Definition: debug.h:112

◆ DSCF_Release()

static ULONG WINAPI DSCF_Release ( IClassFactory iface)
static

Definition at line 268 of file dllfunc.c.

269{
272
273 if (ref == 0)
275
276 return ref;
277}
#define GetProcessHeap()
Definition: compat.h:736
#define HeapFree(x, y, z)
Definition: compat.h:735
Definition: send.c:48
uint32_t ULONG
Definition: typedefs.h:59

◆ impl_from_IClassFactory()

static IClassFactoryImpl * impl_from_IClassFactory ( IClassFactory iface)
inlinestatic

Definition at line 242 of file dllfunc.c.

243{
244 return CONTAINING_RECORD(iface, IClassFactoryImpl, IClassFactory_iface);
245}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by DSCF_AddRef(), DSCF_CreateInstance(), DSCF_LockServer(), and DSCF_Release().

◆ SetupInitializeServers()

static void SetupInitializeServers ( const FactoryTemplate pList,
int  num,
BOOL  bLoading 
)
static

Definition at line 205 of file dllfunc.c.

207{
208 int i;
209
210 for (i = 0; i < num; i++, pList++)
211 {
212 if (pList->m_lpfnInit)
213 pList->m_lpfnInit(bLoading, pList->m_ClsID);
214 }
215}
FxChildList * pList
GLuint GLuint num
Definition: glext.h:9618

Referenced by STRMBASE_DllMain().

◆ SetupRegisterAllClasses()

static HRESULT SetupRegisterAllClasses ( const FactoryTemplate pList,
int  num,
LPCWSTR  szFileName,
BOOL  bRegister 
)
static

Definition at line 106 of file dllfunc.c.

108{
110 HKEY hkey;
111 OLECHAR szCLSID[CHARS_IN_GUID];
113 if (ERROR_SUCCESS != ret)
114 return HRESULT_FROM_WIN32(ret);
115
116 for (i = 0; i < num; i++, pList++)
117 {
118 /* (un)register CLSID and InprocServer32 */
119 hr = StringFromGUID2(pList->m_ClsID, szCLSID, CHARS_IN_GUID);
120 if (SUCCEEDED(hr))
121 {
122 if (bRegister )
123 hr = SetupRegisterClass(hkey, szCLSID,
124 pList->m_Name, szFileName,
126 else
127 hr = RegDeleteTreeW(hkey, szCLSID);
128 }
129 }
130 RegCloseKey(hkey);
131 return hr;
132}
#define RegCloseKey(hKey)
Definition: registry.h:49
LSTATUS WINAPI RegDeleteTreeW(_In_ HKEY, _In_opt_ LPCWSTR)
#define CHARS_IN_GUID
LONG WINAPI RegCreateKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:1201
WCHAR OLECHAR
Definition: compat.h:2292
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
Definition: compobj.c:2434
static HRESULT SetupRegisterClass(HKEY clsid, LPCWSTR szCLSID, LPCWSTR szDescription, LPCWSTR szFileName, LPCWSTR szServerType, LPCWSTR szThreadingModel)
Definition: dllfunc.c:63
static const WCHAR tmodel_both[]
Definition: dllfunc.c:58
static const WCHAR clsid_keyname[]
Definition: dllfunc.c:55
static const WCHAR ips32_keyname[]
Definition: dllfunc.c:56
long LONG
Definition: pedump.c:60
int ret
#define NOERROR
Definition: winerror.h:2354
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10

Referenced by AMovieDllRegisterServer2().

◆ SetupRegisterClass()

static HRESULT SetupRegisterClass ( HKEY  clsid,
LPCWSTR  szCLSID,
LPCWSTR  szDescription,
LPCWSTR  szFileName,
LPCWSTR  szServerType,
LPCWSTR  szThreadingModel 
)
static

Definition at line 63 of file dllfunc.c.

68{
69 HKEY hkey, hsubkey = NULL;
70 LONG ret = RegCreateKeyW(clsid, szCLSID, &hkey);
71 if (ERROR_SUCCESS != ret)
72 return HRESULT_FROM_WIN32(ret);
73
74 /* set description string */
76 sizeof(WCHAR) * (lstrlenW(szDescription) + 1));
77 if (ERROR_SUCCESS != ret)
78 goto err_out;
79
80 /* create CLSID\\{"CLSID"}\\"ServerType" key, using key to CLSID\\{"CLSID"}
81 passed back by last call to RegCreateKeyW(). */
82 ret = RegCreateKeyW(hkey, szServerType, &hsubkey);
83 if (ERROR_SUCCESS != ret)
84 goto err_out;
85
86 /* set server path */
87 ret = RegSetValueW(hsubkey, NULL, REG_SZ, szFileName,
88 sizeof(WCHAR) * (lstrlenW(szFileName) + 1));
89 if (ERROR_SUCCESS != ret)
90 goto err_out;
91
92 /* set threading model */
94 (const BYTE*)szThreadingModel,
95 sizeof(WCHAR) * (lstrlenW(szThreadingModel) + 1));
96err_out:
97 if (hsubkey)
98 RegCloseKey(hsubkey);
99 RegCloseKey(hkey);
100 return HRESULT_FROM_WIN32(ret);
101}
static const WCHAR szDescription[]
Definition: provider.c:55
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4911
LONG WINAPI RegSetValueW(HKEY hKeyOriginal, LPCWSTR lpSubKey, DWORD dwType, LPCWSTR lpData, DWORD cbData)
Definition: reg.c:5029
#define lstrlenW
Definition: compat.h:750
static const WCHAR tmodel_keyname[]
Definition: dllfunc.c:57
#define REG_SZ
Definition: layer.c:22
REFCLSID clsid
Definition: msctf.c:82
#define L(x)
Definition: ntvdm.h:50
unsigned char BYTE
Definition: xxhash.c:193

Referenced by SetupRegisterAllClasses().

◆ STRMBASE_DllCanUnloadNow()

HRESULT WINAPI STRMBASE_DllCanUnloadNow ( void  )

Definition at line 393 of file dllfunc.c.

394{
395 TRACE("\n");
396
397 if (server_locks == 0)
398 return S_OK;
399 return S_FALSE;
400}
#define S_FALSE
Definition: winerror.h:2357

Referenced by DllCanUnloadNow().

◆ STRMBASE_DllGetClassObject()

HRESULT WINAPI STRMBASE_DllGetClassObject ( REFCLSID  rclsid,
REFIID  riid,
LPVOID ppv 
)

Definition at line 340 of file dllfunc.c.

341{
344 int i;
345
346 TRACE("(%s,%s,%p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
347
348 if (!ppv)
349 return E_POINTER;
350
351 *ppv = NULL;
352
355 return E_NOINTERFACE;
356
357 for (i = 0; i < g_cTemplates; i++, pList++)
358 {
359 if (IsEqualGUID(pList->m_ClsID, rclsid))
360 break;
361 }
362
363 if (i == g_cTemplates)
364 {
365 char dllname[MAX_PATH];
366 if (!GetModuleFileNameA(g_hInst, dllname, sizeof(dllname)))
367 strcpy(dllname, "???");
368 ERR("%s: no class found in %s.\n", debugstr_guid(rclsid), dllname);
370 }
371 else if (!pList->m_lpfnNew)
372 {
373 FIXME("%s: class not implemented yet.\n", debugstr_guid(rclsid));
375 }
376
378 if (!factory)
379 return E_OUTOFMEMORY;
380
382 factory->ref = 1;
383
384 factory->pfnCreateInstance = pList->m_lpfnNew;
385
387 return S_OK;
388}
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
#define FIXME(fmt,...)
Definition: debug.h:111
#define HeapAlloc
Definition: compat.h:733
DWORD WINAPI GetModuleFileNameA(HINSTANCE hModule, LPSTR lpFilename, DWORD nSize)
Definition: loader.c:539
static const IClassFactoryVtbl DSCF_Vtbl
Definition: dllfunc.c:328
REFIID LPVOID * ppv
Definition: atlbase.h:39
Definition: main.c:439
IClassFactory IClassFactory_iface
Definition: main.c:440
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:2663

Referenced by DllGetClassObject().

◆ STRMBASE_DllMain()

BOOL WINAPI STRMBASE_DllMain ( HINSTANCE  hInstDLL,
DWORD  fdwReason,
LPVOID  lpv 
)

Definition at line 217 of file dllfunc.c.

218{
219 switch (fdwReason)
220 {
222 g_hInst = hInstDLL;
225 break;
228 break;
229 }
230 return TRUE;
231}
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
#define DLL_PROCESS_DETACH
Definition: compat.h:130
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
static void SetupInitializeServers(const FactoryTemplate *pList, int num, BOOL bLoading)
Definition: dllfunc.c:205

Referenced by DllMain().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( strmbase  )

Variable Documentation

◆ clsid_keyname

const WCHAR clsid_keyname[] = {'C','L','S','I','D',0 }
static

Definition at line 55 of file dllfunc.c.

Referenced by SetupRegisterAllClasses().

◆ DSCF_Vtbl

const IClassFactoryVtbl DSCF_Vtbl
static
Initial value:
=
{
}
static ULONG WINAPI DSCF_AddRef(IClassFactory *iface)
Definition: dllfunc.c:262
static ULONG WINAPI DSCF_Release(IClassFactory *iface)
Definition: dllfunc.c:268
static HRESULT WINAPI DSCF_LockServer(IClassFactory *iface, BOOL dolock)
Definition: dllfunc.c:316
static HRESULT WINAPI DSCF_QueryInterface(IClassFactory *iface, REFIID riid, void **ppobj)
Definition: dllfunc.c:247
static HRESULT WINAPI DSCF_CreateInstance(IClassFactory *iface, IUnknown *pOuter, REFIID riid, void **ppobj)
Definition: dllfunc.c:279

Definition at line 328 of file dllfunc.c.

Referenced by STRMBASE_DllGetClassObject().

◆ g_cTemplates

const int g_cTemplates
extern

◆ g_hInst

HINSTANCE g_hInst = NULL
static

◆ g_Templates

const FactoryTemplate g_Templates[]
extern

◆ ips32_keyname

const WCHAR ips32_keyname[] = {'I','n','P','r','o','c','S','e','r','v','e','r','3','2',0}
static

Definition at line 56 of file dllfunc.c.

Referenced by SetupRegisterAllClasses().

◆ server_locks

LONG server_locks = 0
static

Definition at line 49 of file dllfunc.c.

Referenced by DSCF_LockServer(), and STRMBASE_DllCanUnloadNow().

◆ tmodel_both

const WCHAR tmodel_both[] = {'B','o','t','h',0}
static

Definition at line 58 of file dllfunc.c.

Referenced by SetupRegisterAllClasses().

◆ tmodel_keyname

const WCHAR tmodel_keyname[] = {'T','h','r','e','a','d','i','n','g','M','o','d','e','l',0}
static

Definition at line 57 of file dllfunc.c.

Referenced by SetupRegisterClass().