Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per comprendere in che modo i puntatori e i relativi elementi dati associati vengono allocati in Microsoft RPC, è necessario distinguere tra puntatori di primo livello e puntatori incorporati. È anche utile fare riferimento al set di tutti i puntatori che non sono puntatori di primo livello.
puntatori di primo livello sono quelli specificati come nomi di parametri nei prototipi di funzione. I puntatori di primo livello e i relativi riferimenti vengono sempre allocati nel server.
puntatori incorporati sono puntatori incorporati in strutture di dati come matrici, strutture e unioni. Quando i puntatori incorporati scrivono solo l'output in un buffer e sono Null in input, l'applicazione server può modificare i valori in non Null. In questo caso, gli stub client allocano nuova memoria per questi dati.
Se il puntatore incorporato non è Null nel client prima della chiamata, gli stub non allocano memoria sul client in caso di restituzione. Gli stub tentano invece di scrivere la memoria associata al puntatore incorporato nella memoria esistente nel client associato a tale puntatore, sovrascrivendo i dati già presenti.
Nota
Per i dati letti o scritti in un buffer e che non specificano le dimensioni del buffer, la lunghezza dell'output deve essere minore o uguale alla lunghezza di input. Quando viene rilevato un overflow, viene generata un'eccezione RPC. Per i dati stringa, la lunghezza dell'output viene determinata controllando la lunghezza della stringa di input. Di conseguenza, le stringhe di output non possono superare la lunghezza delle stringhe di input. Le indicazioni sulle procedure consigliate consentono di evitare questo problema includendo sempre un parametro specificato per le dimensioni per indicare le dimensioni del buffer.
I puntatori di sola scrittura incorporati sono descritti in combinazione di puntatori e attributi direzionali.
Il termine puntatori non di livello superiore fa riferimento a tutti i puntatori non specificati come nomi di parametri nel prototipo di funzione, inclusi puntatori incorporati e più livelli di puntatori annidati.