bufor Application-Allocated
Atrybut ACF [byte_count] kieruje wycinki do używania wstępnie przydzielonego buforu, który nie jest przydzielany lub zwalniany przez procedury pomocy technicznej klienta. Atrybut [byte_count] jest stosowany do wskaźnika lub parametru tablicy wskazującego na bufor. Wymaga parametru określającego rozmiar buforu w bajtach.
Przydzielony przez klienta obszar pamięci może zawierać złożone struktury danych z wieloma wskaźnikami. Ponieważ obszar pamięci jest ciągły, aplikacja nie musi wykonywać kilku wywołań, aby zwolnić każdy wskaźnik i strukturę pojedynczo. Tak jak w przypadku używania atrybutu [przydzielenia(all_nodes)] można przydzielić lub zwolnić obszar pamięci za pomocą jednego wywołania procedury alokacji pamięci lub wolnej procedury. Jednak w przeciwieństwie do atrybutu [allocate(all_nodes)] parametr buforu nie jest zarządzany przez łącznik klienta, ale przez aplikację kliencą.
Bufor musi być parametrem []-only, a długość buforu w bajtach musi być parametrem [w]-only. Atrybut [byte_count] można zastosować tylko do typów wskaźników. Atrybut [byte_count] ACF jest rozszerzeniem firmy Microsoft do języka IDL DCE i, w związku z tym, nie jest dostępny w przypadku kompilowania przy użyciu przełącznikaMIDL/osf.
W poniższym przykładzie parametr pRoot używa liczby bajtów:
/* 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 */
);
Atrybut [byte_count] jest wyświetlany w usłudze ACF jako:
/* ACF file (fragment) */
SortNames([byte_count(cBytes)] pRoot);
Wycinkę klienta wygenerowaną na podstawie tych plików IDL i ACF nie przydziela ani nie zwalnia pamięci dla tego buforu. Wycinkę serwera przydziela i zwalnia bufor w jednym wywołaniu przy użyciu podanego parametru rozmiaru. Jeśli dane są zbyt duże dla określonego rozmiaru buforu, zgłaszany jest wyjątek.