Domanda

Sto tentando di convertire un progetto MSVC da VS 2005 a VS 2008. Contiene un file IDL che genera un'intestazione e gli stub utilizzati per RPC. Il progetto VS 2005 utilizza MIDL.exe versione 6.00.0366. Il progetto VS 2008 utilizza MIDL.exe versione 7.00.0500.

Ecco il problema: MIDL v6 genera il seguente prototipo da implementare nel mio codice server:

HRESULT PRC_Function(UINT input);

MIDL v7 con la stessa riga di comando genera questo prototipo:

HRESULT RPC_Function(handle_t IDL_handle, UINT input);

Non voglio passare attraverso e aggiungere il parametro handle_t a tutte le mie implementazioni esistenti. (Inoltre ho ancora bisogno delle implementazioni per compilare con VS 2005 ancora per un po '.)

Domanda: Come posso ottenere MIDL.exe v7 per l'output degli stessi prototipi di server RPC della v6?

È stato utile?

Soluzione

Sembra che io possa rispondere alla mia domanda ...

MIDL v6 sembra impostare automaticamente automaticamente il tipo di handle su auto_handle per i prototipi del server. MIDL v7 no, quindi la soluzione è utilizzare un file Server.acl con l'impostazione auto_handle al suo interno. Ciò genera un file Server.h con prototipi di funzione identici tra MIDL v6 e v7.

Tuttavia, genera anche un avviso che indica che "quotazione_auto" " è stato ammortizzato. Invece ho usato implicit_handle (handle_t IDL_handle).

Peccato che questo sito non mi dia badge per aver risposto alle mie domande. Né posso contrassegnare la mia risposta come la risposta corretta.

Altri suggerimenti

Il handle_t IDL_handle è per l'handle di associazione RPC esplicito. Sul lato server, puoi fare cose interessanti con esso come tirare il token del client chiamante per la rappresentazione attraverso le varie funzioni RPC, ma se non hai bisogno di usarlo, va bene impostarlo come parametro non referenziato (UNREFERENCED_PARAMETER (IDL_handle);). Sembra che gli handle di associazione impliciti siano ora obsoleti.

Sul lato client, si utilizza l'handle di associazione che si ottiene quando si esegue il binding al server RPC per il parametro IDL_handle.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top