如何将WIN32_FIND_DATA转换为LPVOID?
我正在尝试连接一个函数,但我无法将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;
}编辑:谢谢大家的帮助,现在我的问题是我忘了更改被调用的函数。我在连接FindFirstFileExW的其他函数
发布于 2011-12-02 17:08:33
您必须将WIN32_FIND_DATA复制到lpFindFileData的内存中。最后一次返回之前的行应该如下所示:
*reinterpret_cast<WIN32_FIND_DATA*>(lpFindFileData) = findData;发布于 2011-12-02 17:02:49
lpFindFileData = reinterpret_cast<LPVOID>(findData);
findData不是这个上下文中的指针,它是一个实际的WIN32_FIND_DATA。
取而代之的是这样做:
lpFindFileData = reinterpret_cast<LPVOID>(&findData);
https://stackoverflow.com/questions/8359752
复制相似问题