Partager via


attribut handle

L’attribut [handle] spécifie un type de handle défini par l’utilisateur ou « personnalisé ».

typedef [handle] typename;  
handle_t __RPC_USER typename_bind (typename);
void __RPC_USER typename_unbind (typename, handle_t);

Paramètres

Typename

Spécifie le nom du type binding-handle défini par l’utilisateur.

Notes

Les handles définis par l’utilisateur permettent aux développeurs de concevoir des handles qui sont significatifs pour l’application. Un handle défini par l’utilisateur ne peut être défini que dans une déclaration de type, pas dans un déclarateur de fonction.

Un paramètre d’un type défini par l’attribut [handle] est utilisé pour déterminer la liaison pour l’appel et est transmis à la procédure appelée.

L’utilisateur doit fournir des routines de liaison et de dissociation pour effectuer la conversion entre les types de handle primitifs et définis par l’utilisateur. Étant donné un handle défini par l’utilisateur de type typename, l’utilisateur doit fournir les routines typename_bind et typename_unbind. Par exemple, si le type de handle défini par l’utilisateur est nommé MYHANDLE, les routines sont nommées MYHANDLE_bind et MYHANDLE_unbind.

Si elle réussit, la routine typename_bind doit retourner un handle de liaison primitive valide. En cas d’échec, la routine doit retourner une valeur NULL. Si la routine retourne NULL, la routine typename_unbind n’est pas appelée. Si la routine de liaison retourne un handle de liaison non valide différent de NULL, le comportement du stub n’est pas défini.

Lorsque la procédure distante a un handle défini par l’utilisateur comme paramètre ou comme handle implicite, les stubs du client appellent la routine de liaison avant d’appeler la procédure distante. Les stubs du client appellent la routine de dissociation après l’appel distant.

Dans DCE IDL, un paramètre avec l’attribut [handle] doit apparaître comme premier paramètre de la liste d’arguments de procédure distante. Les paramètres suivants, y compris d’autres attributs [handle], sont traités comme des paramètres ordinaires. Microsoft prend en charge une extension à DCE IDL qui permet au paramètre [handle] défini par l’utilisateur d’apparaître dans des positions autres que le premier paramètre.

Exemples

typedef [handle] struct 
{ 
    char machine[8]; 
    char nmpipe[256]; 
} h_service; 
 
handle_t __RPC_USER h_service_bind(h_service); 
void __RPC_USER h_service_unbind(h_service, handle_t);

Voir aussi

Liaison et handles

Fichier de définition d’interface (IDL)

implicit_handle

Typedef