Condividi tramite


Attributo pipe

Il costruttore del tipo di pipe consente di trasmettere un flusso aperto di dati tipizzato in una chiamata di procedura remota.

typedef pipe element-type pipe-declarator;

Parametri

element-type

Definisce le dimensioni di un singolo elemento nel buffer di trasferimento. Il tipo di elemento può essere un tipo di base, predefined_type, struct, enumerazione 32b o identificatore di tipo. Diverse restrizioni si applicano a element_types, come descritto in Osservazioni, di seguito.

dichiaratore pipe

Specifica uno o più identificatori o puntatori agli identificatori. Separare più dichiaratori con virgole.

Commenti

È possibile usare il costruttore del tipo di pipe per trasmettere i dati in entrambe le direzioni. Un parametro pipe [in] consente al server di eseguire il pull del flusso di dati dal client durante una chiamata di procedura remota. Un parametro pipe [out] consente al server di eseguire il push del flusso di dati nel client. Vengono fornite le routine lato client per eseguire il push e il pull del flusso di dati e allocare un buffer globale per i dati. Le routine stub client e server esezionano i dati di marshalling e unmarshal e passano un riferimento al buffer all'applicazione.

Le restrizioni seguenti si applicano alle pipe:

  • Un elemento pipe non può essere o contenere un puntatore, una matrice conforme o variabile, un handle o un handle di contesto. Inoltre, nell'implementazione Microsoft delle pipe, un elemento pipe non può essere o contenere un'unione, un'enumerazione 16b o un __int3264.
  • Non è possibile applicare gli attributi [transmit_as], [represent_as], [wire_marshal] o [user_marshal] a un tipo pipe o al tipo di elemento.
  • Un tipo pipe non può essere un membro di una struttura o di un'unione, della destinazione di un puntatore o del tipo di base di una matrice.
  • Un tipo di dati dichiarato come tipo di pipe può essere usato solo come parametro di una chiamata remota.
  • È possibile passare un parametro pipe in entrambe le direzioni in base al valore o al puntatore ([ref] ). Non è tuttavia possibile applicare l'attributo [ptr] a una pipe passata per riferimento. Non è possibile specificare un parametro pipe con un [univoco] o un puntatore completo, indipendentemente dalla direzione.
  • Non è possibile usare pipe nelle interfacce [oggetto].
  • Non è possibile applicare l'attributo [idempotente] a una routine con un parametro pipe.
  • Non è possibile usare gli attributi di serializzazione, [encode] e [decode] con pipe.
  • Non è possibile usare handle automatici, per impostazione predefinita o con l'attributo [auto_handle] con pipe.

Nota

Il compilatore MIDL supporta solo pipe in modalità /Oif .

 

Per altre informazioni sull'implementazione di routine con parametri pipe, vedere Pipe nella Guida e informazioni di riferimento per programmatori RPC.

Esempi

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

Vedere anche

auto_handle

Tipi di base MIDL

decode

Codificare

Enum

idempotent

Pollici

Oggetto

Cambio

Ptr

Ref

represent_as

Struct

transmit_as

Unico

user_marshal

wire_marshal