Handles de liaison automatique

Les handles de liaison automatique sont utiles lorsque l’application ne nécessite pas de serveur spécifique et lorsqu’elle n’a pas besoin de conserver d’informations d’état entre le client et le serveur. Lorsque vous utilisez un handle de liaison automatique, vous n’avez pas besoin d’écrire de code d’application cliente pour traiter la liaison et les handles. Vous spécifiez simplement l’utilisation du handle de liaison automatique dans le fichier de configuration de l’application (ACF). Le stub définit ensuite le handle et gère la liaison.

Par exemple, une opération d’horodatage peut être implémentée à l’aide d’un handle automatique. Cela n’a aucune différence pour l’application cliente que le serveur lui fournit l’horodatage, car il peut accepter l’heure de n’importe quel serveur disponible.

Notes

Les handles automatiques ne sont pas pris en charge pour la plateforme Macintosh.

 

Vous spécifiez l’utilisation de handles automatiques en incluant l’attribut [auto_handle] dans l’ACF. L’exemple d’horodatage utilise l’ACF suivant :

/* ACF file */
[
  auto_handle
]
interface autoh
{
}

Lorsque le fichier ACF n’inclut aucun autre attribut handle et que les procédures distantes n’utilisent pas de handles explicites, le compilateur MIDL utilise des handles automatiques par défaut. Il utilise également des handles automatiques comme valeur par défaut lorsque l’ACF n’est pas présent.

Les procédures distantes sont spécifiées dans le fichier IDL. Le handle automatique ne doit pas apparaître en tant qu’argument de la procédure distante. Par exemple :

/* IDL file */
[ 
  uuid (6B29FC40-CA47-1067-B31D-00DD010662DA),
  version(1.0),
  pointer_default(unique)
]
interface autoh
{
  void GetTime([out] long * time);
  void Shutdown(void);
}

L’avantage du handle automatique est que le développeur n’a pas besoin d’écrire de code pour gérer le handle ; les stubs gèrent automatiquement la liaison. Cela diffère sensiblement de l’exemple Hello, World, où le client gère le handle primitif implicite défini dans l’ACF et doit appeler plusieurs fonctions d’exécution pour établir le handle de liaison.