attribut context_handle_noserialize
L’attribut ACF [context_handle_noserialize] garantit qu’un handle de contexte ne sera jamais sérialisé, quel que soit le comportement par défaut de l’application.
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 );
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] dans le fichier IDL.
-
function-acf-attribute-list
-
Tous les attributs ACF supplémentaires qui s’appliquent à la fonction.
-
nom de la fonction
-
Nom de la fonction tel que défini dans le fichier IDL.
-
parameter-acf-attribute-list
-
Tout autre attribut ACF qui s’applique au paramètre.
-
param-name
-
Nom du paramètre tel que défini dans le fichier IDL.
Notes
L’attribut [context_handle] identifie un handle de liaison qui gère le contexte ou les informations d’état sur le serveur entre les appels de procédure distante. L’attribut peut apparaître sous la forme d’un attribut de type IDL typedef , d’un attribut de type de fonction de retour ou d’attribut de paramètre.
Par défaut, les appels sur les handles de contexte sont sérialisés. Une application peut appeler RpcSsDontSerializeContext pour remplacer ce comportement par défaut. L’utilisation de l’attribut [context_handle] dans un fichier ACF garantit que les appels sur ce handle de contexte particulier ne seront pas sérialisés, quel que soit le comportement de l’application appelante. La fourniture d’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 interface unique peut prendre en charge des 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 (rédacteurs), 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 non utilisées. Notez que les méthodes de création sont implicitement sérialisées.
Exemples
typedef [context_handle_noserialize] PCONTEXT_HANDLE_TYPE;
HRESULT RemoteFunc([context_handle_noserialize] pCxHandle);
Voir aussi