attribut de canal

Le constructeur de type pipe permet de transmettre un flux ouvert de données typées à travers un appel de procédure distante.

typedef pipe element-type pipe-declarator;

Paramètres

type d’élément

Définit la taille d’un élément unique dans la mémoire tampon de transfert. Le type d' élément peut être un type de base, un type prédéfini _ , un struct, une énumération 32bou un identificateur de type. Plusieurs restrictions s’appliquent aux _ types d’éléments, comme décrit dans la section Notes ci-dessous.

canal-déclarateur

Spécifie un ou plusieurs identificateurs ou pointeurs vers des identificateurs. Séparez plusieurs déclarateurs par des virgules.

Notes

Vous pouvez utiliser le constructeur de type pipe pour transmettre des données dans les deux sens. Un [ ] paramètre in pipe permet au serveur d’extraire le flux de données du client pendant un appel de procédure distante. Un [ paramètre de sortie de ] canal permet au serveur d’envoyer à nouveau le flux de données au client. Vous fournissez les routines côté client pour l’envoi et l’extraction du flux de données et pour allouer une mémoire tampon globale pour les données. Les routines de stub client et serveur marshalent et démarshalent les données et transmettent une référence à la mémoire tampon à l’application.

Les restrictions suivantes s’appliquent aux canaux :

  • Un élément pipe ne peut pas être ou contenir un pointeur, un tableau conforme ou variable, un handle ou un handle de contexte. En outre, dans l’implémentation Microsoft des canaux, un élément pipe ne peut pas être ou contenir une Union, une énumération 16Bou un _ _ int3264.
  • Vous ne pouvez pas appliquer les [ attributs de transmission _ en tant que ] , de marshaling en tant que, [ _ ] [ de _ marshaling de câbleou de ] [ _ Marshal utilisateur ] à un type de canal ou au type d’élément.
  • Un type de canal ne peut pas être un membre d’une structure ou d’une Union, la cible d’un pointeur ou le type de base d’un tableau.
  • Un type de données déclaré comme étant un type de canal ne peut être utilisé qu’en tant que paramètre d’un appel distant.
  • Vous pouvez passer un paramètre de canal dans l’une ou l’autre direction par valeur ou par référence ( [ pointeur ref ] ). Toutefois, vous ne pouvez pas appliquer l' [ ] attribut PTR à un canal qui est passé par référence. Vous ne pouvez pas spécifier un paramètre de canal avec un [ ] pointeur unique ou complet, quelle que soit la direction.
  • Vous ne pouvez pas utiliser de canaux dans des interfaces d' [ objet ] .
  • Vous ne pouvez pas appliquer l' [ ] attribut idempotent à une routine qui a un paramètre pipe.
  • Vous ne pouvez pas utiliser les attributs de sérialisation, [ Encoder ] et [ décoder ] avec des canaux.
  • Vous ne pouvez pas utiliser de handles automatiques, par défaut, ou avec l’attribut de [ _ gestion automatique ] , avec des canaux.

Notes

Le compilateur MIDL prend en charge les canaux en mode /OIF uniquement.

Pour plus d’informations sur l’implémentation des routines avec des paramètres de canal, consultez canaux dans le Guide du programmeur RPC et référence.

Exemples

typedef pipe unsigned char UCHAR_PIPE1, UCHAR_PIPE2;
 
//SIMPLE_STRUCT defined elsewhere
typedef pipe SIMPLE_STRUCT SIMPLE_STRUCT_PIPE;

Voir aussi

_handle automatique

Types de base MIDL

décoder

contraire

variables

idempotent

dans

object

à

ptr

ref

représenter _ comme

modélis

transmettre _ en tant que

unique

Marshal d’utilisateur _

Marshal de câble _