windows-nt/Source/XPSP1/NT/printscan/print/spooler/spllib/clink.cxx
2020-09-26 16:20:57 +08:00

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