ListView_FindItem 总是返回 -1解决方法

ListView_FindItem 总是返回 -1
我想通过 发送 ListView_FindItem 这个消息 查找 指定 桌面图标名字的 索引,
总是 返回的 -1, 那位 能解释下
C/C++ code
// hprocess 桌面进程的句柄
// hWndListView 桌面 listview 的 句柄, 
void FindItemParam(IN HANDLE hProcess, IN HWND hWndListView, IN INT iItem)
{
    DWORD dwDataLen = 0;
    DWORD dwWritten = 0;

    LVFINDINFO* lpRemoteItemInfo = NULL;
    // 
    try
    {
        // 初始化
        LVFINDINFO  lviData = {0};
        dwDataLen = sizeof(LVFINDINFO);

        TCHAR sz[MAX_PATH] ={0};
        strcpy(sz,"xxx");// 这个是 桌面图标的 名称
        lviData.flags = LVFI_STRING;
        lviData.psz = sz;

        // 远程分配内存
        lpRemoteItemInfo = (LVFINDINFO*)VirtualAllocEx(hProcess, NULL, dwDataLen, MEM_COMMIT, PAGE_READWRITE);
        DWORD dwWritten = 0;
        if (!::WriteProcessMemory(hProcess, lpRemoteItemInfo, &lviData, dwDataLen, & dwWritten))
        {
            throw((LONG)__LINE__);
        }
        int iret =ListView_FindItem(hWndListView, -1, lpRemoteItemInfo);// 这里总是返回 -1
        if (iret == -1)
        {
            throw((LONG)__LINE__);
        }
        // 获取
        if (!::ReadProcessMemory(hProcess, lpRemoteItemInfo, &lviData, dwDataLen, &dwWritten))
        {
            throw((LONG)__LINE__);
        }
    }
    catch (LONG& lLine)
    {
    }
    catch(...)
    {
    }
    // 
    if (lpRemoteItemInfo != NULL)
    {
        int iRet = VirtualFreeEx(hProcess, lpRemoteItemInfo, 0, MEM_RELEASE);
        lpRemoteItemInfo = NULL;
    }
}





------解决方案--------------------
C/C++ code
TCHAR sz[MAX_PATH] ={0};