Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
MIDL innehåller en omfattande uppsättning funktioner för att skicka matriser med data och pekare till data. Du kan använda dessa attribut för att ange egenskaper för matriser och flera pekarnivåer.
| Attribut | Användning |
|---|---|
| size_is | Anger mängden minne som ska allokeras för storlekspekare, storlekspekare för storlekspekare och endimensionella matriser. |
| max_is | Det maximala värdet för ett matrisindex. |
| length_is | Antalet matriselement som ska överföras. |
| first_is | Indexet för det första matriselementet som ska överföras. |
| last_is | Ger indexet för det sista matriselementet som ska överföras. |
| sträng | Anger att endimensionell tecken, wchar_t, byte (eller motsvarande) matris, eller pekaren till en sådan matris, ska hanteras som en sträng. |
| intervall | Anger ett intervall med tillåtna värden för argument eller fält vars värden anges vid körning. |
MIDL stöder tre typer av pekare: referenspekare, unika pekare och fullständiga pekare. Dessa pekare anges av pekarattributen referens, unikaoch ptr.
Ett pekarattribut kan användas som ett typattribut. som ett fältattribut som gäller för en strukturmedlem, fackföreningsmedlem eller parameter. eller som ett funktionsattribut som gäller för funktionens returtyp. Pekarattributet kan också visas med nyckelordet pointer_default.
Om du vill tillåta att en pekarparameter ändras i värde under en fjärrfunktion måste du ange en annan indirekt nivå genom att ange flera pekardeklaratorer. Det explicita pekarattributet som tillämpas på parametern påverkar endast pekardeklaratorn längst till höger för parametern. När det finns flera pekardeklaratorer i en parameterdeklaration är de andra deklaratorerna standardvärdet för pekarattributet som anges av attributet pointer_default. Om du vill använda olika pekarattribut på flera pekardeklaratorer måste du definiera mellanliggande typer som anger de explicita pekarattributen.
Standardvärden för Pointer-Attribute
När inget pekarattribut är associerat med en pekare som är en parameter antas pekaren vara en referens pekare.
När inget pekarattribut är associerat med en pekare som är medlem i en struktur eller union tilldelar MIDL-kompilatorn pekarattribut med hjälp av följande prioritetsregler (1 är högst):
- Attribut som uttryckligen tillämpas på pekartypen
- Attribut som uttryckligen tillämpas på pekarparametern eller medlemmen
- Attributet pointer_default i IDL-filen som definierar typen
- Attributet pointer_default i IDL-filen som importerar typen
- ptr (osf-läge); unika (Standardläge för Microsoft RPC)
När IDL-filen kompileras i standardläge kan importerade filer ärva pekarattribut från att importera filer. Den här funktionen är inte tillgänglig när du kompilerar med växeln /osf. Mer information finns i importera.
Funktionsreturtyper
En pekare som returneras av en funktion måste vara en unik pekare eller en fullständig pekare. MIDL-kompilatorn rapporterar ett fel om ett funktionsresultat är en referenspekare, antingen explicit eller som standard. Den returnerade pekaren anger alltid ny lagring.
Funktioner som returnerar ett pekarvärde kan ange ett pekarattribut som ett funktionsattribut. Om det inte finns något pekarattribut använder funktionsresultatpekaren värdet som anges som attributet pointer_default.
Pekarattribut i typdefinitioner
När du anger ett pekarattribut på den översta nivån i en typedef--instruktion tillämpas det angivna attributet på pekardeklaratorn som förväntat. När inget pekarattribut har angetts ärver pekardeklaratorer på den översta nivån av en typedef-instruktion pekarattributtypen när de används.
DCE IDL tillåter inte att samma pekarattribut uttryckligen tillämpas två gånger, till exempel i både typedef-deklarationen och parameterattributlistan. När du använder midl-kompilatorns standardläge (Microsoft-tillägg) är den här begränsningen avslappnad.
En diskussion om hur du använder MIDL-matriser och pekare i fjärrproceduranrop finns i Matriser och pekare.