atributo context_handle_serialize
El atributo ACF [context_handle_serialize] garantiza que siempre se serializará un identificador de contexto, independientemente del comportamiento predeterminado de la aplicación.
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
-
Cualquier otro atributo de ACF que se aplique al tipo.
-
context-handle-type
-
Identificador que especifica el tipo de identificador de contexto, tal como se define en una declaración typedef . Este es el tipo que recibe el atributo [context_handle_serialize] en el archivo IDL.
-
function-acf-attribute-list
-
Cualquier atributo ACF adicional que se aplique a la función.
-
function-name
-
Nombre de la función tal y como se define en el archivo IDL.
-
parameter-acf-attribute-list
-
Cualquier otro atributo de ACF que se aplique al parámetro .
-
param-name
-
Nombre del parámetro tal y como se define en el archivo IDL.
Comentarios
El atributo [context_handle_serialize] identifica un identificador de enlace que mantiene información de contexto o estado en el servidor entre llamadas a procedimientos remotos. El atributo puede aparecer como un atributo de tipo typedef IDL, como atributo de tipo de valor devuelto de función o como atributo de parámetro.
De forma predeterminada, las llamadas en identificadores de contexto se serializan, pero una aplicación puede llamar a RpcSsDontSerializeContext para invalidar este comportamiento predeterminado. El uso del atributo [context_handle_serialize] en un archivo ACF garantiza que las llamadas a este identificador de contexto concreto se serializarán, incluso si la aplicación que realiza la llamada ha invalidado la serialización predeterminada. Una rutina de detención de contexto es opcional.
Este atributo está disponible en MIDL versión 5.0.
Windows Server 2003 y Windows XP o posterior: Una única interfaz puede acomodar identificadores de contexto serializados y no serializados, lo que permite que un método de una interfaz tenga acceso exclusivamente a un identificador de contexto (serializado), mientras que otros métodos acceden a ese identificador de contexto en modo compartido (no serializado). Estas capacidades de acceso son comparables a los mecanismos de bloqueo de lectura y escritura; los métodos que usan un identificador de contexto serializado son usuarios exclusivos (escritores), mientras que los métodos que usan un identificador de contexto no serializado son usuarios compartidos (lectores). Los métodos que destruyen o modifican el estado de un identificador de contexto deben serializarse. Los métodos que no modifican el estado de un identificador de contexto, como los métodos que simplemente leen de un identificador de contexto, pueden no serrializados. Tenga en cuenta que los métodos de creación se serializan implícitamente.
Ejemplos
typedef [context_handle_serialize] PCONTEXT_HANDLE_TYPE;
HRESULT RemoteFunc([context_handle_serialize] pCxHandle);
Vea también