ошибка при попытке конвертировать для UNICODE_STRING * в UNICODE_STRING

я пытаюсь написать простой драйвер для получения полного пути к изображению при выполнении процесса
на основе ответа Стива Таунсенда я пишу ниже код для моего ProcessCallback, который вызывает из PsSetCreateProcessNotifyRoutine в DriverEntry моего драйвера:

void ProcessCallback(
    IN HANDLE  hParentId, 
    IN HANDLE  hProcessId, 
    IN BOOLEAN bCreate
    )

{
    if(bCreate)
    {
        PEPROCESS proc = PsGetCurrentProcess();

        WCHAR  strBuffer[(sizeof(UNICODE_STRING) / sizeof(WCHAR)) + 260];
        UNICODE_STRING str;
        str =(UNICODE_STRING*)&strBuffer;

        //initialize
        str.Buffer = &strBuffer[sizeof(UNICODE_STRING) / sizeof(WCHAR)];
        str.Length = 0x0;
        str.MaximumLength = 260 * sizeof(WCHAR);

        //note that the seconds arg (27) is ProcessImageFileName
        ZwQueryInformationProcess(proc, 27, &strBuffer, sizeof(strBuffer), NULL);

        DbgPrint("Start @  %wZ\n", str.Buffer); 

    }
    else
        DbgPrint("PID %i Terminated",hProcessId );

}

но когда я пытаюсь создать свой код, я получаю ошибку ниже для str =(UNICODE_STRING*)&strBuffer;:

ошибка не может преобразовать для UNICODE_STRING * в UNICODE_STRING

что случилось??


person AminM    schedule 19.08.2014    source источник


Ответы (1)


Измените UNICODE_STRING str на UNICODE_STRING *str, это должно работать. Затем передайте str в ZwQueryInformationProcess

person dvasanth    schedule 22.08.2014