Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Calcule l’identificateur d’interface (IID) de l’interface ou du type délégué qui résulte lorsqu’une interface paramétrable ou un délégué est instancié avec les arguments de type spécifiés.
Syntaxe
HRESULT RoGetParameterizedTypeInstanceIID(
UINT32 nameElementCount,
[in] PCWSTR *nameElements,
[in] const IRoMetaDataLocator & metaDataLocator,
[out] GUID *iid,
[out, optional] ROPARAMIIDHANDLE *pExtra
);
Paramètres
nameElementCount
Type : UINT32
Nombre d’éléments dans nameElements.
[in] nameElements
Type : PCWSTR*
Nom de type Windows Runtime analysé, tel qu’il est retourné par la fonction RoParseTypeName . Par exemple, « Windows.Foundation.Collections.IVector'1 » et « N1 ». N2. IFoo".
[in] metaDataLocator
Type : const IRoMetaDataLocator
Rappel à utiliser pour résoudre les métadonnées.
Une implémentation doit utiliser la fonction RoGetMetaDataFile pour découvrir le fichier de métadonnées nécessaires (.winmd) et examiner les métadonnées pour déterminer les informations de type nécessaires. Étant donné que la fonction RoGetMetaDataFile ne met pas en cache les résultats, les localisateurs doivent mettre en cache les résultats appropriés pour le modèle de programmation implémenté.
[out] iid
Type : GUID*
IID de l’interface ou du délégué qui correspond aux nameElements.
[out, optional] pExtra
Type : ROPARAMIIDHANDLE*
Handle to the IID that correspond with nameElements.
Valeur retournée
Type : HRESULT
| Code de retour | Descriptif |
|---|---|
|
L’appel a réussi. |
|
Mémoire insuffisante disponible pour terminer la tâche. |
|
Le nombre incorrect d’arguments de type est fourni pour un type paramétrable. |
Une défaillance peut également se produire si un type est inapproprié pour le contexte dans lequel il apparaît.
Remarques
La fonction RoGetParameterizedTypeInstanceIID est utilisée par les implémenteurs de langage de programmation.
Cette fonction est sans état. L’argument metaDataLocator n’est pas conservé entre les appels et peut être libéré dès que l’appel retourne.
La fonction RoGetParameterizedTypeInstanceIID n’effectue pas d’analyse sémantique approfondie. Par exemple, si IRoSimpleMetaDataBuilder spécifie qu’une structure contient un pointeur d’interface, cette fonction retourne la réussite, même si ces métadonnées ne sont pas valides sémantiquement. La valeur du IID retourné n’est pas spécifiée dans de tels cas.
Cette fonction peut appeler de manière récursive le localisateur de métadonnées fourni en tant qu’argument.
Si un appel à la fonction IRoSimpleMetaDataBuilder échoue, cette fonction retourne ce code d’échec.
Examples
#include <stdlib.h>
#include <windows.h>
#include <winrt/paraminstanceapi.h>
HRESULT ExampleMetadataLocator(
PCWSTR name,
IRoSimpleMetaDataBuilder& builder)
{
if (wcscmp(L"Example.IParam`1", name) == 0)
{
GUID piidParam= { /* 22046e87-28b5-4c53-9804-bc69f6ee0299 */
0x22046e87,
0x28b5,
0x4c53,
{0x98, 0x04, 0xbc, 0x69, 0xf6, 0xee, 0x02, 0x99}
};
builder.SetParameterizedInterface(piidParam, 1);
}
else if (wcscmp(L"Example.InterfaceGroup", name) == 0)
{
builder.SetInterfaceGroupSimpleDefault(name, L"Example.IFoo", nullptr);
}
else if (wcscmp(L"Example.IFoo", name) == 0)
{
GUID iidFoo = { /* f7f968c2-b1d8-47e0-98db-1b04f2bba657 */
0xf7f968c2,
0xb1d8,
0x47e0,
{0x98, 0xdb, 0x1b, 0x04, 0xf2, 0xbb, 0xa6, 0x57}
};
builder.SetWinRtInterface(iidFoo);
}
return E_ABORT;
}
int main()
{
// example, compute IID
GUID iidResult;
PCWSTR names = { L"Example.IParam`1", L"Example.InterfaceGroup" };
HRESULT hr = RoGetParameterizedTypeInstanceIID(
2,
names,
Ro::Locator(&ExampleMetadataLocator),
&iidResult);
}
Spécifications
| Requirement | Valeur |
|---|---|
| Client minimum requis | Windows 8 [applications de bureau | Applications UWP] |
| Serveur minimal pris en charge | Windows Server 2012 [applications de bureau | Applications UWP] |
| plateforme cible | Fenêtres |
| Header | roparameterizediid.h |
| Library | OneCore.Lib |
| DLL | Api-ms-win-core-winrt-roparameterizediid-l1-1-0.dll |