Что - то плохо соображаю помогите разобраться, ZwQueryInformationThread все время возвращает STATUS_INFO_LENGTH_MISMATCH ( и это при размере буфера в 1мб...) .. Код (Text): for (DWORD i = 0; i<MAX_COUNT_THREAD; ++i) if ( Threads[i] ) // Threads массив id для потоков { PTEB pTeb; HANDLE htmp; ULONG size; NTSTATUS nt; if ( ! (htmp = OpenThread(THREAD_QUERY_INFORMATION | THREAD_SUSPEND_RESUME,FALSE,Threads[i])) ) continue; size = 1024*1024; pTeb = (PTEB)MemAlloc(size); if ( NT_SUCCESS(ZwQueryInformationThread(htmp,ThreadBasicInformation,pTeb,size,&size)) ) { PCHAR StackBase =(PCHAR) pTeb->Tib.StackBase; PCHAR StackLimit=(PCHAR) pTeb->Tib.StackLimit; }; if (pTeb) MemFree(pTeb); CloseHandle(htmp); };
Наверное, ZwQueryInformationThread хочет чтобы размер буфера точно соответствовал типу затребованной информации. Либо укажи sizeof(THREAD_BASIC_INFORMATION), либо вызывай два раза, первый - для определения размера буфера, второй - для получения информации.