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
이 함수는 이러한 값 중 하나를 반환할 수 있습니다.
반환 코드 | Description |
---|---|
|
네임스페이스 직접 자식 확인이 성공했습니다. 즉, 하나 이상의 파일 또는 하나의 하위 이름스페이스 이름이 발견되었습니다. |
|
다음 중 하나를 나타냅니다.
|
|
다음 중 하나를 나타냅니다.
|
설명
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 |
라이브러리 | WinTypes.lib |
DLL | WinTypes.dll |