Application-Allocated buffer
Het ACF-kenmerk [byte_count] stuurt de stubs om een vooraf toegewezen buffer te gebruiken die niet is toegewezen of vrijgemaakt door de clientondersteuningsroutines. Het kenmerk [byte_count] wordt toegepast op een aanwijzer of matrixparameter die verwijst naar de buffer. Hiervoor is een parameter vereist waarmee de buffergrootte in bytes wordt opgegeven.
Het aan de client toegewezen geheugengebied kan complexe gegevensstructuren bevatten met meerdere aanwijzers. Omdat het geheugengebied aaneengesloten is, hoeft de toepassing niet meerdere aanroepen uit te voeren om elke aanwijzer en structuur afzonderlijk vrij te maken. Net als bij het gebruik van het kenmerk [toewijzen(all_nodes)] kan het geheugengebied worden toegewezen of vrijgemaakt met één aanroep naar de geheugentoewijzingsroutine of de gratis routine. In tegenstelling tot het gebruik van het kenmerk [toewijzen (all_nodes)] wordt de bufferparameter echter niet beheerd door de client-stub maar door de clienttoepassing.
De buffer moet een parameter [out]-only zijn en de bufferlengte in bytes moet een [zijn in]-only parameter. Het kenmerk [byte_count] kan alleen worden toegepast op aanwijzertypen. Het ACF-kenmerk [byte_count] is een Microsoft-extensie voor DCE IDL en is als zodanig niet beschikbaar als u compileert met behulp van de MIDL-/osf--switch.
In het volgende voorbeeld gebruikt de parameter pRoot byte count:
/* function prototype in IDL file (fragment) */
void SortNames(
[in] short cNames,
[in, size_is(cNames)] STRINGTYPE pszArray[],
[in] short cBytes,
[out, ref] P_TREE_TYPE pRoot /* tree with sorted data */
);
Het kenmerk [byte_count] wordt in het ACF weergegeven als:
/* ACF file (fragment) */
SortNames([byte_count(cBytes)] pRoot);
De client-stub die is gegenereerd op basis van deze IDL- en ACF-bestanden wijst het geheugen voor deze buffer niet toe of maakt het vrij. De server-stub wijst de buffer toe en maakt deze vrij in één aanroep met behulp van de opgegeven grootteparameter. Als de gegevens te groot zijn voor de opgegeven buffergrootte, wordt er een uitzondering gegenereerd.