Поделиться через


Внедренные указатели на Out-Only

При использовании [исходящихссылочных указателей только в Microsoft RPC созданные заглушки сервера выделяют только первый уровень указателей, доступных из эталонного указателя. Указатели на более глубоких уровнях не выделяются заглушками, но должны быть выделены уровнем приложения сервера. Например, предположим, что интерфейс указывает [из]-только массив ссылочных указателей:

/* IDL file (fragment) */
typedef [ref] short * PREF;

Proc1([out] PREF array[10]);

В этом примере заглушка сервера выделяет память для 10 указателей и задает значение null для каждого указателя. Серверное приложение должно выделить память для 10 коротких целых чисел, на которые ссылается указатель, а затем задать 10 указателей на целые числа.

Если структура данных только для [из]включает вложенные ссылочные указатели, заглушки сервера выделяют только первый указатель, доступный из ссылочного указателя. Например:

/* 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);

В предыдущем примере заглушки сервера выделяют указатель psTop и структуру STRUCT_TOP_TYPE. Указатель ссылки ps1 в STRUCT_TOP_TYPE имеет значение NULL. Заглушка сервера не выделяет каждый уровень структуры данных, а также не выделяет STRUCT1_TYPE или внедренный указатель, psValue.