Tworzenie pliku wewnatrz DLL

0

Witam,
mam problem z tworzeniem i zapisem pliku wewnatrz procedury umieszczonej w DLLce.
Utworzylem globalnego hooka w dll, w jego procedurze chcialem stworzyc plik, ponizej kod:

extern "C" __declspec(dllexport) LRESULT CALLBACK KeyProc(int code, WPARAM wParam, LPARAM lParam) 
{

	
  	if(code >=0 && code == HC_ACTION)
	  {

			Bufor =  "123";
	                dwRozmiar = znag.length()+1;
                        hPlik = CreateFile( "test.txt", GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS,FILE_FLAG_RANDOM_ACCESS, NULL );
			if( !WriteFile( hPlik,Bufor, dwRozmiar, & dwZapisane, NULL ) ) {
		        MessageBox( NULL, "Błąd zapisu do pliku", "Dupa blada!", MB_ICONEXCLAMATION );
			
			CloseHandle( hPlik ); // Zamknij plik
			  	
	  }	
   
   return CallNextHookEx(HookHandle, code, wParam, lParam);
} 

Wiem, ze problem tkwi w dzieleniu pamieci, ale nie wiem jak sie za to zabrac, wiec prosilbym o jakies wskazowki.

Z gory dziekuje i pozdrawiam

1

A nie łatwiej będzie użyć do tego fstreama? Albo chociażby funkcji z C? (fopen, fwrite, fclose).

0
  1. czemu zapisujesz o jeden znak więcej?
  2. czy wiesz gdzie utworzy ci plik, skoro nie podajesz pełnej ścieżki? I czy masz uprawnienia, aby tworzyć tam plik?
  3. co zwraca CreateFile?
0

Probowalem juz zarowno z fstreamem jak i klasycznym C. Szkopul w tym, ze wewnatrz biblioteki z procedury hakowej nie moge w zaden sposob nic zapisac do pliku, ani nawet utworzyc pliku. Zrobilem w dllce funkcje zapisujaca, z aplikacji do ktorej zaladowalem ta DLL'ke normalnie zapisuje ale kiedy wywolam funkcje wewnatrz CALLBACKa haka jusz nic nie idzie. Moge w ten sposob wyswietlic MessageBoxa, ale utworzyc czy zapisac pliku juz nie.

Odpowiadajac na pytania

  1. To fragment kodu, ktory testowalem juz na wiele roznorakie sposoby, stad pozostal tam 1 znak wiecej,
  2. W folderze gdzie znajduja sie moje *exe z dllka, funkcja tworzaca i zapisujaca do pliku wewnatrz dll dziala, nie moge jedynie zapisac jej po zdarzeniu w procedurze hakowej, wiec nie jest to wina braku uprawnien,
  3. Nie sprawdzalem jeszcze tego, postaram sie to zrobic i dam znac

Dziekuje i pozdrawiam!

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