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) |
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour