Compartilhar via


Estruturas de dados do tamanho de variação

Quando estruturas de dados de tamanho variado são usadas para transmitir informações entre TAPI e o aplicativo, o aplicativo é responsável por alocar a memória necessária. A quantidade de memória alocada deve ser pelo menos grande o suficiente para a parte fixa da estrutura de dados e é definida pelo aplicativo no dwTotalSize membro da estrutura de dados. Os membros dwUsedSize e dwNeededSize são preenchidos pela TAPI. Se dwTotalSize for menor que o tamanho da parte fixa, LINEERR/PHONEERR_STRUCTURETOOSMALL será retornado. Se uma função retornar êxito, todos os campos na parte fixa serão preenchidos. Os membros dwUsedSize e dwNeededSize podem ser comparados para determinar se todas as partes variáveis foram preenchidas e quanto espaço seria necessário para preenchê-las.

Se dwNeededSize for igual a dwUsedSize, todas as partes fixas e variáveis serão preenchidas. Se dwNeededSize for maior que dwUsedSize, algumas partes variáveis poderão ter sido preenchidas, mas exatamente quais campos de tamanho variavelmente foram preenchidos é indefinido. Nenhuma parte variável é truncada e partes variáveis que teriam sido truncadas devido ao espaço insuficiente são indicadas por terem as partes correspondentes "Deslocamento" e "Tamanho" definidas como zero. Se elas não forem zero (e nenhum erro foi retornado), elas indicarão o deslocamento e o tamanho dos dados válidos de parte variável não estruturados.

Um aplicativo sempre pode garantir que todas as partes variáveis sejam preenchidas alocando e indicando dwNeededSize bytes para a estrutura e chamando a função "Get" novamente até que a função retorne êxito e dwNeededSize seja igual a dwUsedSize. Isso deve acontecer na segunda tentativa, exceto para condições de corrida que causam alterações no tamanho de partes variáveis entre chamadas, o que deve ser uma ocorrência rara.

Nota

Todas as cadeias de caracteres de texto, independentemente da codificação, em estruturas de tamanho variavelmente devem ser NULLterminadas de acordo com as convenções normais de tratamento de cadeia de caracteres C.