C'è una funzione API esistenti che non consentono solo il plugin (DLL) per ricevere tre parametri ed eseguire qualche azione:Come modificare il contenuto della variabile originale che viene passato per valore?
int ProcessMe(int nCommand, unsigned int wParam, long lParam);
Ora, dal programma principale (exe), vorrebbe passare due variabili per il plugin, e richiede il plugin per modificare il loro contenuto, e il programma principale leggerà di nuovo, per eseguire alcune attività.
La mia domanda è, dalla funzione sopra, posso eseguire questo, senza modificare i parametri di funzione?
Esempio:
int ProcessMe(int nCommand, unsigned int wParam, long lParam)
{
// modify the parameters//
return 0;
}
int main()
{
BOOL bSave = TRUE;
int nOption = 0;
ProcessMe(0, (unsigned int)(&bSave), (long)(&nOption));
if(FALSE==bSave)
printf("bSave is modified!");
return 1;
}
No. È necessario passare per riferimento, cosa che non si può fare senza modificare l'API. Dovrai reimplementare l'interfaccia con i puntatori o imparare a vivere senza. – tbert
Purtroppo non ho il permesso di cambiare l'interfaccia, dato che attualmente ci sono molte altre DLL in esecuzione con l'exe che usa l'interfaccia simile .... preoccupazione per la compatibilità con le versioni precedenti per me :( – wengseng
Questo non ha senso. Ci si aspetta di usare i parametri per memorizzare i risultati Non sono per l'output È necessario dichiarare una nuova funzione –