Page 1 of 1
DLL32 FUNCTION ReadFile;
Posted: Tue Jul 11, 2006 12:19 pm
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.
Posted: Tue Jul 11, 2006 5:50 pm
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
Posted: Tue Jul 11, 2006 6:05 pm
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.
Posted: Tue Jul 11, 2006 6:31 pm
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
Posted: Tue Jul 11, 2006 8:53 pm
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.
Posted: Tue Jul 11, 2006 8:58 pm
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?
Posted: Tue Jul 11, 2006 10:26 pm
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.