RoResolveNamespace-Funktion (rometadataresolution.h)
Bestimmen Sie die direkten untergeordneten Elemente, Typen und Unternamespaces des angegebenen Windows-Runtime-Namespaces aus jeder Programmiersprache, die vom Windows-Runtime unterstützt wird.
Syntax
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
);
Parameter
[in, optional] name
Typ: const HSTRING
Vollständiger Namespace, für den wir versuchen, direkte untergeordnete Elemente abzurufen. Dies ist ein erforderlicher Parameter.
Wenn dieser Namespace leer oder nullptr ist, gibt die RoResolveNamespace-Funktion Namespaces der obersten Ebene zurück. Sowohl Windows als auch andere Namespaces der obersten Ebene befinden sich im Paketdiagramm.
[in, optional] windowsMetaDataDir
Typ: const HSTRING
Optionaler Parameter, der einen Pfad zum SDK-Verzeichnis zum Suchen nach Metadatendateien (.winmd) enthält.
Wenn dieser Parameter nicht angegeben ist (entweder leer oder nullptr), sucht die Funktion im Windows-Standardmetadatenverzeichnis %windir%\System32\WinMetadata.
[in] packageGraphDirsCount
Typ: const DWORD
Anzahl der Pfade im PackageGraphDirs-Array .
[in, optional] packageGraphDirs
Typ: const HSTRING*
Anzahl der Paketpfade im expliziten Paket Abhängigkeitsdiagramm Arrays. Die Anzahl wird ignoriert, wenn packageGraphDirsnullptr ist.
[out, optional] metaDataFilePathsCount
Typ: DWORD*
Anzahl der Metadatendateien im MetaDataFilePaths-Array .
[out, optional] metaDataFilePaths
Typ: HSTRING**
Optionaler Ausgabeparameter, der aufgerufene zugeordnete Array absoluter Dateipfade aller Metadatendateien (.winmd) enthält, die möglicherweise direkte untergeordnete Namen enthalten können.
[out, optional] subNamespacesCount
Typ: DWORD*
Anzahl der Metadatendateien im Array "subNamespaces ".
[out, optional] subNamespaces
Typ: HSTRING**
Optionaler Ausgabeparameter, der ein vom Anrufer zugeordnetes Array von Namen direkter untergeordneter Elemente des angegebenen Namespace enthält. Diese Liste ist ein Hinweis auf andere Unternamespaces und nicht unbedingt vollständig.
Rückgabewert
Typ: HRESULT
Diese Funktion kann einen dieser Werte zurückgeben.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Die direkte Auflösung untergeordneter Namespaces ist erfolgreich, was bedeutet, dass mindestens eine Datei oder ein Unternamespacename gefunden wurde. |
|
Gibt einen der folgenden An:
|
|
Gibt einen der folgenden An:
|
Hinweise
Verwenden Sie die RoResolveNamespace-Funktion, um Windows-Runtime Namespacehierarchien zu untersuchen.
Beispiele
Das folgende C++-Beispiel zeigt, wie Sie die RoResolveNamespace-Funktion verwenden, um die direkten untergeordneten Namespaces für einen angegebenen Typnamen zu finden.
#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;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 8 [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2012 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | rometadataresolution.h |
Bibliothek | WinTypes.lib |
DLL | WinTypes.dll |