Funzione midl_user_allocate

La funzione midl_user_allocate è una routine che deve essere fornita dagli sviluppatori di applicazioni RPC. Alloca memoria per gli stub RPC e le routine della libreria. La funzione midl_user_allocate deve corrispondere al prototipo seguente:

void __RPC_FAR * __RPC_USER midl_user_allocate (size_t cBytes);

Il parametro cBytes specifica il numero di byte da allocare. Sia le applicazioni client che le applicazioni server devono implementare la funzione midl_user_allocate a meno che non si stia compilando in modalità OSF-compatibility (/osf). Le applicazioni e gli stub generati chiamano midl_user_allocate direttamente o indirettamente per gestire gli oggetti allocati. Ad esempio:

  • Le applicazioni client e server chiamano midl_user_allocate per allocare memoria per l'applicazione, ad esempio quando si crea un nuovo nodo in un albero o in un elenco collegato.
  • Lo stub del server chiama midl_user_allocate quando si annulla ilmarshaling dei dati nello spazio indirizzi del server.
  • Lo stub del client chiama midl_user_allocate quando si annulla ilmarshaling dei dati dal server a cui fa riferimento un puntatore [out]. Si noti che per i puntatori [in], [out]e [unique] lo stub del client chiama midl_user_allocate solo se il valore del puntatore [unique] è null nell'input e passa a un valore non Null durante la chiamata. Se il puntatore [unique] non è null all'input, lo stub client scrive i dati associati nella memoria esistente.

Se midl_user_allocate non riesce ad allocare memoria, deve restituire un puntatore Null.

La funzione midl_user_allocate deve restituire un puntatore allineato a 8 byte.

Ad esempio, i programmi di esempio forniti con Platform Software Development Kit (SDK) implementano midl_user_allocate in termini di malloc per la funzione C:

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

Nota

Se il pacchetto RpcSs è abilitato (ad esempio, come risultato dell'uso dell'attributo [ enable_allocate]), usare RpcSmAllocate per allocare memoria sul lato server. Per altre informazioni su [enable_allocate], vedere MidL Reference (Informazioni di riferimento su MIDL).