96 lines
2.2 KiB
C
96 lines
2.2 KiB
C
/*++
|
|
|
|
Copyright (c) 1992 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
error.c
|
|
|
|
Abstract:
|
|
|
|
Error handle module for the pfmon program
|
|
|
|
Author:
|
|
|
|
Mark Lucovsky (markl) 26-Jan-1995
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#include "pfmonp.h"
|
|
|
|
VOID
|
|
__cdecl
|
|
DeclareError(
|
|
UINT ErrorCode,
|
|
UINT SupplementalErrorCode,
|
|
...
|
|
)
|
|
{
|
|
va_list arglist;
|
|
HMODULE ModuleHandle;
|
|
DWORD Flags, Size;
|
|
UCHAR MessageBuffer[ 512 ];
|
|
|
|
va_start( arglist, SupplementalErrorCode );
|
|
|
|
if ((ErrorCode & 0x0FFF0000) >> 16 == FACILITY_APPLICATION) {
|
|
ModuleHandle = PfmonModuleHandle;
|
|
Flags = FORMAT_MESSAGE_FROM_HMODULE;
|
|
}
|
|
else {
|
|
ModuleHandle = NULL;
|
|
Flags = FORMAT_MESSAGE_FROM_SYSTEM;
|
|
}
|
|
|
|
Size = FormatMessage( Flags,
|
|
(LPCVOID)ModuleHandle,
|
|
ErrorCode,
|
|
0,
|
|
MessageBuffer,
|
|
sizeof( MessageBuffer ),
|
|
&arglist
|
|
);
|
|
va_end( arglist );
|
|
|
|
if (Size != 0) {
|
|
fprintf( stderr, "PFMON: %s", MessageBuffer );
|
|
}
|
|
else {
|
|
fprintf( stderr, "PFMON: Unable to get message text for %08x\n", ErrorCode );
|
|
}
|
|
|
|
if (ModuleHandle == PfmonModuleHandle &&
|
|
SupplementalErrorCode != 0 &&
|
|
SupplementalErrorCode != ERROR_GEN_FAILURE
|
|
) {
|
|
|
|
ModuleHandle = NULL;
|
|
Flags = FORMAT_MESSAGE_FROM_SYSTEM;
|
|
Size = FormatMessage( Flags,
|
|
(LPCVOID)ModuleHandle,
|
|
SupplementalErrorCode,
|
|
0,
|
|
MessageBuffer,
|
|
sizeof( MessageBuffer ),
|
|
NULL
|
|
);
|
|
if (Size != 0) {
|
|
while (Size != 0 && MessageBuffer[ Size ] <= ' ') {
|
|
MessageBuffer[ Size ] = '\0';
|
|
Size -= 1;
|
|
}
|
|
|
|
printf( " '%s'\n", MessageBuffer );
|
|
}
|
|
else {
|
|
printf( "PFMON: Unable to get message text for %08x\n", SupplementalErrorCode );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return;
|
|
}
|