Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Calcula el identificador de interfaz (IID) de la interfaz o el tipo delegado que da como resultado cuando se crea una instancia de una interfaz o delegado con parámetros con los argumentos de tipo especificados.
Syntax
HRESULT RoGetParameterizedTypeInstanceIID(
UINT32 nameElementCount,
[in] PCWSTR *nameElements,
[in] const IRoMetaDataLocator & metaDataLocator,
[out] GUID *iid,
[out, optional] ROPARAMIIDHANDLE *pExtra
);
Parámetros
nameElementCount
Tipo: UINT32
Número de elementos de nameElements.
[in] nameElements
Tipo: PCWSTR*
Nombre de tipo de Windows Runtime analizado, tal y como devuelve la función RoParseTypeName . Por ejemplo, "Windows.Foundation.Collections.IVector'1" y "N1". N2. IFoo".
[in] metaDataLocator
Tipo: const IRoMetaDataLocator
Devolución de llamada que se va a usar para resolver metadatos.
Una implementación debe usar la función RoGetMetaDataFile para detectar el archivo de metadatos (.winmd) necesario y examinar los metadatos para determinar la información de tipo necesaria. Dado que la función RoGetMetaDataFile no almacena en caché los resultados, los localizadores deben almacenar en caché los resultados según corresponda para la implementación del modelo de programación.
[out] iid
Tipo: GUID*
IiD de la interfaz o delegado que se corresponde con nameElements.
[out, optional] pExtra
Tipo: ROPARAMIIDHANDLE*
Identificador del IID que corresponde a nameElements.
Valor devuelto
Tipo: HRESULT
| Código de retorno | Description |
|---|---|
|
La llamada se realizó correctamente. |
|
Memoria insuficiente disponible para completar la tarea. |
|
El número incorrecto de argumentos de tipo se proporciona para un tipo con parámetros. |
También puede producirse un error si un tipo es inadecuado para el contexto en el que aparece.
Observaciones
La función RoGetParameterizedTypeInstanceIID es para su uso por parte de los implementadores del lenguaje de programación.
Esta función no tiene estado. El argumento metaDataLocator no se conserva entre las llamadas y se puede liberar tan pronto como se devuelva la llamada.
La función RoGetParameterizedTypeInstanceIID no realiza un análisis semántico profundo. Por ejemplo, si IRoSimpleMetaDataBuilder especifica que una estructura contiene un puntero de interfaz, esta función devuelve éxito, aunque estos metadatos no sean semánticamente no válidos. El valor del IID devuelto no se especifica en tales casos.
Esta función puede invocar recursivamente el localizador de metadatos proporcionado como argumento.
Si se produce un error en una llamada a la función IRoSimpleMetaDataBuilder , esta función devolverá ese código de error.
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);
}
Requisitos
| Requirement | Importancia |
|---|---|
| Cliente mínimo compatible | Windows 8 [aplicaciones de escritorio | Aplicaciones para UWP] |
| Servidor mínimo admitido | Windows Server 2012 [aplicaciones de escritorio | Aplicaciones para UWP] |
| de la plataforma de destino de |
Windows |
| Header | roparameterizediid.h |
| Library | OneCore.Lib |
| DLL de |
Api-ms-win-core-winrt-roparameterizediid-l1-1-0.dll |