Ver Mensaje Individual
  #3  
Antiguo 19-08-2013
Jais Jais is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 12
Reputación: 0
Jais Va por buen camino
ok, lo siento Casimiro Notevi. Aqui pongo el post con el estilo correcto.

Hola

Yo tengo este codigo y me funciona bien:

Código Delphi [-]
var
  Fichero: THandle;
  Tamano: Int64;
  c: Cardinal;
  BufferTXT: Pointer;

Fichero := CreateFile(PAnsiChar('C:\archivo.txt'), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
if Fichero <> INVALID_HANDLE_VALUE then
  begin
    Tamano := GetFileSize(Fichero, nil);
    BufferTXT := VirtualAlloc(nil, Tamano, MEM_COMMIT, PAGE_READWRITE);
    SetFilePointer(Fichero, 0, nil, FILE_BEGIN);
    ReadFile(Fichero, BufferTXT^, Tamano, c, nil);
  end;
  CloseHandle(Fichero);

Ahora lo que quiero hacer es "redefinir las funciones GetFileSize y ReadFile" y utilizar las mias, es decir(Para el caso de GetFileSize):

Código Delphi [-]
type
TGetFileSiz: Function(hFile: Cardinal;lpFileSizeHigh:Pointer): Cardinal; StdCall;

Ahora mediante GetProcAddress(LoadLibrary('Kernel32.dll'), 'GetFileSize') obtengo la direccion a GetFileSize y de este modo puedo utilizar la mia propia.

Pero el problema esta cuando quiero "redefinir ReadFile" ya que segun esta API los tipos de sus parametros son:


Código Delphi [-]
hFile:Cardinal
lpBuffer: UnTyped
nNumberOfBytesToRead: Cardinal
lpNumberOfBytesRead:Cardinal
lpOverlapped: POverLapped

Como pueden ver el 2º parametro pone: UnTyped y ahi es donde tengo el problema.

¿Que tipo puedo ponerle al redefinir la api al 2º parametro(lpBufffer: UnTyped) para que el codigo de arriba me siga funcionando y sin cambiar el codigo de arriba?

Espero me haya explicado bien.

Muchisimas gracias de antemano!!

Saludos
Responder Con Cita