windows-nt/Source/XPSP1/NT/base/wmi/wbemlib/debug.cpp
2020-09-26 16:20:57 +08:00

129 lines
2 KiB
C++

//***************************************************************************
//
// debug.CPP
//
// Module: CDM Provider
//
// Purpose: Debugging routines
//
// Copyright (c) 2000 Microsoft Corporation
//
//***************************************************************************
#ifdef HEAP_DEBUG
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#endif
#include <windows.h>
#include <stdio.h>
#include "debug.h"
void __cdecl DebugOut(char *Format, ...)
{
char Buffer[1024];
va_list pArg;
ULONG i;
va_start(pArg, Format);
i = _vsnprintf(Buffer, sizeof(Buffer), Format, pArg);
OutputDebugString(Buffer);
}
#ifdef HEAP_DEBUG
PVOID MyHeap;
PVOID WmipAlloc(
IN ULONG Size
)
/*+++
Routine Description:
Internal memory allocator
Arguments:
Size is the number of bytes to allocate
Return Value:
pointer to alloced memory or NULL
---*/
{
PVOID p;
if (MyHeap == NULL)
{
MyHeap = RtlCreateHeap(HEAP_GROWABLE |
HEAP_GENERATE_EXCEPTIONS |
HEAP_TAIL_CHECKING_ENABLED |
HEAP_FREE_CHECKING_ENABLED,
NULL,
0,
0,
NULL,
NULL);
if (MyHeap == NULL)
{
WmipDebugPrint(("CDMPROV: Could not create debug heap\n"));
return(NULL);
}
}
WmipAssert(RtlValidateHeap(MyHeap,
0,
NULL));
p = RtlAllocateHeap(MyHeap,
0,
Size);
return(p);
}
void WmipFree(
IN PVOID Ptr
)
/*+++
Routine Description:
Internal memory deallocator
Arguments:
Pointer to freed memory
Return Value:
void
---*/
{
WmipAssert(Ptr != NULL);
WmipAssert(MyHeap != NULL);
WmipAssert(RtlValidateHeap(MyHeap,
0,
NULL));
RtlFreeHeap(MyHeap,
0,
Ptr);
}
void * __cdecl ::operator new(size_t Size)
{
return(WmipAlloc(Size));
}
void __cdecl ::operator delete(void *Ptr)
{
WmipFree(Ptr);
}
#endif