gpt4 book ai didi

c++ - 将 WIN32_FIND_DATA 转换为 LPVOID

转载 作者:行者123 更新时间:2023-11-30 02:06:57 25 4
gpt4 key购买 nike

如何将 WIN32_FIND_DATA 转换为 LPVOID?

我正在尝试 Hook 一个函数,但我无法将 WIN32_FIND_DATA 转换为 LPVOID

这是我的功能:

/* New FindFirstFileW Function */
HANDLE WINAPI newFindFirstFileExW(__in LPCTSTR lpFileName, __in FINDEX_INFO_LEVELS fInfoLevelId, __out LPVOID lpFindFileData, __in FINDEX_SEARCH_OPS fSearchOp,
__reserved LPVOID lpSearchFilter, __in DWORD dwAdditionalFlags)
{
HANDLE hFind;
WIN32_FIND_DATA findData;
BOOL ret;
hFind = FindFirstFileExW(lpFileName, fInfoLevelId, &findData, fSearchOp, lpSearchFilter, dwAdditionalFlags);

if (hFind == INVALID_HANDLE_VALUE)
return hFind;

// if first file name starts with HIDE_NAME_W skip the file
if (wcsstr(findData.cFileName, HIDE_NAME_W) != 0)
{
ret = true;
do {
ret = FindNextFileW(hFind, &findData);
} while (!ret && wcsstr(findData.cFileName, HIDE_NAME_W) != 0);

if (!ret)
{
SetLastError(ERROR_FILE_NOT_FOUND);
return INVALID_HANDLE_VALUE;
}
}

lpFindFileData = reinterpret_cast<LPVOID>(findData);
return hFind;
}

编辑:谢谢大家的帮助,现在可以正常工作了,我的问题是我忘了更改被调用的函数..我 Hook 到 FindFirstFileExW 一些其他函数

最佳答案

您必须将 WIN32_FIND_DATA 复制到 lpFindFileData 的内存中。最后一次返回之前的行应该如下所示:

*reinterpret_cast<WIN32_FIND_DATA*>(lpFindFileData) = findData;

关于c++ - 将 WIN32_FIND_DATA 转换为 LPVOID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8359752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com