Jest istniejąca funkcja API, które nie tylko pozwalają wtyczki (DLL), aby otrzymać trzy parametry i wykonać pewne działania:Jak zmodyfikować zawartość oryginalnej zmiennej przekazywanej przez wartość?
int ProcessMe(int nCommand, unsigned int wParam, long lParam);
Teraz z głównego programu (exe), chciałby przekazać dwie zmienne wtyczkę i wymagają wtyczki do modyfikowania ich zawartości, a program główny odczyta je ponownie, aby wykonać pewne zadanie.
Moje pytanie brzmi, czy z powyższej funkcji mogę to zrobić, bez zmiany parametrów funkcji?
przykład:
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;
}
Nie. Musisz podać referencję, której nie możesz zrobić bez zmiany interfejsu API. Musisz albo ponownie wdrożyć interfejs za pomocą wskaźników, albo nauczyć się żyć bez niego. – tbert
Niestety nie mam uprawnień do zmiany interfejsu, ponieważ obecnie istnieje wiele innych bibliotek DLL uruchomionych z programem exe przy użyciu podobnego interfejsu .... obawiam się zgodności ze starszymi wersjami :( – wengseng
To nie ma sensu. Funkcja wygrała ' t oczekiwać użycia parametrów do przechowywania wyników, nie są one przeznaczone do wyprowadzania, musisz zadeklarować nową funkcję –