День добрый.Замучила такая вот проблемка. Есть кусок кода вызываемый из DriverEntry:
OBJECT_ATTRIBUTES oa;
InitializeObjectAttributes(&oa, NULL, OBJ_KERNEL_HANDLE,
NULL, NULL);
HANDLE hThread = NULL;
st = PsCreateSystemThread(&hThread,
THREAD_ALL_ACCESS,
&oa,
(HANDLE)-1,
NULL,
ThreadRoutine,
(PVOID)pex);
DbgPrint("System thread created: %x!",hThread);
if(st==STATUS_SUCCESS)
{
DbgPrint("Referense thread object returns: %d",
ObReferenceObjectByHandle(hThread, THREAD_ALL_ACCESS, NULL,
KernelMode, (PVOID*) &pex->Thread, NULL));
ZwClose(hThread);
}
Тут я создаю системную нить и пытаюсь по хендлу получить указатель на объет нити, но ObReferenceObjectByHandle возвращает STATUS_SUCCESS, а pex->Thread устанавливает в 0. Перерыл по этому поводу кучу статей и прочей инфы, но ничего подобного нигде не видел. Помогоите разобраться пожалуйста, а то запарился в конец уже..
ЗЫ. Винда WinXp SP2, стоит касперский и файервол - мож они гадят?