атрибут context_handle_noserialize

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

typedef [context_handle_noserialize [ , type-acf-attribute-list ] ] context-handle-type

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

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

Параметры

type-acf-attribute-list

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

context-handle-type

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

function-acf-attribute-list

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

имя функции

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

parameter-acf-attribute-list

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

param-name

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

Комментарии

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

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

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

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

Примеры

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

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

Атрибуты ACF

context_handle_serialize

context_handle

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

RpcSsDontSerializeContext

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

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

Typedef