Função RoResolveNamespace (rometadataresolution.h)
Determine os filhos diretos, tipos e sub-namespaces do namespace Windows Runtime especificado, de qualquer linguagem de programação compatível com o Windows Runtime.
Sintaxe
HRESULT RoResolveNamespace(
[in, optional] const HSTRING name,
[in, optional] const HSTRING windowsMetaDataDir,
[in] const DWORD packageGraphDirsCount,
[in, optional] const HSTRING *packageGraphDirs,
[out, optional] DWORD *metaDataFilePathsCount,
[out, optional] HSTRING **metaDataFilePaths,
[out, optional] DWORD *subNamespacesCount,
[out, optional] HSTRING **subNamespaces
);
Parâmetros
[in, optional] name
Tipo: const HSTRING
Namespace completo para o qual estamos tentando recuperar filhos diretos. Esse é um parâmetro necessário.
Se esse namespace estiver vazio ou nullptr, a função RoResolveNamespace retornará namespaces de nível superior. O Windows e outros namespaces de nível superior estão no grafo do pacote.
[in, optional] windowsMetaDataDir
Tipo: const HSTRING
Parâmetro opcional que contém um caminho para o diretório do SDK para pesquisar arquivos de metadados (.winmd).
Se esse parâmetro não for especificado (vazio ou nullptr), a função pesquisará no diretório de metadados padrão do Windows, %windir%\System32\WinMetadata.
[in] packageGraphDirsCount
Tipo: const DWORD
Contagem de caminhos na matriz packageGraphDirs .
[in, optional] packageGraphDirs
Tipo: const HSTRING*
Contagem de caminhos de pacote no pacote explícito grafo de dependência matriz. A contagem será ignorada se packageGraphDirs for nullptr.
[out, optional] metaDataFilePathsCount
Tipo: DWORD*
Contagem de arquivos de metadados na matriz metaDataFilePaths .
[out, optional] metaDataFilePaths
Tipo: HSTRING**
Parâmetro de saída opcional que contém a matriz alocada por callee de caminhos de arquivo absolutos de todos os arquivos de metadados (.winmd) que podem conter filhos diretos de nome.
[out, optional] subNamespacesCount
Tipo: DWORD*
Contagem de arquivos de metadados na matriz subNamespaces .
[out, optional] subNamespaces
Tipo: HSTRING**
Parâmetro de saída opcional que contém uma matriz alocada por callee de nomes de filhos diretos do namespace fornecido. Essa lista é uma dica de outros subnamespaces e não está necessariamente concluída.
Retornar valor
Tipo: HRESULT
Essa função pode retornar um desses valores.
Código de retorno | Descrição |
---|---|
|
A resolução de filhos diretos do namespace é bem-sucedida, o que significa que pelo menos um arquivo ou um nome de subnamespace foi encontrado. |
|
Indica um dos seguintes:
|
|
Indica um dos seguintes:
|
Comentários
Use a função RoResolveNamespace para explorar Windows Runtime hierarquias de namespace.
Exemplos
O exemplo C++ a seguir mostra como usar a função RoResolveNamespace para localizar os namespaces filho diretos para um nome de tipo especificado.
#include <windows.h>
#include <stdio.h>
#include <WinRTString.h>
#include <TypeResolution.h>
#include <atlbase.h>
HRESULT PrintDirectChildrenSubNamespacesAndTypesPaths(PCWSTR pszName);
int ShowUsage()
{
wprintf(L"Usage: RoResolveNamespaceSample TypeName\n");
return -1;
}
int __cdecl wmain(int argc, WCHAR **argv)
{
if (argc != 2)
{
return ShowUsage();
}
HRESULT hr = PrintDirectChildrenSubNamespacesAndTypesPaths(argv[1]);
if (SUCCEEDED(hr))
{
return 0;
}
else
{
return -1;
}
}
HRESULT PrintDirectChildrenSubNamespacesAndTypesPaths(PCWSTR pszName)
{
HRESULT hr;
HSTRING hstrName = nullptr;
DWORD cRetrievedSubNamespaces = 0;
HSTRING *phstrRetrievedSubNamespaces = nullptr;
DWORD cRetrievedMetaDataFilePaths = 0;
HSTRING *phstrRetrievedMetaDataFiles = nullptr;
hr = WindowsCreateString(
pszName,
static_cast<UINT32>(wcslen(pszName)),
&hstrName);
if (SUCCEEDED(hr))
{
hr = RoResolveNamespace(
hstrName,
nullptr,
0,
nullptr,
&cRetrievedMetaDataFilePaths,
&phstrRetrievedMetaDataFiles,
&cRetrievedSubNamespaces,
&phstrRetrievedSubNamespaces);
}
if (SUCCEEDED(hr))
{
if (cRetrievedSubNamespaces != 0)
{
wprintf(L"Direct-children subnamespaces of %s are:\n", pszName);
for (DWORD i = 0; i < cRetrievedSubNamespaces; i++)
{
wprintf(L"Subnamespace %d: %s\n", i, WindowsGetStringRawBuffer(phstrRetrievedSubNamespaces[i], nullptr));
}
}
if (cRetrievedMetaDataFilePaths != 0)
{
wprintf(L"Potential direct-children types of %s could be found in:\n", pszName);
for (DWORD i = 0; i < cRetrievedMetaDataFilePaths; i++)
{
wprintf(L"Metadata file path %d: %s\n", i, WindowsGetStringRawBuffer(phstrRetrievedMetaDataFiles[i], nullptr));
}
}
}
else if (hr == RO_E_METADATA_NAME_NOT_FOUND)
{
wprintf(L"Name %s was not found!\n", pszName);
}
else
{
wprintf(L"Error %x occurred while trying to resolve %s!\n", hr, pszName);
}
// Clean up resources.
if (hstrName != nullptr)
{
WindowsDeleteString(hstrName);
}
for (DWORD i = 0; i < cRetrievedSubNamespaces; i++)
{
WindowsDeleteString(phstrRetrievedSubNamespaces[i]);
}
CoTaskMemFree(phstrRetrievedSubNamespaces);
for (DWORD i = 0; i < cRetrievedMetaDataFilePaths; i++)
{
WindowsDeleteString(phstrRetrievedMetaDataFiles[i]);
}
CoTaskMemFree(phstrRetrievedMetaDataFiles);
return hr;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2012 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | rometadataresolution.h |
Biblioteca | WinTypes.lib |
DLL | WinTypes.dll |