DLL32 FUNCTION ReadFile;

Post Reply
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

DLL32 FUNCTION ReadFile;

Post by goosfancito »

Amigos,

Alguien tiene un ejemplo de como utilizar desde FWH la funcion:

DLL32 FUNCTION ReadFile;
( hFile AS LONG, ;
@lpBuffer AS LPSTR, ;
nNumberOfBytesToRead AS LONG, ;
@lpNumberOfBytesRead AS LONG, ;
@lpOverlapped AS LPSTR ) ; // OVERLAPPED
AS LONG PASCAL;
LIB "KERNEL32"

Gracias.

Especificamente necesito enviar una cadena por un handle.
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
jmartial
Posts: 457
Joined: Tue Mar 14, 2006 7:26 pm

Post by jmartial »

Hola,

No te entiendo muy bien, pero si quieres leer o escribir desde / a un fichero, existen las funciones de bajo nivel, fopen(), fread(), fread(), fclose(), etc. Y todas usan un handle devuelto por fopen() o fcreate()



Un Saludo,
Joaquín
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

Post by goosfancito »

hola,

Estoy tratando de enviar cadenas a traves de tuberias ( pipes ) con el comando CallNamedPipe, y una vez que se establece la comunicacion hay que utilizar
DLL32 FUNCTION ReadFile;
( hFile AS LONG, ;
@lpBuffer AS LPSTR, ;
nNumberOfBytesToRead AS LONG, ;
@lpNumberOfBytesRead AS LONG, ;
@lpOverlapped AS LPSTR ) ; // OVERLAPPED
AS LONG PASCAL;
LIB "KERNEL32"
Pero aparecen datos como: LPSTR, LONG y no se como traducirlos a FWH.
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
jmartial
Posts: 457
Joined: Tue Mar 14, 2006 7:26 pm

Post by jmartial »

Sería algo como,

hFile := fOpen() ó fCreate()
lpBuffer:= Space(255)
nNumberOfBytesToRead := 254
lpNumberOfBytesRead := 0
lpOverlapped := Space(255)


ReadFile( hFile , @lpBuffer, nNumberOfBytesToRead, @lpNumberOfBytesRead, @lpOverlapped )


lpNumberOfBytesRead -> Nº de Bytes que ha leído si <> de nNumberOfBytesToRead fin del fichero a leer


Un Saludo,
Joaquín
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Gustavo,

Los parámetros LPSTR no hay que pasarlos, ni declararlos, por referencia. Ya que un LPSTR por definición es un puntero (la dirección) a una cadena.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

Post by goosfancito »

Antonio,

Entonces tomando el ejmplo del amigo quedaría asi?:

Code: Select all

hFile := // Acá crearia un handle, que en mi caso es create...

lpBuffer:= Space(255) 
nNumberOfBytesToRead := 254 
lpNumberOfBytesRead := 0 
lpOverlapped := Space(255) 


ReadFile( hFile ,
              lpBuffer, ;
              nNumberOfBytesToRead, ;
              lpNumberOfBytesRead, ;
              lpOverlapped )
Es correcto?
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Gustavo,

lpNumberOfBytesRead tienes que definirlo y pasarlo por referencia porque es un puntero a un long (la dirección en donde está un número long). Lo demás parece estar bien.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply