- Loaded symbols also for kernel mode dll's.

svn path=/trunk/; revision=12695
This commit is contained in:
Hartmut Birr 2005-01-01 11:49:57 +00:00
parent 2e5a5b050c
commit b95c9c0eba

View file

@ -914,6 +914,8 @@ KdbSymProcessSymbolFile(IN PVOID ModuleLoadBase,
PIMAGE_SYMBOL_INFO SymbolInfo; PIMAGE_SYMBOL_INFO SymbolInfo;
ANSI_STRING AnsiString; ANSI_STRING AnsiString;
PCHAR Extension; PCHAR Extension;
ULONG i;
const char *KnownExtension[] = {".exe", ".sys", ".dll"};
DPRINT("Module %s is a symbol file\n", FileName); DPRINT("Module %s is a symbol file\n", FileName);
@ -928,22 +930,21 @@ KdbSymProcessSymbolFile(IN PVOID ModuleLoadBase,
DPRINT("base: %s (Length %d)\n", TmpBaseName, Length); DPRINT("base: %s (Length %d)\n", TmpBaseName, Length);
strcpy(TmpFileName, TmpBaseName); for (i = 0; i < sizeof(KnownExtension) / sizeof(*KnownExtension); i++)
strcat(TmpFileName, ".sys");
RtlInitAnsiString(&AnsiString, TmpFileName);
RtlAnsiStringToUnicodeString(&ModuleName, &AnsiString, TRUE);
ModuleObject = LdrGetModuleObject(&ModuleName);
RtlFreeUnicodeString(&ModuleName);
if (ModuleObject == NULL)
{ {
strcpy(TmpFileName, TmpBaseName); strcpy(TmpFileName, TmpBaseName);
strcat(TmpFileName, ".exe"); strcat(TmpFileName, KnownExtension[i]);
RtlInitAnsiString(&AnsiString, TmpFileName); RtlInitAnsiString(&AnsiString, TmpFileName);
RtlAnsiStringToUnicodeString(&ModuleName, &AnsiString, TRUE); RtlAnsiStringToUnicodeString(&ModuleName, &AnsiString, TRUE);
ModuleObject = LdrGetModuleObject(&ModuleName); ModuleObject = LdrGetModuleObject(&ModuleName);
RtlFreeUnicodeString(&ModuleName); RtlFreeUnicodeString(&ModuleName);
if (ModuleObject)
{
break;
}
} }
if (ModuleObject != NULL) if (ModuleObject != NULL)
{ {
SymbolInfo = (PIMAGE_SYMBOL_INFO) &ModuleObject->TextSection->SymbolInfo; SymbolInfo = (PIMAGE_SYMBOL_INFO) &ModuleObject->TextSection->SymbolInfo;