Método INamespaceWalk::GetIDArrayResult (shobjidl_core.h)
Obtém uma lista de objetos encontrados durante uma caminhada de namespace iniciada por INamespaceWalk::Walk.
Sintaxe
HRESULT GetIDArrayResult(
[out] UINT *pcItems,
[out] PIDLIST_ABSOLUTE **prgpidl
);
Parâmetros
[out] pcItems
Tipo: UINT*
O número de itens armazenados em pppidl
[out] prgpidl
Tipo: LPITEMIDLIST**
O endereço de um ponteiro para uma matriz de PIDLs que representam os itens encontrados durante a caminhada do namespace.
Valor retornado
Tipo: HRESULT
Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.
Comentários
Para usar INamespaceWalk::GetIDArrayResult, NSWF_DONT_ACCUMULATE_RESULT não pode ser especificado na chamada para INamespaceWalk::Walk.
É responsabilidade do aplicativo de chamada liberar essa matriz. Chame CoTaskMemFree para cada PIDL, bem como uma vez para a própria matriz.
Exemplos
O exemplo a seguir cria a instância INamespaceWalk , inicia a caminhada na área de trabalho, percorre apenas a pasta da área de trabalho e seus filhos imediatos, recupera os PIDLs recuperados na caminhada e libera sua matriz.
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;
}
Requisitos
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | shobjidl_core.h (inclua Shobjidl.h) |
Biblioteca | Shell32.lib |
DLL | Shell32.dll (versão 6.0 ou posterior) |