|
|
/*++
Copyright (c) 1990 Microsoft Corporation
Module Name:
ntsdexts.c
Abstract:
This function contains the default ntsd debugger extensions
Author:
Mark Lucovsky (markl) 09-Apr-1991
Revision History:
--*/
#include "ntsdextp.h"
extern WINDBG_EXTENSION_APIS ExtensionApis; extern HANDLE ExtensionCurrentProcess;
VOID PrintFlagValue( LPCTSTR lpString ) {
BOOL retval= FALSE; PVOID p; TCHAR Argument[100];
sprintf( Argument, "winnt32u!%s", lpString );
p = (PVOID) GetExpression( Argument ); if (!p) { sprintf( Argument, "winnt32a!%s", lpString ); p = (PVOID) GetExpression( Argument ); }
if (p) { move( retval, p ); dprintf( "%s : %s (at address 0x%08x)\n", lpString, retval ? "TRUE" : "FALSE", p ); } else { dprintf( "Couldn't find global flag %s\n" , lpString ); }
}
#define ANSIFORMAT "%s : %s (at address 0x%08x)\n"
#define UNICODEFORMAT "%s : %ws (at address 0x%08x)\n"
#define ANSIARRAYFORMAT "%s[%i] : %s (at address 0x%08x)\n"
#define UNICODEARRAYFORMAT "%s[%i] : %ws (at address 0x%08x)\n"
#define MAX_OPTIONALDIRS 20
#define MAX_SOURCE_COUNT 8
VOID PrintStringBufferValue( LPCTSTR lpString ) {
WCHAR Data[MAX_PATH]; PVOID p; TCHAR Argument[100]; BOOL fUnicode = TRUE;
sprintf( Argument, "winnt32u!%s", lpString );
p = (PVOID) GetExpression( Argument ); if (!p) { sprintf( Argument, "winnt32a!%s", lpString ); p = (PVOID) GetExpression( Argument ); fUnicode = FALSE; }
if (p) { move( Data, p ); dprintf( fUnicode ? UNICODEFORMAT : ANSIFORMAT, lpString, Data, p ); } else { dprintf( "Couldn't find global string buffer %s\n" , lpString ); }
}
VOID PrintStringBufferArrayValue( LPCTSTR lpString, DWORD ElementSize, DWORD ArraySize ) {
WCHAR Data[MAX_PATH]; PVOID p; TCHAR Argument[100]; TCHAR Format[100]; BOOL fUnicode = TRUE; DWORD i;
sprintf( Argument, "winnt32u!%s", lpString );
p = (PVOID) GetExpression( Argument ); if (!p) { sprintf( Argument, "winnt32a!%s", lpString ); p = (PVOID) GetExpression( Argument ); fUnicode = FALSE; }
if (p) { for (i = 0; i< ArraySize; i++) { move( Data, ((LPBYTE)p+(i*ElementSize* (fUnicode) ? sizeof(WCHAR) : sizeof(CHAR))) ); dprintf( fUnicode ? UNICODEARRAYFORMAT : ANSIARRAYFORMAT , lpString, i, Data, p ); } } else { dprintf( "Couldn't find global string buffer %s\n" , lpString ); }
}
DECLARE_API( winntflags ) /*++
Routine Description:
This debugger extension dumps winnt32 flags
Arguments:
Return Value:
--*/ { DWORD ReturnLength; PVOID pst; DWORD i, offset; PVOID stdata,pextradata; //BOOL val;
INIT_API();
dprintf("\t\t****winnt32 global flags****\n"); PrintFlagValue( "Server" ); PrintFlagValue( "Upgrade" ); PrintFlagValue( "UnattendedOperation" ); dprintf("\n"); PrintFlagValue( "CheckUpgradeOnly" ); PrintFlagValue( "Aborted" ); PrintFlagValue( "Cancelled" ); PrintFlagValue( "CancelPending" ); dprintf("\n");
PrintFlagValue( "ChoosePartition" ); PrintFlagValue( "Floppyless" ); PrintFlagValue( "ForceNTFSConversion" ); PrintFlagValue( "NTFSConversionChanged" ); PrintFlagValue( "HideWinDir" ); PrintFlagValue( "MakeBootMedia" ); PrintFlagValue( "MakeLocalSource" ); PrintFlagValue( "OemPreinstall" ); PrintFlagValue( "RunFromCD" ); dprintf("\n");
PrintFlagValue( "BlockOnNotEnoughSpace" ); PrintFlagValue( "SkipLocaleCheck" ); PrintFlagValue( "AccessibleKeyboard" ); PrintFlagValue( "AccessibleMagnifier" ); PrintFlagValue( "AccessibleReader" ); PrintFlagValue( "AccessibleSetup" ); PrintFlagValue( "AccessibleVoice" ); PrintFlagValue( "AutomaticallyShutDown" ); PrintFlagValue( "AutoSkipMissingFiles" ); dprintf("\n"); PrintFlagValue( "GlobalResult" ); dprintf("\n");
}
DECLARE_API( winntstr ) /*++
Routine Description:
This debugger extension dumps winnt32 string global info
Arguments:
Return Value:
--*/ { DWORD ReturnLength; PVOID pst; DWORD i, offset; PVOID stdata,pextradata; //BOOL val;
INIT_API();
dprintf("\t\t****winnt32 global strings****\n"); PrintStringBufferValue( "AccessibleScriptFile" ); PrintStringBufferValue( "AlternateSourcePath" ); PrintStringBufferValue( "FirstFloppyDriveLetter" ); PrintStringBufferValue( "ForcedSystemPartition" ); PrintStringBufferValue( "InfName" ); PrintStringBufferValue( "InstallDir" ); PrintStringBufferValue( "LocalBackupDirectory" ); PrintStringBufferValue( "LocalBootDirectory" ); PrintStringBufferValue( "LocalSourceDirectory" ); PrintStringBufferValue( "LocalSourceDrive" ); PrintStringBufferValue( "LocalSourceWithPlatform" ); PrintStringBufferValue( "ProductId" ); PrintStringBufferValue( "SystemPartitionDriveLetter" ); PrintStringBufferValue( "SystemPartitionDriveLetters" ); PrintStringBufferValue( "UserSpecifiedLocalSourceDrive" ); PrintStringBufferArrayValue( "OptionalDirectories", MAX_PATH, MAX_OPTIONALDIRS ); PrintStringBufferArrayValue( "SourcePaths", MAX_PATH, MAX_SOURCE_COUNT ); dprintf("\n");
}
|