c++ - 使用 GetProcessImageFileNameW 时出现未初始化的 LPWSTR 错误
问题描述
我正在尝试在 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
参数,文档中说:
lpImageFileName
指向接收可执行文件完整路径的缓冲区的指针。
这意味着GetProcessImageFileNameW()
需要一个指向字符数组的指针wchar_t
,然后它将根据需要填充。
数组衰减为指向其第一个元素的指针。因此,您正在通过 a预期的wchar_t**
地方。wchar_t*
我很惊讶您没有收到有关类型不匹配的编译器错误,而不是有关未初始化内存的错误。
试试这个:
WCHAR path[MAX_PATH] = {};
if (!GetProcessImageFileNameW(hProcess, path, MAX_PATH))
{
DbgPrint("Can't get the process image name");
return;
}
推荐阅读
- java - Java 同步块和显式锁的可见性保证
- javascript - 我得到了触发 jQuery datepicker 的日历图标,但它链接到了错误的输入
- mysql - MySQL Sequelize 用一个 findAll 搜索两个表
- amazon-web-services - 使用 Lambda 或 Kinesis Firehose 将 CloudWatch Logs 传输到 S3?
- optimization - Optim.jl 的错误结果
- sql - SQL - 从不同的表中按月和年日期运行总计
- python - 在 Turtle 中绘制分形正方形图案
- reporting-services - SSRS LookupSet - Join() 有效,但 Count() 无效
- c++ - 如何在 Clion 上生成 C++ 可执行文件(使用 Ubuntu)
- duplicates - Power BI topn 函数:topn 函数由于重复而返回多于 n 行的问题