atributo context_handle_noserialize
O atributo ACF [context_handle_noserialize] garante que um identificador de contexto nunca será serializado, independentemente do comportamento padrão do aplicativo.
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 );
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] no arquivo IDL.
-
function-acf-attribute-list
-
Todos os atributos ACF adicionais que se aplicam à função.
-
nome da função
-
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] 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 de 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. Um aplicativo pode chamar RpcSsDontSerializeContext para substituir esse comportamento padrão. Usar o atributo [context_handle] em um arquivo ACF garante que as chamadas nesse identificador de contexto específico não serão serializadas, independentemente do comportamento do aplicativo de chamada. Fornecer uma rotina de rundown 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 sequenciados, 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 serializado são usuários compartilhados (leitores). 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 serializados implicitamente.
Exemplos
typedef [context_handle_noserialize] PCONTEXT_HANDLE_TYPE;
HRESULT RemoteFunc([context_handle_noserialize] pCxHandle);
Confira também