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


атрибут context_handle_serialize

Атрибут ACF [context_handle_serialize] гарантирует, что дескриптор контекста всегда будет сериализован независимо от поведения приложения по умолчанию.

typedef [context_handle_serialize [ , type-acf-attribute-list ] ] context-handle-type;

[context_handle_serialize [, function-acf-attribute-list ] ] function-name( );

function-name(
    [context_handle_serialize [ , parameter-acf-attribute-list ] ] param-name );

Параметры

type-acf-attribute-list

Любые другие атрибуты ACF, которые применяются к типу.

context-handle-type

Идентификатор, указывающий тип дескриптора контекста, как определено в объявлении typedef . Это тип, который получает атрибут [context_handle_serialize] в IDL-файле.

function-acf-attribute-list

Любые дополнительные атрибуты ACF, которые применяются к функции.

function-name

Имя функции, определенное в IDL-файле.

parameter-acf-attribute-list

Любые другие атрибуты ACF, которые применяются к параметру .

param-name

Имя параметра, определенное в IDL-файле.

Комментарии

Атрибут [context_handle_serialize] определяет дескриптор привязки, который хранит сведения о контексте или состоянии на сервере между удаленными вызовами процедур. Атрибут может отображаться как атрибут типа определения типа IDL, как атрибут возвращаемого типа функции или атрибут параметра.

По умолчанию вызовы дескрипторов контекста сериализуются, но приложение может вызвать RpcSsDontSerializeContext , чтобы переопределить это поведение по умолчанию. Использование атрибута [context_handle_serialize] в файле ACF гарантирует сериализацию вызовов этого конкретного дескриптора контекста, даже если вызывающее приложение переопределяет сериализацию по умолчанию. Подпрограмма очистки контекста является необязательной.

Этот атрибут доступен в MIDL версии 5.0.

Windows Server 2003 и Windows XP или более поздней версии: Один интерфейс может вместить как сериализованные, так и несериализованные дескрипторы контекста, что позволяет одному методу в интерфейсе обращаться исключительно к дескриптору контекста (сериализованному), а другие методы обращаются к этой обработке контекста в общем режиме (несериализованном). Эти возможности доступа сравнимы с механизмами блокировки чтения и записи; Методы, использующие дескриптор сериализованного контекста, являются монопольными пользователями (средствами записи), тогда как методы, использующие дескриптор несериализованного контекста, являются общими пользователями (средствами чтения). Методы, которые уничтожают или изменяют состояние дескриптора контекста, должны быть сериализованы. Методы, которые не изменяют состояние дескриптора контекста, например методы, которые просто считывают дескриптор контекста, могут быть несериализуемыми. Обратите внимание, что методы создания неявно сериализуются.

Примеры

typedef [context_handle_serialize] PCONTEXT_HANDLE_TYPE; 
HRESULT RemoteFunc([context_handle_serialize] pCxHandle);

См. также раздел

Файл конфигурации приложения (ACF)

Атрибуты ACF

context_handle_noserialize

context_handle

Дескрипторы контекста

RpcSsDontSerializeContext

Подпрограмма запуска контекста сервера

Многопоточные клиенты и дескрипторы контекста

Typedef