mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
3.1 KiB
140 lines
3.1 KiB
]//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1993.
|
|
//
|
|
// File: w95.cxx
|
|
//
|
|
// Contents: Win9x specific routines.
|
|
//
|
|
// Classes:
|
|
//
|
|
// Functions:
|
|
//
|
|
//
|
|
//
|
|
// History: 17-Mar-93 BillMo Created.
|
|
//
|
|
// Notes:
|
|
//
|
|
// Codework:
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#include "act.hxx"
|
|
|
|
extern CSmMutex * gpWIPmxs;
|
|
CWIPTable * gpWIPTbl = NULL;
|
|
|
|
extern HRESULT (*DfCreateSharedAllocator)( IMalloc **ppm );
|
|
IMalloc * g_pStgAlloc;
|
|
|
|
//+-------------------------------------------------------------------
|
|
//
|
|
// Function: ScmMemAlloc for Chicago
|
|
//
|
|
// Synopsis: Allocate some shared memory from the storage heap.
|
|
//
|
|
// Notes: Temporary until we have our own shared heap.
|
|
//
|
|
//--------------------------------------------------------------------
|
|
void *ScmMemAlloc(size_t size)
|
|
{
|
|
return g_pStgAlloc->Alloc(size);
|
|
}
|
|
|
|
//+-------------------------------------------------------------------
|
|
//
|
|
// Function: ScmMemFree
|
|
//
|
|
// Synopsis: Free shared memory from the storage heap.
|
|
//
|
|
// Notes: Temporary until we have our own shared heap.
|
|
//
|
|
//--------------------------------------------------------------------
|
|
void ScmMemFree(void * pv)
|
|
{
|
|
g_pStgAlloc->Free(pv);
|
|
}
|
|
|
|
|
|
//+-------------------------------------------------------------------
|
|
//
|
|
// Function: InitSharedLists
|
|
//
|
|
// Synopsis: If need be, create class cache list, handler list,
|
|
// inproc list, local server list
|
|
//
|
|
// Returns: TRUE if successful, FALSE otherwise.
|
|
//
|
|
//--------------------------------------------------------------------
|
|
BOOL InitSharedLists()
|
|
{
|
|
HRESULT hr = S_OK;
|
|
LONG Status;
|
|
|
|
if (FAILED(hr = DfCreateSharedAllocator(&g_pStgAlloc)))
|
|
{
|
|
CairoleDebugOut((DEB_ERROR,
|
|
"DfCreateSharedAllocator failed %08x\n", hr));
|
|
return(FALSE);
|
|
}
|
|
|
|
if (g_post->gpClassTable == NULL)
|
|
{
|
|
gpClassTable = g_post->gpClassTable = new CClassTable(Status);
|
|
}
|
|
else
|
|
{
|
|
gpClassTable = g_post->gpClassTable;
|
|
}
|
|
|
|
if (g_post->gpSurrogateList == NULL)
|
|
{
|
|
gpSurrogateList = g_post->gpSurrogateList = new CSurrogateList();
|
|
}
|
|
else
|
|
{
|
|
gpSurrogateList = g_post->gpSurrogateList;
|
|
}
|
|
|
|
if (g_post->pscmrot == NULL)
|
|
{
|
|
gpscmrot = g_post->pscmrot = new CScmRot(hr, NULL);
|
|
}
|
|
else
|
|
{
|
|
gpscmrot = g_post->pscmrot;
|
|
}
|
|
|
|
if (g_post->gpWIPTbl == NULL)
|
|
{
|
|
gpWIPTbl = g_post->gpWIPTbl = new CWIPTable();
|
|
}
|
|
else
|
|
{
|
|
gpWIPTbl = g_post->gpWIPTbl;
|
|
}
|
|
|
|
if (gpClassTable == NULL ||
|
|
gpscmrot == NULL ||
|
|
gpWIPTbl == NULL ||
|
|
FAILED(hr))
|
|
{
|
|
CairoleDebugOut((DEB_ERROR, "InitSharedLists failed.\n"));
|
|
|
|
delete gpClassTable;
|
|
delete gpscmrot;
|
|
delete gpWIPTbl;
|
|
|
|
g_post->gpClassTable = gpClassTable = NULL;
|
|
g_post->pscmrot = gpscmrot = NULL;
|
|
g_post->gpWIPTbl = gpWIPTbl = NULL;
|
|
|
|
return(FALSE);
|
|
}
|
|
|
|
gpWIPmxs->Init(TEXT("ScmWIPMutex"), FALSE);
|
|
|
|
return(TRUE);
|
|
}
|