Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wanneer er meerdere niveaus met aanwijzers zijn, worden de kenmerken gekoppeld aan de aanwijzer die het dichtst bij de naam van de variabele ligt. De client is nog steeds verantwoordelijk voor het toewijzen van geheugen dat aan het antwoord is gekoppeld.
In het volgende voorbeeld kan de stub de server aanroepen zonder vooraf te weten hoeveel gegevens er worden geretourneerd:
[
uuid( ...),
version(3.3),
]
interface AnInterface
{
HRESULT GetBars([out] long * pSize,
[out, size_is( , *pSize)]
BAR ** ppBar);//BAR type defined elsewhere
}
In dit voorbeeld geeft de stub de server een unieke aanwijzer door, die de server initialiseert om te NULL-. De server wijst vervolgens een blok met ADR's toe, stelt de aanwijzer in, stelt het argument grootte in en retourneert. Houd er rekening mee dat u een [verw]-aanwijzer moet doorgeven aan een [unieke] aanwijzer om de server te laten verwijzen naar uw gegevens. Let ook op de komma in [size_is( , *pSize )], wat aangeeft dat de aanwijzer op het hoogste niveau geen aanwijzer is, maar dat de aanwijzer op het lagere niveau is.
Aan de clientzijde stelt de stub *ppBar in op NULL- voordat de externe procedure wordt aangeroepen. De stub wijst vervolgens de arry van BAR-objecten toe en laat deze los. Het argument grootte geeft de grootte van het blok aan (en het aantal niet-gemarshaleerde BAR's). De client moet de geretourneerde matrix van BAR-objecten vrijmaken wanneer deze niet meer nodig is.
Verwante onderwerpen