Función RoResolveNamespace (rometadataresolution.h)
Determine los elementos secundarios directos, los tipos y los subespacios de nombres del espacio de nombres Windows Runtime especificado, desde cualquier lenguaje de programación compatible con el Windows Runtime.
Sintaxis
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
Espacio de nombres completo para el que estamos intentando recuperar elementos secundarios directos. Es un parámetro obligatorio.
Si este espacio de nombres está vacío o nullptr, la función RoResolveNamespace devuelve espacios de nombres de nivel superior. Tanto Windows como otros espacios de nombres de nivel superior están en el gráfico de paquetes.
[in, optional] windowsMetaDataDir
Tipo: const HSTRING
Parámetro opcional que contiene una ruta de acceso al directorio del SDK para buscar archivos de metadatos (.winmd).
Si no se especifica este parámetro (vacío o nullptr), la función busca en el directorio de metadatos predeterminado de Windows, %windir%\System32\WinMetadata.
[in] packageGraphDirsCount
Tipo: const DWORD
Recuento de rutas de acceso en la matriz packageGraphDirs .
[in, optional] packageGraphDirs
Tipo: const HSTRING*
Recuento de rutas de acceso de paquete en la matriz de gráficos de dependencias de paquetes explícita. El recuento se omite si packageGraphDirs es nullptr.
[out, optional] metaDataFilePathsCount
Tipo: DWORD*
Recuento de archivos de metadatos en la matriz metaDataFilePaths .
[out, optional] metaDataFilePaths
Tipo: HSTRING**
Parámetro de salida opcional que contiene la matriz asignada por el destinatario de rutas de acceso de archivo absolutas de todos los archivos de metadatos (.winmd) que podrían contener elementos secundarios directos del nombre.
[out, optional] subNamespacesCount
Tipo: DWORD*
Recuento de archivos de metadatos en la matriz subNamespaces .
[out, optional] subNamespaces
Tipo: HSTRING**
Parámetro de salida opcional que contiene una matriz asignada por el destinatario de nombres de elementos secundarios directos del espacio de nombres especificado. Esta lista es una sugerencia de otros subespacios de nombres y no es necesariamente completa.
Valor devuelto
Tipo: HRESULT
Esta función puede devolver uno de estos valores.
Código devuelto | Descripción |
---|---|
|
La resolución de elementos secundarios directos del espacio de nombres se realiza correctamente, lo que significa que se encontró al menos un archivo o un nombre de subnombres. |
|
Indica una de las siguientes opciones:
|
|
Indica una de las siguientes opciones:
|
Comentarios
Use la función RoResolveNamespace para explorar Windows Runtime jerarquías de espacios de nombres.
Ejemplos
En el siguiente ejemplo de C++ se muestra cómo usar la función RoResolveNamespace para buscar los espacios de nombres secundarios directos para un nombre 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 | Value |
---|---|
Cliente mínimo compatible | Windows 8 [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2012 [aplicaciones de escritorio | Aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | rometadataresolution.h |
Library | WinTypes.lib |
Archivo DLL | WinTypes.dll |