热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用GetProcessImageFileNameW时出现未初始化的LPWSTR错误

我正在尝试在Windows内核驱动程序中使用GetProcessImageFileNameW。LPWSTRpath[MAX_PATH];

我正在尝试在 Windows 内核驱动程序中使用 GetProcessImageFileNameW。

LPWSTR path[MAX_PATH];
if(GetProcessImageFileNameW(hProcess, path, MAX_PATH) == 0)
{
DbgPrint("Can't get the process image name");
return;
}

但是当我构建时出现编译器错误“使用未初始化的内存‘路径’”

我该如何解决?

回答

LPWSTR是单个wchar_t*指针。因此,LPWSTR path[MAX_PATH];创造的数组wchar_t*指针。

但是,GetProcessImageFileNameW()需要一个LPWSTR参数,其中文档说:

图像文件名

指向接收可执行文件完整路径的缓冲区指针

这意味着需要GetProcessImageFileNameW()一个指向wchar_t字符数组的指针,然后它会根据需要填充。

数组衰减为指向其第一个元素的指针。所以,你传递一个wchar_t**其中wchar_t*的预期。我很惊讶您没有收到关于类型不匹配的编译器错误,而不是关于未初始化内存的错误。

试试这个:

WCHAR path[MAX_PATH] = {};
if (!GetProcessImageFileNameW(hProcess, path, MAX_PATH))
{
DbgPrint("Can't get the process image name");
return;
}



  • “*它窃取不起作用*” - 究竟是什么方式?更加详细一些。





推荐阅读
author-avatar
try
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有