атрибут 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

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

function-acf-attribute-list

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

имя функции

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

parameter-acf-attribute-list

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

param-name

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

Замечания

Атрибут [context_handle] определяет дескриптор привязки, который поддерживает контекст или сведения о состоянии на сервере между удаленными вызовами процедур. Атрибут может отображаться как атрибут типа типа 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