atributo context_handle_serialize
O atributo ACF [context_handle_serialize] garante que um identificador de contexto sempre será serializado, independentemente do comportamento padrão do aplicativo.
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 );
Parâmetros
-
type-acf-attribute-list
-
Quaisquer outros atributos ACF que se aplicam ao tipo.
-
context-handle-type
-
O identificador que especifica o tipo de identificador de contexto, conforme definido em uma declaração typedef . Esse é o tipo que recebe o atributo [context_handle_serialize] no arquivo IDL.
-
function-acf-attribute-list
-
Quaisquer atributos ACF adicionais que se aplicam à função.
-
function-name
-
O nome da função conforme definido no arquivo IDL.
-
parameter-acf-attribute-list
-
Quaisquer outros atributos ACF que se aplicam ao parâmetro .
-
param-name
-
O nome do parâmetro conforme definido no arquivo IDL.
Comentários
O atributo [context_handle_serialize] identifica um identificador de associação que mantém informações de contexto ou estado no servidor entre chamadas de procedimento remoto. O atributo pode aparecer como um atributo de tipo typedef IDL, como um atributo de tipo de retorno de função ou como um atributo de parâmetro.
Por padrão, as chamadas em identificadores de contexto são serializadas, mas um aplicativo pode chamar RpcSsDontSerializeContext para substituir esse comportamento padrão. Usar o atributo [context_handle_serialize] em um arquivo ACF garante que as chamadas nesse identificador de contexto específico serão serializadas, mesmo que o aplicativo de chamada tenha substituído a serialização padrão. Uma rotina de resumo de contexto é opcional.
Esse atributo está disponível no MIDL versão 5.0.
Windows Server 2003 e Windows XP ou posterior: Uma única interface pode acomodar identificadores de contexto serializados e não serializados, permitindo que um método em uma interface acesse um identificador de contexto exclusivamente (serializado), enquanto outros métodos acessam esse identificador de contexto no modo compartilhado (não serializado). Esses recursos de acesso são comparáveis aos mecanismos de bloqueio de leitura/gravação; os métodos que usam um identificador de contexto serializado são usuários exclusivos (gravadores), enquanto os métodos que usam um identificador de contexto não inicializado são usuários compartilhados (leitores). Os métodos que destroem ou modificam o estado de um identificador de contexto devem ser serializados. Métodos que não modificam o estado de um identificador de contexto, como os métodos que simplesmente leem de um identificador de contexto, podem ser não sequenciados. Observe que os métodos de criação são implicitamente serializados.
Exemplos
typedef [context_handle_serialize] PCONTEXT_HANDLE_TYPE;
HRESULT RemoteFunc([context_handle_serialize] pCxHandle);
Confira também