Leaked source code of windows server 2003
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) Microsoft Corporation, 1998 - 1999 All rights reserved.
Module Name:
result.cxx
Abstract:
Error result help class
Author:
Steve Kiraly (SteveKi) 03-20-1998
Revision History:
--*/
#include "precomp.hxx"
#pragma hdrstop
#include <lmerr.h>
#include "result.hxx"
TResult:: TResult( IN DWORD dwLastError ) : _dwLastError( dwLastError ) { }
TResult:: ~TResult( VOID ) { }
BOOL TResult:: bValid( VOID ) { return TRUE; }
TResult:: TResult( const TResult &rhs ) { _dwLastError = rhs._dwLastError; }
const TResult & TResult:: operator =( const TResult &rhs ) { if( this != &rhs ) { _dwLastError = rhs._dwLastError; } return *this; }
TResult:: operator DWORD( VOID ) { return _dwLastError; }
BOOL TResult:: bGetErrorString( IN TString &strLastError ) const { DWORD cchReturn = 0; LPTSTR pszFormatMessage = NULL; HMODULE hModule = NULL; DWORD dwFlags = 0; TLibrary *pLib = NULL; TStatusB bStatus;
bStatus DBGNOCHK = FALSE;
//
// If the last error is from a lanman call.
//
if( _dwLastError >= NERR_BASE && _dwLastError <= MAX_NERR ) { pLib = new TLibrary( gszNetMsgDll );
if( VALID_PTR( pLib ) ) { hModule = pLib->hInst(); }
dwFlags = FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_MAX_WIDTH_MASK; } else { dwFlags = FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_MAX_WIDTH_MASK; }
//
// Format the message with the passed in last error.
//
cchReturn = FormatMessage( dwFlags, hModule, _dwLastError, 0, (LPTSTR)&pszFormatMessage, 0, NULL );
//
// If a format string was returned then copy it back to
// the callers specified string.
//
if( cchReturn ) { bStatus DBGCHK = strLastError.bUpdate( pszFormatMessage ); }
//
// Release the format string.
//
if( pszFormatMessage ) { LocalFree( pszFormatMessage ); }
//
// Release the net library dll.
//
delete pLib;
return bStatus; }
|