Udostępnij przez


Niezmienne rozmiary struktur danych

Gdy do przesyłania informacji między interfejsem TAPI a aplikacją są używane niezmiennie rozmiary struktur danych, aplikacja jest odpowiedzialna za przydzielanie niezbędnej pamięci. Ilość przydzielonej pamięci musi być co najmniej wystarczająco duża dla stałej części struktury danych i jest ustawiana przez aplikację w dwTotalSize składowej struktury danych. Elementy członkowskie dwUsedSize i dwNeededSize są wypełniane przez interfejs TAPI. Jeśli dwTotalSize jest mniejsza niż rozmiar stałej części, zwracana jest wartość LINEERR/PHONEERR_STRUCTURETOOSMALL. Jeśli funkcja zwróci powodzenie, wszystkie pola w stałej części zostały wypełnione. Elementy członkowskie dwUsedSize i dwNeededSize można porównać, aby określić, czy wszystkie części zmiennych zostały wypełnione i ile miejsca będzie wymagane do wypełnienia ich wszystkich.

Jeśli dwNeededSize jest równa dwUsedSize, wszystkie stałe i zmienne części zostały wypełnione. Jeśli dwNeededSize jest większa niż dwUsedSize, niektóre części zmiennych mogły zostać wypełnione, ale dokładnie, które pola o niezmiennym rozmiarze zostały wypełnione, jest niezdefiniowane. Żadna część zmiennej nigdy nie jest obcięta, a części zmiennych, które byłyby obcięte z powodu niewystarczającej ilości miejsca, są wskazywane przez obie części odpowiadające im "Przesunięcie" i "Rozmiar" ustawione na zero. Jeśli nie są one zerowe (i nie zostały zwrócone żadne błędy), wskazują przesunięcie i rozmiar prawidłowych, nietrudowanych danych części zmiennej.

Aplikacja zawsze może zagwarantować, że wszystkie części zmiennych są wypełniane przez przydzielanie i wskazywanie dwNeededSize bajtów dla struktury i wywołanie funkcji "Get" ponownie, dopóki funkcja nie zwróci powodzenia i dwNeedEdSize równa się dwUsedSize. Powinno się to zdarzyć w drugiej próbie z wyjątkiem warunków wyścigu, które powodują zmiany wielkości zmiennych części między wywołaniami, co powinno być rzadkim wystąpieniem.

Nuta

Wszystkie ciągi tekstowe, niezależnie od kodowania, w niezmiennych strukturach wielkości powinny być null- zakończone zgodnie z normalną konwencją obsługi ciągów języka C.