RoResolveNamespace 関数 (rometadataresolution.h)
Windows ランタイムでサポートされているプログラミング言語から、指定したWindows ランタイム名前空間の直接の子、型、およびサブ名前空間を決定します。
構文
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
);
パラメーター
[in, optional] name
型: const HSTRING
直接の子を取得しようとしている完全な名前空間。 これは必須パラメーターです。
この名前空間が空または nullptr の場合、 RoResolveNamespace 関数は最上位の名前空間を返します。 Windows とその他の最上位の名前空間はどちらもパッケージ グラフにあります。
[in, optional] windowsMetaDataDir
型: const HSTRING
メタデータ (.winmd) ファイルを検索する SDK ディレクトリへのパスを含む省略可能なパラメーター。
このパラメーターが指定されていない場合 (空または nullptr)、関数は既定の Windows メタデータ ディレクトリ %windir%\System32\WinMetadata を検索します。
[in] packageGraphDirsCount
型: const DWORD
packageGraphDirs 配列内のパスの数。
[in, optional] packageGraphDirs
型: const HSTRING*
明示的なパッケージ 依存関係グラフ配列内のパッケージ パスの数。 packageGraphDirs が nullptr の場合、カウントは無視されます。
[out, optional] metaDataFilePathsCount
型: DWORD*
metaDataFilePaths 配列内のメタデータ ファイルの数。
[out, optional] metaDataFilePaths
型: HSTRING**
名前の直接の子を含む可能性があるすべてのメタデータ (.winmd) ファイルの絶対ファイル パスの呼び出し先割り当て配列を含む省略可能な出力パラメーター。
[out, optional] subNamespacesCount
型: DWORD*
subNamespaces 配列内のメタデータ ファイルの数。
[out, optional] subNamespaces
型: HSTRING**
指定された名前空間の直接子の名前の呼び出し先割り当て配列を含む省略可能な出力パラメーター。 このリストは他のサブ名前空間のヒントであり、必ずしも完全ではありません。
戻り値
型: HRESULT
この関数は、これらの値のいずれかを返すことができます。
リターン コード | 説明 |
---|---|
|
名前空間直接子の解決が成功しました。これは、少なくとも 1 つのファイルまたは 1 つのサブ名前空間名が見つかったことを意味します。 |
|
次のいずれかを示します。
|
|
次のいずれかを示します。
|
注釈
RoResolveNamespace 関数を使用して、名前空間階層Windows ランタイム調べることができます。
例
次の C++ の例は、 RoResolveNamespace 関数を使用して、指定した型名の直接の子名前空間を検索する方法を示しています。
#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;
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2012 [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | rometadataresolution.h |
Library | WinTypes.lib |
[DLL] | WinTypes.dll |