Всем доброго времени суток. Нужно по EPROCESS получить хендл процесса. Можно, конечно, вытащить ProcessId по смещению из этого самого EPROCESS, но, во-первых, под каждой ОСой оно своё, а во-вторых, нет гарантии, что со следующим сервис-паком это всё не отвалится. Попытался сделать так: ObInsertObject(pProcess,0,PROCESS_ALL_ACCESS,1,NULL,&hProcess); В результате выпал в БСОД где-то в районе работы с дескрипторами безопасности. Хотелось бы найти более-менее независящее от версий ОСы и сервис-паков решение. Спасибо.
Ну, во-первыx, определись чего тебе нужно: ProcessId или Handle? Насколько я понимаю, речь идет о коде в ядре? Тогда поступаешь примерно так: ObOpenObjectByPointer(pEPROCESS,0,0,1,0,0,&Handle) - получаешь Handle. ZwQueryInformationProcess(Handle,ProcessBasicInformation,&InfoBuff,20h ,&RetLen) - получаешь PiD и еще кучу всего интересного...