INamespaceWalk::GetIDArrayResult, méthode (shobjidl_core.h)
Obtient la liste des objets trouvés lors d’une procédure d’espace de noms initiée par INamespaceWalk::Walk.
Syntaxe
HRESULT GetIDArrayResult(
[out] UINT *pcItems,
[out] PIDLIST_ABSOLUTE **prgpidl
);
Paramètres
[out] pcItems
Type : UINT*
Nombre d’éléments stockés dans pppidl
[out] prgpidl
Type : LPITEMIDLIST**
Adresse d’un pointeur vers un tableau de LISTES DE DLL représentant les éléments trouvés pendant la procédure d’espace de noms.
Valeur retournée
Type : HRESULT
Si cette méthode réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.
Remarques
Pour utiliser INamespaceWalk::GetIDArrayResult, NSWF_DONT_ACCUMULATE_RESULT ne peut pas être spécifié dans l’appel à INamespaceWalk::Walk.
Il incombe à l’application appelante de libérer ce tableau. Appelez CoTaskMemFree pour chaque PIDL, ainsi qu’une fois pour le tableau lui-même.
Exemples
L’exemple suivant crée le instance INamespaceWalk, commence la marche à pied sur le bureau, marche uniquement sur le dossier du bureau et ses enfants immédiats, récupère les FICHIERS PIDL récupérés dans la marche et libère leur tableau.
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;
}
Configuration requise
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | shobjidl_core.h (inclure Shobjidl.h) |
Bibliothèque | Shell32.lib |
DLL | Shell32.dll (version 6.0 ou ultérieure) |