Función midl_user_allocate

La función midl_user_allocate es un procedimiento que deben proporcionar los desarrolladores de aplicaciones RPC. Asigna memoria para los códigos auxiliares RPC y las rutinas de biblioteca. La función midl_user_allocate debe coincidir con el prototipo siguiente:

void __RPC_FAR * __RPC_USER midl_user_allocate (size_t cBytes);

El parámetro cBytes especifica el número de bytes que se van a asignar. Tanto las aplicaciones cliente como las aplicaciones de servidor deben implementar la función midl_user_allocate a menos que esté compilando en modo de compatibilidad con OSF (/osf). Las aplicaciones y los códigos auxiliares generados llaman a midl_user_allocate directa o indirectamente para administrar objetos asignados. Por ejemplo:

  • Las aplicaciones cliente y servidor llaman a midl_user_allocate para asignar memoria para la aplicación, como al crear un nuevo nodo en un árbol o una lista vinculada.
  • El código auxiliar del servidor llama a midl_user_allocate al desacoplar datos en el espacio de direcciones del servidor.
  • El código auxiliar del cliente llama a midl_user_allocate al desacoplar datos del servidor al que hace referencia un puntero [out]. Tenga en cuenta que para los punteros [in], [out] y [unique], el código auxiliar del cliente llama a midl_user_allocate solo si el valor del puntero [único] era NULL en la entrada y cambia a un valor no NULL durante la llamada. Si el puntero [unique] no era null en la entrada, el código auxiliar del cliente escribe los datos asociados en la memoria existente.

Si midl_user_allocate no puede asignar memoria, debe devolver un puntero nulo.

La función midl_user_allocate debe devolver un puntero alineado de 8 bytes.

Por ejemplo, los programas de ejemplo proporcionados con el Kit de desarrollo de software (SDK) de plataforma implementan midl_user_allocate en términos de la función de C malloc:

void __RPC_FAR * __RPC_USER midl_user_allocate(size_t cBytes)
{
    return((void __RPC_FAR *) malloc(cBytes));
}

Nota

Si el paquete RpcSs está habilitado (por ejemplo, como resultado del uso del atributo [ enable_allocate], use RpcSmAllocate para asignar memoria en el lado servidor. Para obtener información adicional sobre [enable_allocate], vea Referencia de MIDL.