Leggere in inglese

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