共用方式為


INamespaceWalk::GetIDArrayResult 方法 (shobjidl_core.h)

取得 INamespaceWalk::Walk起始之命名空間逐步解說期間找到的物件清單。

語法

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

參數

[out] pcItems

類型: UINT*

儲存在pppidl中的專案數

[out] prgpidl

類型: LPITEMIDLIST**

指標陣列的位址,代表命名空間逐步解說期間找到的專案。

傳回值

類型: HRESULT

如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。

備註

若要使用 INamespaceWalk::GetIDArrayResultNSWF_DONT_ACCUMULATE_RESULT 無法在 INamespaceWalk::Walk的呼叫中指定。

呼叫應用程式負責釋放此陣列。 針對每個 PIDL 呼叫 CoTaskMemFree ,以及針對陣列本身呼叫一次。

範例

下列範例會建立 INamespaceWalk 實例、在桌面上開始執行逐步解說、僅逐步解說桌面資料夾及其立即子系、擷取在逐步解說中擷取的 PIDR,並釋放其陣列。

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)
程式庫 Shell32.lib
Dll Shell32.dll (6.0 版或更新版本)