Fonction RoResolveNamespace (rometadataresolution.h)
Déterminez les enfants, les types et les sous-espaces de noms directs de l’espace de noms Windows Runtime spécifié, à partir de n’importe quel langage de programmation pris en charge par le Windows Runtime.
Syntaxe
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
);
Paramètres
[in, optional] name
Type : const HSTRING
Espace de noms complet pour lequel nous essayons de récupérer des enfants directs. Il s’agit d’un paramètre obligatoire.
Si cet espace de noms est vide ou nullptr, la fonction RoResolveNamespace retourne des espaces de noms de niveau supérieur. Les espaces de noms Windows et d’autres espaces de noms de niveau supérieur se trouvent dans le graphique de package.
[in, optional] windowsMetaDataDir
Type : const HSTRING
Paramètre facultatif qui contient un chemin d’accès au répertoire du SDK pour rechercher des fichiers de métadonnées (.winmd).
Si ce paramètre n’est pas spécifié (vide ou nullptr), la fonction recherche dans le répertoire de métadonnées Windows par défaut, %windir%\System32\WinMetadata.
[in] packageGraphDirsCount
Type : const DWORD
Nombre de chemins dans le tableau packageGraphDirs .
[in, optional] packageGraphDirs
Type : const HSTRING*
Nombre de chemins d’accès de package dans le tableau graphe des dépendances package explicite. Le nombre est ignoré si packageGraphDirs a la valeur nullptr.
[out, optional] metaDataFilePathsCount
Type : DWORD*
Nombre de fichiers de métadonnées dans le tableau metaDataFilePaths .
[out, optional] metaDataFilePaths
Type : HSTRING**
Paramètre de sortie facultatif qui contient un tableau de chemins d’accès absolus de tous les fichiers de métadonnées (.winmd) qui pourraient éventuellement contenir des enfants de nom directs.
[out, optional] subNamespacesCount
Type : DWORD*
Nombre de fichiers de métadonnées dans le tableau subNamespaces .
[out, optional] subNamespaces
Type : HSTRING**
Paramètre de sortie facultatif qui contient un tableau alloué à l’appel de noms d’enfants directs de l’espace de noms donné. Cette liste est un indice d’autres sous-espaces et n’est pas nécessairement complète.
Valeur retournée
Type : HRESULT
Cette fonction peut retourner l’une de ces valeurs.
Code de retour | Description |
---|---|
|
La résolution directe des enfants de l’espace de noms réussit, ce qui signifie qu’au moins un fichier ou un nom de sous-espace a été trouvé. |
|
Indique l’un des éléments suivants :
|
|
Indique l’un des éléments suivants :
|
Remarques
Utilisez la fonction RoResolveNamespace pour explorer Windows Runtime hiérarchies d’espaces de noms.
Exemples
L’exemple C++ suivant montre comment utiliser la fonction RoResolveNamespace pour rechercher les espaces de noms enfants directs pour un nom de type spécifié.
#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;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8 [applications de bureau | Applications UWP] |
Serveur minimal pris en charge | Windows Server 2012 [applications de bureau | Applications UWP] |
Plateforme cible | Windows |
En-tête | rometadataresolution.h |
Bibliothèque | WinTypes.lib |
DLL | WinTypes.dll |