attribut de rappel
L’attribut [ callback ] déclare une fonction de rappel statique qui existe du côté client de l’application distribuée. Les fonctions de rappel permettent au serveur d’exécuter du code sur le client.
[callback [ , function-attr-list] ] type-specifier [ptr-declarator] function-name(
[ [attribute-list] ] type-specifier [declarator]
, ...);
Paramètres
-
function-attr-List
-
Spécifie zéro, un ou plusieurs attributs qui s’appliquent à la fonction. Les attributs de fonction valides sont [ local ] ; l’attribut de pointeur [ ref ] , [ unique ] ou [ ptr ] ; et les attributs d’utilisation [ chaîne ] , [ Ignorer ] et [ _ handle de contexte ] . Séparez plusieurs attributs par des virgules.
-
spécificateur de type
-
Spécifie un _ type de base, un struct, une Union, un type enum ou un identificateur de type. Une spécification de stockage facultative peut précéder le type-specifier.
-
ptr-déclarateur
-
Spécifie zéro ou plusieurs déclarateurs de pointeur. Un déclarateur de pointeur est le même que le déclarateur de pointeur utilisé dans C ; elle est construite à partir de l' * indicateur, de modificateurs tels que Far et de l’identificateur const.
-
nom de fonction
-
Spécifie le nom de la procédure distante.
-
liste d’attributs
-
Spécifie zéro, un ou plusieurs attributs directionnels, attributs de champ, attributs d’utilisation et attributs de pointeur appropriés pour le type de paramètre spécifié. Séparez plusieurs attributs par des virgules.
-
declarator
-
Spécifie un déclarateur C standard, comme des identificateurs, des déclarateurs de pointeurs et des déclarateurs de tableau. Pour plus d’informations, consultez tableau et Sized-Pointer attributs, tableaux, tableaux et pointeurs. L’identificateur de nom de paramètre est facultatif.
Notes
La fonction de [ rappel ] est utile lorsque le serveur doit obtenir des informations à partir du client. si les applications serveur étaient prises en charge sur Windows 3. x, le serveur peut passer un appel à une procédure distante sur le Windows 3. x Server pour obtenir les informations nécessaires. La fonction de rappel remplit la même fonction et permet au serveur d’interroger le client à la recherche d’informations dans le contexte de l’appel d’origine.
Les rappels sont des cas spéciaux d’appels distants qui s’exécutent dans le cadre d’un thread unique. Un rappel est émis dans le contexte d’un appel distant. Toute procédure distante définie dans le cadre de la même interface que la fonction de rappel statique peut appeler la fonction de rappel.
Il est important de noter qu’il n' [ est pas recommandé d’utiliser le rappel ] dans la programmation multithread. En tant que fonction de programmation à thread unique, elle n’est pas conçue pour prendre en charge les demandes de sécurité fournies par un environnement multithread.
La fonction RpcCancelThread ne peut pas être utilisée pour annuler un appel qui peut distribuer un rappel statique. Si un appel de procédure distante particulier n’entraîne jamais de rappel, il peut être annulé. Dans le cas contraire, un appel peut être annulé uniquement s’il peut être garanti qu’un rappel n’a pas été émis.
Seules les séquences orientées connexion et de protocole local prennent en charge l’attribut de rappel. La taille des [ données sortantes ] pour les rappels sur la séquence de protocole local est limitée à 150 octets. Si une interface RPC utilise une séquence de protocole sans connexion (datagramme), les appels aux procédures avec l’attribut de rappel échouent.
Les handles ne peuvent pas être utilisés en tant que paramètres dans les fonctions de rappel. Étant donné que les rappels s’exécutent toujours dans le contexte d’un appel, le handle de liaison utilisé par le client pour effectuer l’appel au serveur est également utilisé comme handle de liaison du serveur au client.
Les rappels peuvent être imbriqués à n’importe quelle profondeur.
Exemples
[callback] HRESULT DisplayString([in, string] char * p1);