[Delphi] PEFileSize function

Iniciado por Khronos14, 25 Enero 2011, 17:52 PM

0 Miembros y 1 Visitante están viendo este tema.

Khronos14

Código (delphi) [Seleccionar]

(*
* PEFileSize function, inspired by The Swash
* by Khronos
*)

function PEFileSize(FileName: string): Cardinal;
var
i: integer;
FileStream: TFileStream;
IDH: IMAGE_DOS_HEADER;
INH: IMAGE_NT_HEADERS;
ISH: IMAGE_SECTION_HEADER;
begin
result:= 0;
  try
    FileStream:= TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
    FileStream.Read(IDH, SizeOf(IDH));
    if IDH.e_magic = IMAGE_DOS_SIGNATURE then
      begin
        FileStream.Seek(IDH._lfanew, 0);
        FileStream.Read(INH, SizeOf(INH));
        if INH.Signature = IMAGE_NT_SIGNATURE then
          begin
            for I := 0 to INH.FileHeader.NumberOfSections - 1 do
              begin
                FileStream.Seek(IDH._lfanew + SizeOf(INH) + SizeOf(ISH) * i, 0);
                FileStream.Read(ISH, SizeOf(ISH));
                result:= result + ISH.SizeOfRawData;
              end;
            result:= result + INH.OptionalHeader.SizeOfHeaders;
          end;
      end;
  finally
    FileStream.Free;
  end;
end;


Saludos.

The Swash

Muy bien Khronos, gracias por la traducción y me alegra que te aya gustado.
;D