Как я могу использовать функцию PsLookupProcessByProcessId() с идентификатором процесса (DWORD pid), который я получил из пользовательского пространства?PsLookupProcessByProcessId с DWORD pid? Для параметра 1 требуется РУЧКА?
Я закодировал приложение C++ для пользовательского пространства, которое получает идентификатор процесса другого приложения (например, calc.exe) и используя DeviceIoControl. Я могу успешно отправить драйверу pid через созданную мной структуру.
DbgPrint("PID received : %i", pInp->pid);
Распечатывает правильный pid для процесса. Но при выполнении:
PsLookupProcessByProcessId(pInp->pid, eProcess);
я получаю предупреждение:
C4022: 'PsLookupProcessByProcessId': указатель рассогласования для фактического параметра 1
Предупреждение получает рассматривается как ошибка и против не позволю мне скомпилировать. Я просмотрел документацию для «PsLookupProcessByProcessId», и он говорит, что для первого параметра требуется «дескриптор». Итак, в таком случае, как мне получить получение дескриптора с помощью DWORD pid, отправленного из приложения для пользовательского пространства?
'OpenProcess()'? –
Вам нужно объявить 'pInp-> pid' типа' HANDLE'. Второй параметр также выглядит неверным. Вам обязательно нужно передать адрес вашей переменной «PEPROCESS». –
@ ThePara - функция пользовательского режима. Это вопрос в режиме ядра. –