Ссылочные указатели
Ссылочные указатели являются самыми простыми указателями и требуют наименьшего объема обработки клиентской заглушки. Когда клиентская программа передает указатель на удаленную процедуру, указатель на ссылку всегда содержит адрес допустимого блока памяти. После завершения удаленной процедуры он по-прежнему будет указывать на тот же блок памяти. Эти указатели в основном используются для реализации семантики ссылок и для разрешения параметров [out] в C.
В следующем примере значение указателя не изменяется во время вызова, хотя содержимое данных по адресу, указанному указателем, может измениться.
Указатель на ссылку имеет следующие характеристики:
- Он всегда указывает на допустимое хранилище и никогда не имеет значения NULL.
- Он никогда не изменяется во время вызова и всегда указывает на одно и то же хранилище до и после вызова.
- Данные, возвращаемые удаленной процедурой, записываются в существующее хранилище.
- К хранилищу, на которое указывает указатель ссылки, нельзя получить доступ с помощью любого другого указателя или любого другого имени в функции.
Используйте атрибут [ref] для указания ссылочных указателей в определениях интерфейсов, как показано в следующем примере.
/* IDL file */
[
uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
version(1.0)
]
interface RefPtrInterface
{
void RemoteFn([in, out, ref] char *pChar);
}
В этом примере параметр pChar определяется как указатель на один символ, а не массив символов. Это параметр [out] и указатель ссылки, указывающий на память, которую подпрограмма сервера RemoteFn будет заполнять данными.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по