Source code of Windows XP (NT5)
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.
|
|
/*++
Copyright (c) 1998-1999 Microsoft Corporation All rights reserved.
Module Name:
dbgcon.cxx
Abstract:
Debug Device Text Console
Author:
Steve Kiraly (SteveKi) 10-Dec-1995
Revision History:
--*/ #include "precomp.hxx"
#pragma hdrstop
#include "dbgcon.hxx"
//
// Construct the console device.
//
TDebugDeviceConsole:: TDebugDeviceConsole( IN LPCTSTR pszConfiguration, IN EDebugType eDebugType ) : TDebugDevice( pszConfiguration, eDebugType ), _bValid( FALSE ), _hOutputHandle( INVALID_HANDLE_VALUE ), _eCharType( kAnsi ) { //
// Get the current character type.
//
_eCharType = eGetCharType();
//
// If console allocated.
//
_bValid = AllocConsole();
//
// If valid console created.
//
_hOutputHandle = GetStdHandle( STD_OUTPUT_HANDLE ); }
//
// Release the constructed console.
//
TDebugDeviceConsole:: ~TDebugDeviceConsole( ) { //
// If console was alocated.
//
if( _hOutputHandle ) { FreeConsole(); } }
//
// Indicates object validity.
//
BOOL TDebugDeviceConsole:: bValid( VOID ) { return _hOutputHandle != NULL; }
//
// Output to the specified device.
//
BOOL TDebugDeviceConsole:: bOutput ( IN UINT uSize, IN LPBYTE pBuffer ) { BOOL bStatus = FALSE;
//
// Only if console was created.
//
if( bValid() ) { //
// Adjust passed in byte cound to a character count.
//
if( _eCharType == kUnicode ) { uSize = uSize / sizeof( WCHAR ); }
//
// Write the specified bytes to the console.
//
DWORD cbWritten; bStatus = WriteConsole( _hOutputHandle, pBuffer, uSize, &cbWritten, NULL ); //
// Success only of the specified bytes were written.
//
if( !bStatus || cbWritten != uSize ) { bStatus = FALSE; } }
return bStatus; }
|