![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Аналог SysErrorMessage для NTSTATUS.
learner © (2006-10-07 22:15:00)Сабж. Просто, SysErrorMessage от функций с результатом типа NTSTATUS
иногда возвращает сообщение, что нет описания ошибки.
Игорь Шевченко (2006-10-09 11:22:00) [1]
{ Информация о загруженных модулях режима ядра }
SYSTEM_MODULE_INFORMATION = packed record
Reserved: array[0..1] of ULONG;
Base: PVOID;
Size: ULONG;
Flags: ULONG;
Index: USHORT;
Unknown: USHORT;
LoadCount: USHORT;
ModuleNameOffset: USHORT;
ImageName: array[0..255] of char; { ANSI }
end;
PSYSTEM_MODULE_INFORMATION = ^SYSTEM_MODULE_INFORMATION;
SYSTEM_MODULE_INFORMATION_ARRAY = array[0..16384] of
SYSTEM_MODULE_INFORMATION;
{ Массив информации для класса SystemModuleInformation }
SYSTEM_MODULES_INFORMATION = packed record
Count: ULONG;
Data: SYSTEM_MODULE_INFORMATION_ARRAY;
end;
PSYSTEM_MODULES_INFORMATION = ^SYSTEM_MODULES_INFORMATION;
learner (2006-10-08 16:12:00) [2]>Игорь Шевченко ©
Пользуясь случаем задам еще пару вопросов по структурам из NtDll.
У меня, вроде, работает корректно со следующими поправками:
TOBJECT_TYPE_INFORMATION
...
PoolType: ULONG; // Исходно: Word
...
Методом научного тыка получила, что при перечислении
всех типов (NtQueryObject с параметром ObjectAllTypesInformation),
если PoolType - Word, то получаем AV
( выравнивание по четырем байтам учитывалось )
SYSTEM_MODULE_INFORMATION
...
ImageName : array[0..255] of char; // Исходно: 256
...
При 256 ImageName - ы возвращаются "со сдвигом"
Или я перемудрила ?
learner (2006-10-08 01:46:00) [3]Спасибо :)
Игорь Шевченко (2006-10-07 23:37:00) [4]Я так делал:
procedure RaiseNtError(Status: NTSTATUS);
begin
raise Exception.CreateFmt('An error occured (NTSTATUS=0x%.8x): "%s"',
[Status, SysErrorMessage(RtlNtStatusToDosError(Status))]);
end;