Metode INamespaceWalk::GetIDArrayResult (shobjidl_core.h)
Mendapatkan daftar objek yang ditemukan selama panduan namespace yang dimulai oleh INamespaceWalk::Walk.
Sintaks
HRESULT GetIDArrayResult(
[out] UINT *pcItems,
[out] PIDLIST_ABSOLUTE **prgpidl
);
Parameter
[out] pcItems
Jenis: UINT*
Jumlah item yang disimpan dalam pppidl
[out] prgpidl
Jenis: LPITEMIDLIST**
Alamat penunjuk ke array PIDL yang mewakili item yang ditemukan selama panduan namespace.
Mengembalikan nilai
Jenis: HRESULT
Jika metode ini berhasil, metode ini mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.
Keterangan
Untuk menggunakan INamespaceWalk::GetIDArrayResult, NSWF_DONT_ACCUMULATE_RESULT tidak dapat ditentukan dalam panggilan ke INamespaceWalk::Walk.
Adalah tanggung jawab aplikasi panggilan untuk membebaskan array ini. Panggil CoTaskMemFree untuk setiap PIDL serta sekali untuk array itu sendiri.
Contoh
Contoh berikut membuat instans INamespaceWalk , memulai berjalan di desktop, hanya berjalan di folder desktop dan anak-anak langsungnya, mengambil PIDL yang diambil dalam perjalanan, dan membebaskan array mereka.
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;
}
Persyaratan
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | shobjidl_core.h (termasuk Shobjidl.h) |
Pustaka | Shell32.lib |
DLL | Shell32.dll (versi 6.0 atau yang lebih baru) |
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk