INamespaceWalk::GetIDArrayResult 方法 (shobjidl_core.h)

获取在 由 INamespaceWalk::Walk 启动的命名空间演练期间找到的对象列表。

语法

HRESULT GetIDArrayResult(
  [out] UINT             *pcItems,
  [out] PIDLIST_ABSOLUTE **prgpidl
);

参数

[out] pcItems

类型: UINT*

存储在 pppidl 中的项数

[out] prgpidl

类型: LPITEMIDLIST**

指向 PIDL 数组的指针的地址,该数组表示在命名空间遍查期间找到的项。

返回值

类型: HRESULT

如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

若要使用 INamespaceWalk::GetIDArrayResult,无法在调用 INamespaceWalk::Walk 中指定NSWF_DONT_ACCUMULATE_RESULT

调用应用程序负责释放此数组。 为每个 PIDL 调用 CoTaskMemFree ,并为数组本身调用一次。

示例

以下示例创建 INamespaceWalk 实例,在桌面上开始演练,仅遍视桌面文件夹及其直属子级,检索在演练中检索到的 PIDL,并释放其数组。

void NamespaceWalk_Example()
{
    // Note that error checking has been omitted for clarity.
    
    INamespaceWalk *pnsw = NULL;
    IShellFolder *psfDesktop = NULL;

    // Get a pointer to the desktop to use as our root node
    hr = SHGetDesktopFolder(&psfDesktop);

    // Create the INamespaceWalk instance
    hr = CoCreateInstance(CLSID_NamespaceWalker, 
                          NULL, 
                          CLSCTX_INPROC,
                          IID_INamespaceWalk,
                          (void **)&pnsw);

    // Walk the desktop folder and one level of subfolders    
    hr = pnsw->Walk(psfDesktop, NSWF_NONE_IMPLIES_ALL, 1, NULL);

    UINT cItems;
    PIDLIST_ABSOLUTE *ppidls;
    
    // Retrieve the array of PIDLs gathered in the walk
    hr = pnsw->GetIDArrayResult(&cItems, &ppidls);

    // Perform some action using the PIDLs

    // The calling function is responsible for freeing the PIDL array
    FreeIDListArrayFull(ppidls, cItems);
    
    return;
}

void FreeIDListArrayFull(PIDLIST_ABSOLUTE *ppidls, UINT cItems)
{ 
    // Free the array elements
    for (UINT i = 0; i < cItems; i++) 
    { 
        CoTaskMemFree(ppidls[i]); 
    } 
    
    // Free the array itself
    CoTaskMemFree(ppidls);
    
    return; 
}

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 shobjidl_core.h (包括 Shobjidl.h)
Library Shell32.lib
DLL Shell32.dll (6.0 或更高版本)