Funzione RoResolveNamespace (rometadataresolution.h)
Determinare i nomi figlio, tipi e sotto-spazio dei nomi diretti dello spazio dei nomi Windows Runtime specificato, da qualsiasi linguaggio di programmazione supportato dal Windows Runtime.
Sintassi
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
);
Parametri
[in, optional] name
Tipo: const HSTRING
Spazio dei nomi completo per il quale si sta tentando di recuperare elementi figlio diretti. Parametro obbligatorio.
Se questo spazio dei nomi è vuoto o nullptr, la funzione RoResolveNamespace restituisce spazi dei nomi di primo livello. Sia Windows che altri spazi dei nomi di primo livello sono presenti nel grafico del pacchetto.
[in, optional] windowsMetaDataDir
Tipo: const HSTRING
Parametro facoltativo che contiene un percorso della directory SDK per cercare i file di metadati (con estensione winmd).
Se questo parametro non è specificato (vuoto o nullptr), la funzione cerca nella directory dei metadati di Windows predefinita, %windir%\System32\WinMetadata.
[in] packageGraphDirsCount
Tipo: const DWORD
Numero di percorsi nella matrice packageGraphDirs .
[in, optional] packageGraphDirs
Tipo: const HSTRING*
Conteggio dei percorsi del pacchetto nella matrice grafo di dipendenza del pacchetto esplicito. Il conteggio viene ignorato se packageGraphDirs è nullptr.
[out, optional] metaDataFilePathsCount
Tipo: DWORD*
Numero di file di metadati nella matrice metaDataFilePaths .
[out, optional] metaDataFilePaths
Tipo: HSTRING**
Parametro di output facoltativo che contiene la matrice allocata chiamata di percorsi di file assoluti di tutti i file di metadati (.winmd) che potrebbero contenere elementi figlio diretti di nome.
[out, optional] subNamespacesCount
Tipo: DWORD*
Numero di file di metadati nella matrice subNamespaces .
[out, optional] subNamespaces
Tipo: HSTRING**
Parametro di output facoltativo contenente una matrice allocata di chiamate di nomi di elementi figlio diretti dello spazio dei nomi specificato. Questo elenco è un hint di altri sottonamespace e non è necessariamente completo.
Valore restituito
Tipo: HRESULT
Questa funzione può restituire uno di questi valori.
Codice restituito | Descrizione |
---|---|
|
La risoluzione diretta degli spazi dei nomi figlio ha esito positivo, il che significa che è stato trovato almeno un file o un nome di sottonamespace. |
|
Indica uno dei seguenti elementi:
|
|
Indica uno dei seguenti elementi:
|
Commenti
Usare la funzione RoResolveNamespace per esplorare le gerarchie dello spazio dei nomi Windows Runtime.
Esempio
Nell'esempio C++ seguente viene illustrato come usare la funzione RoResolveNamespace per trovare gli spazi dei nomi figlio diretti per un nome di tipo specificato.
#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;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 [app desktop | App UWP] |
Server minimo supportato | Windows Server 2012 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | rometadataresolution.h |
Libreria | WinTypes.lib |
DLL | WinTypes.dll |