attribut context_handle_serialize
L’attribut ACF [context_handle_serialize] garantit qu’un handle de contexte sera toujours sérialisé, quel que soit le comportement par défaut de l’application.
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 );
Paramètres
-
type-acf-attribute-list
-
Tous les autres attributs ACF qui s’appliquent au type.
-
context-handle-type
-
Identificateur qui spécifie le type de handle de contexte, tel que défini dans une déclaration typedef . Il s’agit du type qui reçoit l’attribut [context_handle_serialize] dans le fichier IDL.
-
function-acf-attribute-list
-
Tous les attributs ACF supplémentaires qui s’appliquent à la fonction.
-
function-name
-
Nom de la fonction tel que défini dans le fichier IDL.
-
parameter-acf-attribute-list
-
Tous les autres attributs ACF qui s’appliquent au paramètre .
-
param-name
-
Nom du paramètre tel que défini dans le fichier IDL.
Notes
L’attribut [context_handle_serialize] identifie un handle de liaison qui gère les informations de contexte ou d’état sur le serveur entre les appels de procédure distante. L’attribut peut apparaître en tant qu’attribut de type typedef IDL, en tant qu’attribut de type de retour de fonction ou en tant qu’attribut de paramètre.
Par défaut, les appels sur les descripteurs de contexte sont sérialisés, mais une application peut appeler RpcSsDontSerializeContext pour remplacer ce comportement par défaut. L’utilisation de l’attribut [context_handle_serialize] dans un fichier ACF garantit que les appels sur ce handle de contexte particulier seront sérialisés, même si l’application appelante a remplacé la sérialisation par défaut. Une routine d’exécution de contexte est facultative.
Cet attribut est disponible dans MIDL version 5.0.
Windows Server 2003 et Windows XP ou version ultérieure : Une seule interface peut prendre en charge les handles de contexte sérialisés et non sérialisés, ce qui permet à une méthode sur une interface d’accéder exclusivement à un handle de contexte (sérialisé), tandis que d’autres méthodes accèdent à ce handle de contexte en mode partagé (non sérialisé). Ces fonctionnalités d’accès sont comparables aux mécanismes de verrouillage en lecture/écriture ; les méthodes utilisant un handle de contexte sérialisé sont des utilisateurs exclusifs (writers), tandis que les méthodes utilisant un handle de contexte non sérialisé sont des utilisateurs partagés (lecteurs). Les méthodes qui détruisent ou modifient l’état d’un handle de contexte doivent être sérialisées. Les méthodes qui ne modifient pas l’état d’un handle de contexte, telles que celles qui lisent simplement à partir d’un handle de contexte, peuvent être nonsérialisées. Notez que les méthodes de création sont implicitement sérialisées.
Exemples
typedef [context_handle_serialize] PCONTEXT_HANDLE_TYPE;
HRESULT RemoteFunc([context_handle_serialize] pCxHandle);
Voir aussi