Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Calcula o IID (identificador de interface) do tipo de interface ou delegado que resulta quando uma interface ou delegado parametrizado é instanciado com os argumentos de tipo especificados.
Sintaxe
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 em nameElements.
[in] nameElements
Tipo: PCWSTR*
Um nome de tipo do Windows Runtime analisado, conforme retornado pela função RoParseTypeName . Por exemplo, "Windows.Foundation.Collections.IVector'1" e "N1. N2. IFoo".
[in] metaDataLocator
Tipo: const IRoMetaDataLocator
Um retorno de chamada a ser usado para resolver metadados.
Uma implementação deve usar a função RoGetMetaDataFile para descobrir o arquivo de metadados necessário (.winmd) e examinar os metadados para determinar as informações de tipo necessárias. Como a função RoGetMetaDataFile não armazena em cache os resultados, os localizadores devem armazenar em cache os resultados conforme apropriado para o modelo de programação que está sendo implementado.
[out] iid
Tipo: GUID*
A IID da interface ou delegado que corresponde a nameElements.
[out, optional] pExtra
Tipo: ROPARAMIIDHANDLE*
Manipule para a IID que corresponde a nameElements.
Valor de retorno
Tipo: HRESULT
| Código de retorno | Description |
|---|---|
|
A chamada foi bem-sucedida. |
|
Memória insuficiente disponível para concluir a tarefa. |
|
O número incorreto de argumentos de tipo é fornecido para um tipo parametrizado. |
Uma falha também poderá ocorrer se um tipo for inadequado para o contexto no qual ele aparece.
Observações
A função RoGetParameterizedTypeInstanceIID é usada por implementadores de linguagem de programação.
Essa função é sem estado. O argumento metaDataLocator não é preservado entre chamadas e pode ser liberado assim que a chamada é retornada.
A função RoGetParameterizedTypeInstanceIID não executa análise semântica profunda. Por exemplo, se IRoSimpleMetaDataBuilder especificar que uma estrutura contém um ponteiro de interface, essa função retornará êxito, mesmo que esses metadados sejam semanticamente inválidos. O valor da IID retornada não é especificado nesses casos.
Essa função pode invocar recursivamente o localizador de metadados fornecido como um argumento.
Se uma chamada para a função IRoSimpleMetaDataBuilder falhar, essa função retornará esse código de falha.
Exemplos
#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);
}
Requirements
| Requirement | Value |
|---|---|
| Cliente mínimo suportado | Windows 8 [aplicativos da área de trabalho | Aplicativos UWP] |
| Servidor mínimo compatível | Windows Server 2012 [aplicativos da área de trabalho | Aplicativos UWP] |
| da Plataforma de Destino |
Windows |
| Header | roparameterizediid.h |
| Library | OneCore.Lib |
| de DLL |
Api-ms-win-core-winrt-roparameterizediid-l1-1-0.dll |