AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Betriebssysteme [Win7] Falsche Dateigröße von GetFileSize/Ex im system32
Thema durchsuchen
Ansicht
Themen-Optionen

[Win7] Falsche Dateigröße von GetFileSize/Ex im system32

Ein Thema von ErazerZ · begonnen am 28. Dez 2009 · letzter Beitrag vom 16. Feb 2010
Antwort Antwort
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#1

Re: [Win7] Falsche Dateigröße von GetFileSize/Ex im system32

  Alt 16. Feb 2010, 18:51
Ich bin heute mal über die API gestoßen die es einem ermöglicht das abzuschalten unter Win64 Bit.
Hier ist meine Funktion:


Code:
BOOL Enable64BitRedirection(BOOLEAN EnableRedirection)
{
   typedef BOOLEAN (WINAPI *LPF_Wow64EnableWow64FsRedirection)(BOOLEAN EnableRedirection);
   typedef BOOL (WINAPI *LPF_IsWow64Process) (__in HANDLE hProcess, __out PBOOL Wow64Process);

   BOOL Wow64Process;
   HMODULE hLib = LoadLibrary("kernel32.dll");

   LPF_IsWow64Process IsWow64Process = (LPF_IsWow64Process)GetProcAddress(hLib, "IsWow64Process");
   LPF_Wow64EnableWow64FsRedirection Wow64EnableWow64FsRedirection = (LPF_Wow64EnableWow64FsRedirection)GetProcAddress(hLib, "Wow64EnableWow64FsRedirection");

   if (IsWow64Process != NULL && Wow64EnableWow64FsRedirection != NULL)
   {
      if (IsWow64Process(GetCurrentProcess(), &Wow64Process) && Wow64Process)
      {
         // 64 bit process
         return Wow64EnableWow64FsRedirection(EnableRedirection);
      }
   }
   return FALSE;
}


DWORD getFileSize(LPCSTR FileName){
   LARGE_INTEGER lpSize = {};
   HANDLE hFile = CreateFileA(FileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0);
   if (hFile != INVALID_HANDLE_VALUE)
   {
      GetFileSizeEx(hFile, &lpSize);
      CloseHandle(hFile);
   }
   return lpSize.u.LowPart;
}


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
   DWORD filesize1, filesize2;
   char szOutput[200];
   filesize1 = getFileSize("c:\\windows\\system32\\notepad.exe");
   Enable64BitRedirection(FALSE);
   filesize2 = getFileSize("c:\\windows\\system32\\notepad.exe");
   wsprintfA(szOutput, "Size 1: %d bytes\nSize 2: %d bytes\n", filesize1, filesize2);
   MessageBox(0, szOutput, "Filesize", 0);
   return 0;
}
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz