175 lines
2.4 KiB
C++
175 lines
2.4 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (c) 1998-1999 Microsoft Corporation
|
||
|
All rights reserved.
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
dbgdbg.cxx
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Debug Device Debugger device
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Steve Kiraly (SteveKi) 5-Dec-1995
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
#include "precomp.hxx"
|
||
|
#pragma hdrstop
|
||
|
|
||
|
#include "dbgdbg.hxx"
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Name:
|
||
|
|
||
|
DebugDeviceDebugger constructor
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Initializes the debug device
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
Pointer to object defined configuration string
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
Nothing
|
||
|
|
||
|
--*/
|
||
|
TDebugDeviceDebugger::
|
||
|
TDebugDeviceDebugger(
|
||
|
IN LPCTSTR pszConfiguration,
|
||
|
IN EDebugType eDebugType
|
||
|
) : TDebugDevice( pszConfiguration, eDebugType ),
|
||
|
_bAnsi( FALSE )
|
||
|
{
|
||
|
_bAnsi = eGetCharType() == TDebugDevice::kAnsi;
|
||
|
}
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Name:
|
||
|
|
||
|
DebugDevice Destructor
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Removes access to the debug device
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
None
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
Nothing
|
||
|
|
||
|
--*/
|
||
|
TDebugDeviceDebugger::
|
||
|
~TDebugDeviceDebugger(
|
||
|
VOID
|
||
|
)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Name:
|
||
|
|
||
|
Valid Object indicator
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
|
||
|
--*/
|
||
|
BOOL
|
||
|
TDebugDeviceDebugger::
|
||
|
bValid(
|
||
|
VOID
|
||
|
) const
|
||
|
{
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Name:
|
||
|
|
||
|
DebugDevice output
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Output the string to the debug device.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
Number of bytes to output, including the null.
|
||
|
Pointer to zero terminated debug string
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
TRUE string output out, FALSE on failure
|
||
|
|
||
|
--*/
|
||
|
BOOL
|
||
|
TDebugDeviceDebugger::
|
||
|
bOutput (
|
||
|
IN UINT cbSize,
|
||
|
IN LPBYTE pBuffer
|
||
|
)
|
||
|
{
|
||
|
BYTE pTemp[256];
|
||
|
UINT uIndex;
|
||
|
|
||
|
//
|
||
|
// OutputDebugString cannot handle strings large then
|
||
|
// 4k so we do it in chunks.
|
||
|
//
|
||
|
for (uIndex = 0; cbSize; cbSize = cbSize - uIndex)
|
||
|
{
|
||
|
//
|
||
|
// The current index is the small of the two either
|
||
|
// the remaining data or the size of the temp buffer,
|
||
|
// less the null terminator.
|
||
|
//
|
||
|
uIndex = min(sizeof(pTemp) - sizeof(WCHAR), cbSize);
|
||
|
|
||
|
//
|
||
|
// Copy the memory, we know it is not overlapping.
|
||
|
//
|
||
|
memcpy(pTemp, pBuffer, uIndex);
|
||
|
|
||
|
//
|
||
|
// Update the buffer count, and place the null.
|
||
|
//
|
||
|
pBuffer = pBuffer + uIndex;
|
||
|
*(pTemp + uIndex + 0) = 0;
|
||
|
*(pTemp + uIndex + 1) = 0;
|
||
|
|
||
|
if (_bAnsi)
|
||
|
{
|
||
|
OutputDebugStringA( (LPSTR)pTemp );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
OutputDebugStringW( (LPWSTR)pTemp );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
|