attribut de sérialisation du _ handle de contexte _
L’attribut de [ handle de contexte de _ _ sérialisation ] de contexte 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 de [ _ _ sérialisation ] du handle de contexte 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 qu’il est défini dans le fichier IDL.
-
Parameter-ACF-attribute-List
-
Tous les autres attributs ACF qui s’appliquent au paramètre.
-
nom du paramètre
-
Nom du paramètre tel que défini dans le fichier IDL.
Remarques
L’attribut de [ _ _ sérialisation ] du handle de contexte 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 handles de contexte sont sérialisés, mais une application peut appeler RpcSsDontSerializeContext pour remplacer ce comportement par défaut. L’utilisation de l’attribut de [ _ _ sérialisation ] du handle de contexte 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’arrêt 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 qui utilisent un handle de contexte sérialisé sont des utilisateurs exclusifs (enregistreurs), tandis que les méthodes qui utilisent 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 les méthodes qui lisent simplement un handle de contexte, peuvent être non sé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);