Pointeurs de référence incorporés Out-Only
Lorsque vous utilisez des pointeurs de référence [out]-only dans Microsoft RPC, les stubs de serveur générés allouent uniquement le premier niveau de pointeurs accessibles à partir du pointeur de référence. Les pointeurs aux niveaux plus profonds ne sont pas alloués par les stubs, mais doivent être alloués par la couche d’application serveur. Par exemple, supposons qu’une interface spécifie un tableau [out]-only de pointeurs de référence :
/* IDL file (fragment) */
typedef [ref] short * PREF;
Proc1([out] PREF array[10]);
Dans cet exemple, le stub serveur alloue de la mémoire pour 10 pointeurs et définit la valeur de chaque pointeur sur null. L’application serveur doit allouer la mémoire pour les 10 entiers courts référencés par les pointeurs, puis définir les 10 pointeurs pour qu’ils pointent vers les entiers.
Lorsque la structure de données [out]-only inclut des pointeurs de référence imbriqués, les stubs du serveur allouent uniquement le premier pointeur accessible à partir du pointeur de référence. Par exemple :
/* IDL file (fragment) */
typedef struct
{
[ref] small * psValue;
} STRUCT1_TYPE;
typedef struct
{
[ref] STRUCT1_TYPE * ps1;
} STRUCT_TOP_TYPE;
Proc2([out, ref] STRUCT_TOP_TYPE * psTop);
Dans l’exemple précédent, les stubs du serveur allouent le pointeur psTop et la structure STRUCT_TOP_TYPE. Le pointeur de référence ps1 dans STRUCT_TOP_TYPE a la valeur null. Le stub du serveur n’alloue pas tous les niveaux de la structure de données, ni le STRUCT1_TYPE ou son pointeur incorporé psValue.