attribut message

L’attribut [message] indique que l’appel de procédure distante doit être traité comme un message du client vers le serveur.

[message, optional-attribute-list] void function-name(
    [in, optional-parameter-attributes] param-name,. . .);

Paramètres

optional-attribute-list

Autres attributs qui s’appliquent à la fonction. Seuls les attributs [local], [nocode], [code] et [optimize] peuvent être utilisés avec l’attribut [message].

nom de la fonction

Nom de la fonction tel que défini dans le fichier IDL.

optional-parameter-attributes

Zéro ou plusieurs attributs MIDL qui seront appliqués au paramètre.

param-name

Nom du paramètre tel que défini dans le fichier IDL.

Notes

En tant que messages du client, les appels de procédure distante avec l’attribut [message] sont remis au serveur de manière asynchrone via le ncadg_mq transport de mise en file d’attente de message. Vous pouvez indiquer la messagerie en mode synchrone en spécifiant le protocole de transport ncadg_mq sans utiliser l’attribut [message].

En spécifiant la messagerie en mode asynchrone, l’attribut [message] permet au client d’effectuer l’appel de procédure distante et de retourner immédiatement, même lorsque l’application serveur ne répond pas. Si le serveur cible n’est pas disponible, l’appel est stocké jusqu’à ce que le serveur devienne disponible.

En outre, la messagerie en mode asynchrone vous permet de contrôler les propriétés de file d’attente de messages de la file d’attente de réception pour le serveur. Consultez RpcBindingSetOption pour plus d’informations sur la sélection de la qualité de service, de la priorité de l’appel et de la durée de vie des appels pour le processus serveur.

Les restrictions suivantes s’appliquent également à l’attribut [message] :

  • Microsoft Message Queuing doit être implémenté dans les systèmes client et serveur et les systèmes doivent être visibles les uns par les autres en fonction de l’étendue de l’installation de la file d’attente des messages.
  • La liaison doit utiliser des points de terminaison connus et le protocole de transport ncadg_mq .
  • La fonction ne peut pas contenir de paramètres de sortie ou un type de retour autre que void. Notez que cette dernière restriction rend l’attribut [message] inadapté aux méthodes d’interface COM (objet), à l’heure actuelle. La prochaine version de MIDL permettra aux fonctions [message] de retourner error_status_t ou HRESULT.
  • Toute interface qui contient au moins un appel [message] doit être inscrite en appelant RpcServerRegisterIf ou RpcServerRegisterIfEx avant d’appeler RpcServerUseProtseqEpEx(ncadg_mq). Sinon, les appels qui attendaient dans la file d’attente pour le serveur seront lus avant l’inscription de l’interface et les appels échoueront.

Exemples

[message] void DisplayString(
    [in, string] char * p1);
 
[message] void VarDataArray(
    [in, size_is(iSize)] ARRAY_TYPE lpMyArray,
    [in] int iSize,
    [in] unsigned long ulChksum);

Voir aussi

Code

Local

ncadg_mq

nocode

Optimiser

RPC Message Queuing

RpcBindingSetOption

RpcBindingInqOption

void