DLL32 FUNCTION ReadFile;

DLL32 FUNCTION ReadFile;

Postby goosfancito » Tue Jul 11, 2006 12:19 pm

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.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Postby jmartial » Tue Jul 11, 2006 5:50 pm

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
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Postby goosfancito » Tue Jul 11, 2006 6:05 pm

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.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Postby jmartial » Tue Jul 11, 2006 6:31 pm

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
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Postby Antonio Linares » Tue Jul 11, 2006 8:53 pm

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
Antonio Linares
Site Admin
 
Posts: 41940
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby goosfancito » Tue Jul 11, 2006 8:58 pm

Antonio,

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

Code: Select all  Expand view
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?
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Postby Antonio Linares » Tue Jul 11, 2006 10:26 pm

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
User avatar
Antonio Linares
Site Admin
 
Posts: 41940
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 106 guests