Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O par alocador/deallocator padrão usado pelos stubs e o tempo de execução ao alocar memória em nome do aplicativo é midl_user_allocate/midl_user_free. No entanto, você pode escolher o pacote RpcSs em vez do padrão usando o atributo ACF [enable_allocate]. O pacote RpcSs consiste em funções RPC que começam com o prefixo RpcSs ou RpcSm. O pacote RpcSs não é recomendado para aplicativos do Windows.
Observação
O pacote de gerenciamento de memória Rpcss está obsoleto. Recomenda-se que midl_user_allocate e midl_user_free sejam usados em seu lugar.
No modo de /osf, o pacote RpcSs é habilitado para stubs gerados por MIDL automaticamente quando ponteiros completos são usados, quando os argumentos exigem alocação de memória ou como resultado do uso do atributo [enable_allocate]. No modo padrão (Microsoft extended), o pacote RpcSs é habilitado somente quando o atributo [enable_allocate] é usado. O atributo [enable_allocate] habilita o ambiente RpcSs pelos stubs do lado do servidor. O lado do cliente é alertado para a possibilidade de que o pacote RpcSs pode ser ativado. No modo de /osf, o lado do cliente não é afetado.
Quando o pacote RpcSs está habilitado, a alocação de memória no lado do servidor é realizada com o alocador de gerenciamento de memória RpcSs privado e o par deallocator. Você pode alocar memória usando o mesmo mecanismo chamando RpcSmAllocate (ou RpcSsAllocate). Após o retorno do stub do servidor, toda a memória alocada pelo pacote RpcSs é liberada automaticamente. O exemplo a seguir mostra como habilitar o pacote RpcSs:
/* ACF file fragment */
[
implicit_handle(handle_t GlobalHandle),
enable_allocate
]
interface iface
{
}
/*Server management routine fragment. Replaces p=midl_user_allocate(size); */
p=RpcSsAllocate(size); /*raises exception */
p=RpcSmAllocate(size, &status); /*returns error code */
Seu aplicativo pode liberar memória explicitamente invocando o RpcSsFree ou função de RpcSmFree. Observe que essas funções não liberam memória. Eles marcam para exclusão. A biblioteca RPC libera a memória quando o programa chama RpcSsDisableAllocate ou RpcSsDisableAllocate.
Você também pode habilitar o ambiente de gerenciamento de memória para seu aplicativo chamando o RpcSmEnableAllocate rotina (e você pode desativá-lo chamando o RpcSmDisableAllocate rotina). Uma vez habilitado, o código do aplicativo pode alocar e desalocar memória chamando funções do pacote RpcSs.