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;
-
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.
È 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.
typedef pipe unsigned char UCHAR_PIPE1, UCHAR_PIPE2;
//SIMPLE_STRUCT defined elsewhere
typedef pipe SIMPLE_STRUCT SIMPLE_STRUCT_PIPE;