Здравствуйте, Alexander G, Вы писали:
AG>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте
А>>Проблема следующая. Когда вызываю функцию, то возвращает во всех полях SYSTEM_PROCESS_INFORMATION число 3131961357.
А>>Причем параметр type приходит правильный, то есть 5. В чем может быть проблема? Код ниже:
AG>ntRet необходимо проверять, по его значению судить об ошибке.
AG>В type ничего не приходит, это ты его заполняешь.
AG>3131961357 это 0xBAADF00D, см здесь.
AG>Параметр SystemInformation должен указывать на структуру SYSTEM_PROCESS_INFORMATION, которую эта ф-ция будет заполнять, а SystemInformationLength содержать её размер.
nRet = 0, SystemInformationLenght = 32768, PVOID SystemInformation 0x00834678 (ессесно разный каждый раз))). Код ещё раз:
NTSTATUS NTAPI Hook_NtQuerySystemInformation(
DWORD type, // тип информации
PVOID SystemInformation, // указатель на буфер
ULONG SystemInformationLength, // размер буфера в байтах
PULONG ReturnLength // указатель на 32-битное число
)
{
SYSTEM_PROCESS_INFORMATION *pinfo, *pinfo_last;
NTSTATUS ntRet;
ntRet = /NtQuerySystemInformation((SYSTEM_INFORMATION_CLASS)(type), SystemInformation, SystemInformationLength, ReturnLength);
// если получается информация о процессах
if(type == 5)
{
if(SystemInformationLength > 20000)
{
pinfo = (SYSTEM_PROCESS_INFORMATION*)SystemInformation;
for(;;)
{
...код...
}
}
}
return ERROR_SUCCESS;
}
в type приходит значение из системы. Это хук на функцию.