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::GetIDArrayResult, NSWF_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 版或更新版本) |