Opzione /Oi
Le opzioni /Oi e /Oic indirizzano il compilatore MIDL all'uso di un metodo di marshalling completamente interpretato. L'opzione /Oicf offre miglioramenti aggiuntivi per le prestazioni.
midl /{Oi | Oic | Oif | Oicf}
-
Oi
-
Specifica il metodo completamente interpretato per il marshalling del codice stub passato tra client e server.
Nota
Questa opzione è obsoleta. È consigliabile usare l'opzione /Oicf al suo posto.
-
Oic
-
Specifica il metodo proxy senza codice di marshalling che fornisce tutte le funzionalità di /Oi e riduce ulteriormente le dimensioni del codice stub client per le interfacce oggetto.
Nota
Questa opzione è obsoleta. È consigliabile usare l'opzione /Oicf al suo posto.
-
Oif o Oicf
-
Specifica il metodo proxy senza codice di marshalling che include tutte le funzionalità fornite da /Oi e /Oic , ma usa un nuovo interprete (stringhe di formato rapido) che offre prestazioni migliori rispetto a /Oi o /Oic. Questa opzione include miglioramenti rpc recenti ed è consigliata per gli scenari RPC moderni.
Si notino le restrizioni relative alle piattaforme di supporto.
Il compilatore MIDL 3.0 fornisce due metodi per il marshalling del codice: completamente interpretato ( /Oi, /Oic e /Oicf) e modalità mista ( /Os). A partire dalla versione MIDL 6.0.359, il compilatore MIDL genera /Oicf /robust stub per impostazione predefinita. Alcune funzionalità del linguaggio non sono supportate in alcune modalità. In questo caso, il compilatore passa automaticamente alla modalità appropriata e genera un avviso.
Se le prestazioni sono un problema, il metodo in modalità mista ( /Os) può essere l'approccio migliore. In questa modalità, il compilatore sceglie di effettuare il marshalling di alcuni parametri inline negli stub generati. Sebbene ciò comporti dimensioni stub maggiori, offre prestazioni migliori.
Il metodo completamente interpretato effettua il marshalling dei dati completamente offline. Ciò riduce notevolmente le dimensioni del codice stub, ma comporta una riduzione delle prestazioni. Inoltre, con il metodo completamente interpretato, è previsto un limite di 16 parametri per ogni routine. Qualsiasi routine contenente più di 16 parametri verrà elaborata automaticamente in modalità /Os . Tra le modalità interpretate, /Oicf offre le migliori prestazioni e /Oi offre la migliore compatibilità con le versioni precedenti.
È possibile usare l'opzione /Oif se l'applicazione usa funzionalità MIDL introdotte con MIDL 3.0, ad esempio gli attributi [wire_marshal] e [user_marshal]. Se l'applicazione usa pipe , è necessario usare l'opzione /Oif ; se si specifica un'altra modalità, il compilatore MIDL passerà a /Oif.
Per ottimizzare la modalità di marshalling del codice stub, Microsoft RPC fornisce un attributo ACF [Optimize]. Questo attributo viene usato come attributo di interfaccia o attributo dell'operazione per selezionare la modalità di marshalling per singole interfacce o per singole operazioni.
Gli stub generati dal compilatore MIDL nel metodo interpretato tramite le opzioni /Oi, /Oic o /Oif devono essere compilati come stdcall o una routine cdecl durante la compilazione C. Una convenzione di chiamata PASCAL o Fastcall non funzionerà. Inoltre, lo stub del server deve essere compilato come stdcall.
midl /Oi filename.idl
midl /Oic filename.idl
midl /Oif filename.idl