Fungsi RoResolveNamespace (rometadataresolution.h)
Tentukan turunan langsung, jenis, dan sub-namespace layanan Windows Runtime yang ditentukan, dari bahasa pemrograman apa pun yang didukung oleh Windows Runtime.
Sintaks
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
Jenis: const HSTRING
Namespace lengkap yang kami coba ambil anak langsungnya. Tanggal adalah parameter yang diperlukan.
Jika namespace ini kosong atau nullptr, fungsi RoResolveNamespace mengembalikan namespace tingkat atas. Baik Windows maupun namespace tingkat atas lainnya berada dalam grafik paket.
[in, optional] windowsMetaDataDir
Jenis: const HSTRING
Parameter opsional yang berisi jalur ke direktori SDK untuk mencari file metadata (.winmd).
Jika parameter ini tidak ditentukan (kosong atau nullptr), fungsi mencari di direktori metadata Windows default, %windir%\System32\WinMetadata.
[in] packageGraphDirsCount
Jenis: const DWORD
Jumlah jalur dalam array packageGraphDirs .
[in, optional] packageGraphDirs
Jenis: const HSTRING*
Jumlah jalur paket dalam array grafik dependensi paket eksplisit. Jumlah diabaikan jika packageGraphDirsadalah nullptr.
[out, optional] metaDataFilePathsCount
Jenis: DWORD*
Jumlah file metadata dalam array metaDataFilePaths .
[out, optional] metaDataFilePaths
Jenis: HSTRING**
Parameter output opsional yang berisi array yang dialokasikan callee dari jalur file absolut dari semua file metadata (.winmd) yang mungkin berisi turunan langsung dari nama.
[out, optional] subNamespacesCount
Jenis: DWORD*
Jumlah file metadata dalam array subNamespace.
[out, optional] subNamespaces
Jenis: HSTRING**
Parameter output opsional yang berisi array nama turunan langsung yang dialokasikan callee dari namespace yang diberikan. Daftar ini adalah petunjuk dari subnamespace lain dan belum tentu lengkap.
Nilai kembali
Jenis: HRESULT
Fungsi ini dapat mengembalikan salah satu nilai ini.
Menampilkan kode | Deskripsi |
---|---|
|
Resolusi turunan langsung namespace berhasil, yang berarti setidaknya satu file atau satu nama subnamespace ditemukan. |
|
Menunjukkan salah satu hal berikut ini:
|
|
Menunjukkan salah satu hal berikut ini:
|
Keterangan
Gunakan fungsi RoResolveNamespace untuk menjelajahi hierarki namespace Windows Runtime.
Contoh
Contoh C++ berikut menunjukkan cara menggunakan fungsi RoResolveNamespace untuk menemukan namespace turunan langsung untuk nama jenis tertentu.
#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;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 8 [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2012 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | rometadataresolution.h |
Pustaka | WinTypes.lib |
DLL | WinTypes.dll |
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk