代码之家  ›  专栏  ›  技术社区  ›  AminM LordDoskias

尝试将UNICODE_STRING*转换为UNICODE_STING时出错

  •  0
  • AminM LordDoskias  · 技术社区  · 11 年前

    我正在尝试编写简单的驱动程序,以便在进程执行时获取图像的完整路径
    基于 Steve Townsend Answer 我为我的 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_STING

    怎么了??

    1 回复  |  直到 8 年前
        1
  •  0
  •   dvasanth    11 年前

    将UNICODE_STRING str更改为UNICODE_STLING*str,这将正常工作。然后将str传递给ZwQueryInformationProcess