CALLBACK i zmienna globalna

0

Mam w bibliotece DLL napisanej w WinAPI i C++ funkcję typu CALLBACK która jest funkcją służącą do obsługi Hook'a dla klawiatury. Ma ona postać

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);

W bibliotece definiuję sobie teraz dowolną zmienną np.

int a;

W zwykłej funkcji w bibliotece jak się odwołuję do zmiennej, zostaje zwrócona poprawna wartość.
Natomiast jeżeli do zmiennej a odwołam się w funkcji typu CALLBACK, zawsze zostaje mi zwrócona wartość 0. Jak zrobić, abym we wspomnianej funkcji mógł odczytać wartość zmiennej globalnej w bibliotece DLL w której się ona znajduje wraz z funkcją?

0

(Nie)dziala prawidlowo. :)

Callback jest wywolywany w kontekscie jakiegos procesu systemowego, a nie Twojej aplikacji.
Poniewaz jedna DLL moze byc wspoluzytkowana przez rozne procesy, kazdy
proces otrzymuje swoja wlasna pule zmiennych globalnych. Procesy nie moga
wymieniac sie danymi za pomoca zmiennych globalnych w DLL. Zeby to obejsc, mozna uzyc plikow odwzorowywanych w pamiec, czy cos takiego,
ale nie orientuje sie w tym dokladnie, bo nigdy tego nie robilem. Oczywiscie najprosciej - zapisywac dane w pliku. Wbrew pozorom
nie bedzie to wcale takie wolne - system buforuje zapis/odczyt w pamieci.

1 użytkowników online, w tym zalogowanych: 0, gości: 1