186 lines
2.2 KiB
C++
186 lines
2.2 KiB
C++
/*++
|
|
|
|
Copyright (c) 1994 Microsoft Corporation
|
|
All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
CLink.cxx
|
|
|
|
Abstract:
|
|
|
|
C linkage support for DEBUG support only.
|
|
|
|
Author:
|
|
|
|
Albert Ting (AlbertT) 10-Oct-95
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#include "spllibp.hxx"
|
|
#pragma hdrstop
|
|
|
|
#if DBG
|
|
|
|
extern DBG_POINTERS gDbgPointers;
|
|
|
|
VBackTrace *pbtCS = NULL;
|
|
|
|
VOID
|
|
DbgEnterCriticalSection(
|
|
PCRITICAL_SECTION pcs
|
|
)
|
|
{
|
|
if( !pbtCS ){
|
|
pbtCS = new TBackTraceFile;
|
|
}
|
|
|
|
EnterCriticalSection( pcs );
|
|
pbtCS->hCapture( (ULONG_PTR)pcs, 1 );
|
|
}
|
|
|
|
VOID
|
|
DbgLeaveCriticalSection(
|
|
PCRITICAL_SECTION pcs
|
|
)
|
|
{
|
|
if( !pbtCS ){
|
|
pbtCS = new TBackTraceFile;
|
|
}
|
|
|
|
pbtCS->hCapture( (ULONG_PTR)pcs, 0 );
|
|
LeaveCriticalSection( pcs );
|
|
}
|
|
|
|
|
|
HANDLE
|
|
DbgAllocBackTrace(
|
|
VOID
|
|
)
|
|
{
|
|
return (HANDLE)(VBackTrace*) new TBackTraceMem;
|
|
}
|
|
|
|
HANDLE
|
|
DbgAllocBackTraceMem(
|
|
VOID
|
|
)
|
|
{
|
|
return (HANDLE)(VBackTrace*) new TBackTraceMem;
|
|
}
|
|
|
|
HANDLE
|
|
DbgAllocBackTraceFile(
|
|
VOID
|
|
)
|
|
{
|
|
return (HANDLE)(VBackTrace*) new TBackTraceFile;
|
|
}
|
|
|
|
VOID
|
|
DbgFreeBackTrace(
|
|
HANDLE hBackTrace
|
|
)
|
|
{
|
|
delete (VBackTrace*)hBackTrace;
|
|
}
|
|
|
|
VOID
|
|
DbgCaptureBackTrace(
|
|
HANDLE hBackTrace,
|
|
ULONG_PTR Info1,
|
|
ULONG_PTR Info2,
|
|
ULONG_PTR Info3
|
|
)
|
|
{
|
|
VBackTrace* pBackTrace = (VBackTrace*)hBackTrace;
|
|
if( pBackTrace ){
|
|
pBackTrace->hCapture( Info1, Info2, Info3 );
|
|
}
|
|
}
|
|
|
|
HANDLE
|
|
DbgAllocCritSec(
|
|
VOID
|
|
)
|
|
{
|
|
return (HANDLE)new MCritSec;
|
|
}
|
|
|
|
VOID
|
|
DbgFreeCritSec(
|
|
HANDLE hCritSec
|
|
)
|
|
{
|
|
delete (MCritSec*)hCritSec;
|
|
}
|
|
|
|
BOOL
|
|
DbgInsideCritSec(
|
|
HANDLE hCritSec
|
|
)
|
|
{
|
|
return ((MCritSec*)hCritSec)->bInside();
|
|
}
|
|
|
|
BOOL
|
|
DbgOutsideCritSec(
|
|
HANDLE hCritSec
|
|
)
|
|
{
|
|
return ((MCritSec*)hCritSec)->bOutside();
|
|
}
|
|
|
|
VOID
|
|
DbgEnterCritSec(
|
|
HANDLE hCritSec
|
|
)
|
|
{
|
|
((MCritSec*)hCritSec)->vEnter();
|
|
}
|
|
|
|
VOID
|
|
DbgLeaveCritSec(
|
|
HANDLE hCritSec
|
|
)
|
|
{
|
|
((MCritSec*)hCritSec)->vLeave();
|
|
}
|
|
|
|
VOID
|
|
DbgSetAllocFail(
|
|
BOOL bEnable,
|
|
LONG cAllocFail
|
|
)
|
|
{
|
|
gbAllocFail = bEnable;
|
|
gcAllocFail = cAllocFail;
|
|
}
|
|
|
|
PVOID
|
|
DbgGetPointers(
|
|
VOID
|
|
)
|
|
{
|
|
return &gDbgPointers;
|
|
}
|
|
|
|
#else
|
|
|
|
//
|
|
// Stub these out so that non-DBG builds can link w/ debug spoolss.dll.
|
|
//
|
|
|
|
PVOID
|
|
DbgGetPointers(
|
|
VOID
|
|
)
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
#endif
|
|
|