Migrando de FWH 32 a FWH 64 - windows.h

Re: Migrando de FWH 32 a FWH 64 - windows.h

Postby Antonio Linares » Thu Jan 08, 2015 5:49 pm

Totalmente de acuerdo con Cristobal, desde ahi no hay que llamar nunca a oWnd:End() pues generaría un bucle sin fín!

El código aún puede simplificarse un poco más así :-)

VALID ! GetKeyState( VK_ESCAPE )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Migrando de FWH 32 a FWH 64 - windows.h

Postby Verhoven » Sun Jan 11, 2015 7:00 am

Hola Antonio,
Al usar hb_fsOpen en vez de fopen, ¿hay que cambiar algunas funciones más que utilicen el manejador que devuelve hb_fsOpen?. Me explico:
En la misma función en que usaba fopen() utilizaba también fprintf y fclose.
He visto que existe una función hb_fsClose que supongo que deberá sustituir a fclose. Pero con fprintf y otras no estoy seguro.
Lo digo porque el proceso con cambiar solo hb_fsOpen por fopen devuelve un error en un fichero hb_out.log de ACCESS_VIOLATION que no se qué significado tiene. Y no se si estará relacionado con esa mezcla de uso de funciones standard de C con otras propias de Harbour.

Code: Select all  Expand view
Error irrecuperable 6005: Exception error:

    Exception Code:C0000005 ACCESS_VIOLATION
    Exception Address:00557CFC
    EAX:00000001  EBX:00000284  ECX:0000001C  EDX:00000284
    ESI:0000001C  EDI:0012E678  EBP:0012E644
    CS:EIP:001B:00557CFC  SS:ESP:0023:0012E634
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010246
    Exception Parameters: 00000000 00000296
    CS:EIP: F6 43 12 08 74 36 89 75 FC 83 7D FC 00 74 21 53
    SS:ESP: 00000000 005B46E2 0012E678 0000001C 0012E660 00558A73 0012E678 0000001C 00000284 00000001 00000200 0012EB9C 0055948B 0012E678 0012ED18 00CC0010

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...
    00557CFC 0012E644   0012E660 00558A73 0012E678 0000001C 00000284 00000001 00000200
    00558A73 0012E660   0012EB9C 0055948B 0012E678 0012ED18 00CC0010 00000284 31303032 32303531 2009502E 32304431
    0055948B 0012EB9C   0012EBBC 00557CE5 00557CEC 00000284 005B46D7 00000000 00000000 0012EBD8
    00557CE5 0012EBBC   0012EE8C 00404673 00000284 005B46D7 0012EC04 01D022EC 8EF82E00 00000080 00000000 00000000
    00404673 0012EE8C   0012EFA0 0048622A 00000004 0057A5F0 00000000 0073FA1C 00576EF5 00000000 0073FA1C 0012EEF0
    0048622A 0012EFA0   0012EFC8 00401AF4 00571894 005620C8 0048C17C 00000067 00000001 00CBC3F4 00000000 00000134
    00401AF4 0012EFC8   0012F0DC 0048622A 00000004 00576F0C 00000000 0073FA1C 01219EA8 00E15FA8 00000025 00000000
    0048622A 0012F0DC   0012F104 00401F68 0057A4F5 005620C8 0048C17C 00000050 00000001 00CBC3F4 00000000 00000B09
    00401F68 0012F104   0012F218 0048622A 00000000 0057A4E2 00000000 0073FA1C 0012F208 0012F200 0098B4C8 77D26DDB
    0048622A 0012F218   0012F240 00401E78 00576EAC 005620C8 0048C17C 0000004B 00000000 00CBC3F4 00000000 000006FD
    00401E78 0012F240   0012F354 0048622A 00000001 0058BBD9 00000000 0073FA1C 00000024 011FEECC 0012F2B0 004C5DFF
    0048622A 0012F354   0012F37C 00401F54 0057A19C 005620C8 0048C17C 00000047 00000000 00CBC3F4 00000000 00000AF8
    00401F54 0012F37C   0012F490 0048622A 00000000 0058C50C 00000000 0073FA1C 77D40494 77D1B818 00007F37 0012F4F0
    0048622A 0012F490   0012F4B8 00402968 0058BB78 005620C8 0048C17C 00000043 00000000 00CBC3F4 00000000 000017CF
    00402968 0012F4B8   0012F5CC 0048622A 00000000 00568CEC 00000000 0073FA1C 0012F50C 77D1ECC3 00030000 00000002
    0048622A 0012F5CC   0012F5F4 004029B8 0058C494 005620C8 0048C17C 00000040 00000000 00CBC3F4 00000000 000018C1
    004029B8 0012F5F4   0012F708 004861A7 00000001 0073FA1C FFFFFFFF 00CB5B04 00384420 5B151ADB 0012F720 005612E4
    004861A7 0012F708   0012F740 0048C4F5 00568C6F 005620C8 0062A531 00000000 0062866C 0048C339 0073FA1C 0000003C
    0048C4F5 0012F740   0012F854 004862E4 00000001 00688CA3 00000000 00683ED4 005612E4 0001014A 00000112 0000F095
    004862E4 0012F854   0012F864 0040D4B4 0062A487 00627F6C


Modules:
00400000 0037E000 C:\TPV_06\WINTPV.exe
7C910000 000B6000 C:\WINDOWS\system32\ntdll.dll
7C800000 00101000 C:\WINDOWS\system32\kernel32.dll
77DA0000 000AC000 C:\WINDOWS\system32\ADVAPI32.DLL
77E50000 00091000 C:\WINDOWS\system32\RPCRT4.dll
77BD0000 00008000 C:\WINDOWS\system32\VERSION.DLL
71A50000 0000A000 C:\WINDOWS\system32\WSOCK32.DLL
71A30000 00017000 C:\WINDOWS\system32\WS2_32.dll
77BE0000 00058000 C:\WINDOWS\system32\msvcrt.dll
71A20000 00008000 C:\WINDOWS\system32\WS2HELP.dll
72F80000 00026000 C:\WINDOWS\system32\WINSPOOL.DRV
77EF0000 00046000 C:\WINDOWS\system32\GDI32.dll
77D10000 00090000 C:\WINDOWS\system32\USER32.dll
773A0000 00102000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\COMCTL32.DLL
77F40000 00076000 C:\WINDOWS\system32\SHLWAPI.dll
76360000 0004A000 C:\WINDOWS\system32\COMDLG32.DLL
7C9D0000 0081E000 C:\WINDOWS\system32\SHELL32.dll
76330000 00005000 C:\WINDOWS\system32\MSIMG32.DLL
76B00000 0002E000 C:\WINDOWS\system32\WINMM.DLL
774B0000 0013C000 C:\WINDOWS\system32\OLE32.DLL
770F0000 0008C000 C:\WINDOWS\system32\OLEAUT32.DLL
74CC0000 00020000 C:\WINDOWS\system32\OLEDLG.DLL
77180000 000A7000 C:\WINDOWS\system32\WININET.DLL
77A50000 00095000 C:\WINDOWS\system32\CRYPT32.dll
77AF0000 00012000 C:\WINDOWS\system32\MSASN1.dll
5B150000 00038000 C:\WINDOWS\system32\uxtheme.dll
746B0000 0004B000 C:\WINDOWS\system32\MSCTF.dll
76BF0000 0002E000 C:\WINDOWS\system32\WINTRUST.dll
76C50000 00028000 C:\WINDOWS\system32\IMAGEHLP.dll
72CA0000 00009000 C:\WINDOWS\system32\wdmaud.drv
72C90000 00008000 C:\WINDOWS\system32\msacm32.drv
77BB0000 00015000 C:\WINDOWS\system32\MSACM32.dll
77BA0000 00007000 C:\WINDOWS\system32\midimap.dll
719D0000 00040000 C:\WINDOWS\system32\mswsock.dll
66740000 00059000 C:\WINDOWS\system32\hnetcfg.dll
71A10000 00008000 C:\WINDOWS\System32\wshtcpip.dll
76EE0000 00027000 C:\WINDOWS\system32\DNSAPI.dll
76F70000 00008000 C:\WINDOWS\System32\winrnr.dll
76F20000 0002D000 C:\WINDOWS\system32\WLDAP32.dll
76F80000 00006000 C:\WINDOWS\system32\rasadhlp.dll
77FC0000 00011000 C:\WINDOWS\system32\Secur32.dll
77230000 0009D000 C:\WINDOWS\system32\urlmon.dll
76EA0000 0003C000 C:\WINDOWS\system32\RASAPI32.DLL
76E50000 00012000 C:\WINDOWS\system32\rasman.dll
597F0000 00054000 C:\WINDOWS\system32\NETAPI32.dll
76E70000 0002F000 C:\WINDOWS\system32\TAPI32.dll
76E40000 0000E000 C:\WINDOWS\system32\rtutils.dll
72250000 00005000 C:\WINDOWS\system32\sensapi.dll
76630000 000B4000 C:\WINDOWS\system32\USERENV.dll

Called from FTPLASTFILEINDIR(0)
Called from FTP_LASTFILEINDIRECTORY(308) in wintp.prg
Verhoven
 
Posts: 520
Joined: Sun Oct 09, 2005 7:23 pm

Re: Migrando de FWH 32 a FWH 64 - windows.h

Postby Antonio Linares » Sun Jan 11, 2015 8:56 am

Paz,

Puedes copiar aqui el código que estás usando en FTPLASTFILEINDIR() ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Migrando de FWH 32 a FWH 64 - windows.h

Postby Verhoven » Sun Jan 11, 2015 5:12 pm

Lo copio:

Code: Select all  Expand view
#pragma BEGINDUMP

// Los siguientes ficheros de cabecera se usan en HB_FUNC( FTPLASTFILEINDIR ) y en otras funciones del prg para funciones de mnnanejo de FTP e inet.
#include "ws2tcpip.h"  //For WinSock 2 library: ws2_32.lib
#include "wininet.h"
#include "windows.h"

#include <hbapifs.h>  //Necesarias para hb_fsOpen
#include <fileio.ch>

#include "hbapi.h"
#include "stdio.h"
#include "WinBase.h"

//Devuelve el nombre del último fichero modificado según una máscara en un directorio FTP.
HB_FUNC( FTPLASTFILEINDIR )  //Método por el último nombre en el listado obtenido.
{   
    WIN32_FIND_DATA ultdir;
    WIN32_FIND_DATA dirtemp;
    SYSTEMTIME stUTC;
    HINTERNET FtpHandle;
   
   /* Código anterior a VSC2013 que, aunque funciona con VSC2013 da warnings al compilar por usar funciones standard de C
    FILE *fichero;
    char nombre[12] = "LISTFTP.DAT";
   
    fichero = fopen( nombre, "w" );
    */

   
    fichero = (FILE *) hb_fsOpen( nombre, FO_WRITE );
   
    /*  Definición de la función hb_fsOpen sacada de Harbour:
        #include <hbapifs.h>
        hb_fsOpen( BYTE * pszFileName, USHORT uiFlags ) --> ( FHANDLE )hResult
    */
 

    FtpHandle = FtpFindFirstFile( ( HINTERNET ) hb_parnl( 1 ), hb_parc( 2 ), &dirtemp, hb_parnl( 3 ), hb_parnl( 4 ) ) ;
   
    if ( FtpHandle ) {
           ultdir = dirtemp;

           //Empleando el valor de ftCreationTime para pintar la fecha del fichero.
           /* El código siguiente está comentado debido a que NO SE PUEDE USAR ftCreationTime
               PORQUE EL SERVIDOR FTP DEL SERVIDOR DEL FPOS DEVUELVE CERO EN TODOS LOS CAMPOS.
           if( fichero ) {
            fprintf( fichero, "%s\t%8X\t%8X", ultdir.cFileName, ultdir.ftCreationTime.dwHighDateTime, ultdir.ftCreationTime.dwLowDateTime );
            if( FileTimeToSystemTime(&ultdir.ftCreationTime, &stUTC) )
              fprintf( fichero, "\t%2d:%2d:%2d  %2d/%2d/%4d\n", stUTC.wHour, stUTC.wMinute,stUTC.wSecond,stUTC.wDay,stUTC.wMonth,stUTC.wYear);    
           }
           // Sigue buscando por el directorio FTP
           while ( InternetFindNextFile( FtpHandle, &dirtemp ) ) {
            ultdir = dirtemp;

            if( fichero ) {
             fprintf( fichero, "%s\t%8X\t%8X", ultdir.cFileName, ultdir.ftCreationTime.dwHighDateTime, ultdir.ftCreationTime.dwLowDateTime );
             if( FileTimeToSystemTime(&ultdir.ftCreationTime, &stUTC) )
              fprintf( fichero, "\t%2d:%2d:%2d  %2d/%2d/%4d\n", stUTC.wHour, stUTC.wMinute,stUTC.wSecond,stUTC.wDay,stUTC.wMonth,stUTC.wYear);    
            }
           }
           */


           //Empleando el valor de ftLastWriteTime para pintar la fecha del fichero.
           if( fichero ) {
            fprintf( fichero, "%s\t%8X\t%8X", ultdir.cFileName, ultdir.ftLastWriteTime.dwHighDateTime, ultdir.ftLastWriteTime.dwLowDateTime );
            if( FileTimeToSystemTime(&ultdir.ftLastWriteTime, &stUTC) )
             fprintf( fichero, "\t%2d:%2d:%2d  %2d/%2d/%4d\n", stUTC.wHour, stUTC.wMinute,stUTC.wSecond,stUTC.wDay,stUTC.wMonth,stUTC.wYear);    
           }
           // Sigue buscando por el directorio FTP
           while ( InternetFindNextFile( FtpHandle, &dirtemp ) ) {
            ultdir = dirtemp;

            if( fichero ) {
             fprintf( fichero, "%s\t%8X\t%8X", ultdir.cFileName, ultdir.ftLastWriteTime.dwHighDateTime, ultdir.ftLastWriteTime.dwLowDateTime );
             if( FileTimeToSystemTime(&ultdir.ftLastWriteTime, &stUTC) )
              fprintf( fichero, "\t%2d:%2d:%2d  %2d/%2d/%4d\n", stUTC.wHour, stUTC.wMinute,stUTC.wSecond,stUTC.wDay,stUTC.wMonth,stUTC.wYear);    
            }
           }
           
                     
           // Devuelve al PRG el nombre del último fichero creado/modificado en el directorio FTP.
           hb_retc( ultdir.cFileName );
         }
      else
         //MessageBox( GetActiveWindow(), "No ha encontrado ningún fichero", "Cero Ficheros", 0x40 );
         hb_retc( "" );
         
    InternetCloseHandle( FtpHandle );
    if( fichero ) {
     fclose(fichero);
    }
}
#pragma ENDDUMP
Verhoven
 
Posts: 520
Joined: Sun Oct 09, 2005 7:23 pm

Re: Migrando de FWH 32 a FWH 64 - windows.h

Postby Antonio Linares » Sun Jan 11, 2015 5:24 pm

Paz,

Si reemplazas fclose() con hb_fsClose() se mantiene el error ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Migrando de FWH 32 a FWH 64 - windows.h

Postby Verhoven » Sun Jan 11, 2015 6:45 pm

Lo tengo que probar en uno de los equipo en producción y ahora mismo no lo tengo disponible.
En el transcurso de la semana que viene lo pruebo y digo algo.
Verhoven
 
Posts: 520
Joined: Sun Oct 09, 2005 7:23 pm

Re: Migrando de FWH 32 a FWH 64 - windows.h

Postby Verhoven » Sun Jan 11, 2015 8:00 pm

No obstante, el problema ya me lo estoy encontrando al compilar:
Code: Select all  Expand view
Error E2342 internet.prg 511: Type mismatch in parameter 'hFileHandle' (wanted 'long', got 'FILE *') in function HB_FUN_FTPLASTFILEINDIR


Las declaraciones las hago así:
Code: Select all  Expand view
   FILE *fichero = (FILE *) hb_fsOpen( "LISTFTP.DAT", FO_WRITE );

           if( fichero ) {
            fprintf( fichero, "%s\t%8X\t%8X", ultdir.cFileName, ultdir.ftCreationTime.dwHighDateTime, ultdir.ftCreationTime.dwLowDateTime );
            if( FileTimeToSystemTime(&ultdir.ftCreationTime, &stUTC) )
              fprintf( fichero, "\t%2d:%2d:%2d  %2d/%2d/%4d\n", stUTC.wHour, stUTC.wMinute,stUTC.wSecond,stUTC.wDay,stUTC.wMonth,stUTC.wYear);    
           }
  ...
   
    if( fichero ) {
     //fclose(fichero);
     hb_fsClose(fichero);
    }
}


Es decir, hb_fsOpen devuelve un valor que parece ser un long.
Por eso, si la variable "fichero" se define como un tipo FILE * luego da errores al compilar cuando se hace hb_fsClose(fichero) ya que esta función espera un long.
Por otro lado, no se puede definir "fichero" como un tipo long, porque otra función usada, la función fprintf( fichero, ...) necesita que "fichero" sea del tipo FILE * y si no es de este tipo he comprobado que entonces da error al compilar en las líneas con fprintf.

Se pueden ir haciendo conversiones de tipos pero me parece que vamos a formar un poco de lío y se puede acabar metiendo la pata en algo.

Usando las funciones digamos standard de C el programa funciona bien. Aunque entiendo que esas funciones de Harbour no son un desarrollo caprichoso, sino que deben de obedecer a un intento de controlar más y mejor posibles errores en el código, tengo que preguntarte si es realmente tan necesario emplear esas funciones de Harbour que evitan los warnings del VSC2013.

Mirando algo en inet sobre estos warnings que da el compilador de MS la opinión que se lee con relativa frecuencia es que parece haber un empeño de MS para que se usen sus funciones de C propias en vez de las standard para ser más dependientes de ellos y de ahí los warnings y tampoco detecto que la gente esté cómoda con la idea de tener que aceptar esas adaptaciones.
Verhoven
 
Posts: 520
Joined: Sun Oct 09, 2005 7:23 pm

Re: Migrando de FWH 32 a FWH 64 - windows.h

Postby Antonio Linares » Sun Jan 11, 2015 9:21 pm

Paz,

Cambia esta línea asi:

hb_fsClose( ( HB_FHANDLE ) fichero);
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Migrando de FWH 32 a FWH 64 - windows.h

Postby Verhoven » Sun Jan 18, 2015 2:14 pm

Da un error que queda registrado en el hb_out.log. Además hay ocasiones en que incluso es necesario reiniciar el ordenador apagando la corriente porque se queda colgado y ni si quiera con el administrador de tareas se puede cerrar la aplicación.

Application Internal Error - C:\wintpv.exe
Terminated at: 2015-01-18 14:12:52
Error irrecuperable 6005: Exception error:

Exception Code:C0000005 ACCESS_VIOLATION
Exception Address:00557D54
EAX:00000001 EBX:000002EC ECX:0000001C EDX:000002EC
ESI:0000001C EDI:0012E66C EBP:0012E638
CS:EIP:001B:00557D54 SS:ESP:0023:0012E628
DS:0023 ES:0023 FS:003B GS:0000
Flags:00010246
Exception Parameters: 00000000 000002FE
CS:EIP: F6 43 12 08 74 36 89 75 FC 83 7D FC 00 74 21 53
SS:ESP: 00000000 005B471E 0012E66C 0000001C 0012E654 00558ACB 0012E66C 0000001C 000002EC 00000001 00000200 0012EB90 005594E3 0012E66C 0012ED0C 00CC0010
Verhoven
 
Posts: 520
Joined: Sun Oct 09, 2005 7:23 pm

Re: Migrando de FWH 32 a FWH 64 - windows.h

Postby Antonio Linares » Sun Jan 18, 2015 6:25 pm

Paz,

Es ese el contenido completo del fichero hb_out.log ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Migrando de FWH 32 a FWH 64 - windows.h

Postby Verhoven » Mon Jan 19, 2015 7:21 am

No estaba entero porque no sabía si era necesario.
Lo copio entero:

Code: Select all  Expand view
Application Internal Error - C:\wintpv.exe
Terminated at: 2015-01-18 14:12:52
Error irrecuperable 6005: Exception error:

    Exception Code:C0000005 ACCESS_VIOLATION
    Exception Address:00557D54
    EAX:00000001  EBX:000002EC  ECX:0000001C  EDX:000002EC
    ESI:0000001C  EDI:0012E66C  EBP:0012E638
    CS:EIP:001B:00557D54  SS:ESP:0023:0012E628
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010246
    Exception Parameters: 00000000 000002FE
    CS:EIP: F6 43 12 08 74 36 89 75 FC 83 7D FC 00 74 21 53
    SS:ESP: 00000000 005B471E 0012E66C 0000001C 0012E654 00558ACB 0012E66C 0000001C 000002EC 00000001 00000200 0012EB90 005594E3 0012E66C 0012ED0C 00CC0010

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...
    00557D54 0012E638   0012E654 00558ACB 0012E66C 0000001C 000002EC 00000001 00000200
    00558ACB 0012E654   0012EB90 005594E3 0012E66C 0012ED0C 00CC0010 000002EC 30303032 31383431 2009502E 32304431
    005594E3 0012EB90   0012EBB0 00557D3D 00557D44 000002EC 005B4713 00000000 00000000 0012EBCC
    00557D3D 0012EBB0   0012EE80 00404673 000002EC 005B4713 0012EBF8 01D0202B 5C6BDE00 00000080 00000000 00000000
    00404673 0012EE80   0012EF94 00486282 00000004 0057A5FA 00000000 0073FA44 00576EFF 00000000 0073FA44 0012EEE4
    00486282 0012EF94   0012EFBC 00401AF4 0057189E 005620C8 0048C1D4 00000067 00000001 00D5C3FC 00000000 00000134
    00401AF4 0012EFBC   0012F0D0 00486282 00000004 00576F16 00000000 0073FA44 01453DD8 01467198 00000027 00000000
    00486282 0012F0D0   0012F0F8 00401F68 0057A4FF 005620C8 0048C1D4 00000050 00000001 00D5C3FC 00000000 00000B09
    00401F68 0012F0F8   0012F20C 00486282 00000000 0057A4EC 00000000 0073FA44 0012F1FC 0012F1F4 009AA508 77D26DDB
    00486282 0012F20C   0012F234 00401E78 00576EB6 005620C8 0048C1D4 0000004B 00000000 00D5C3FC 00000000 000006FD
    00401E78 0012F234   0012F348 00486282 00000001 0058BBE3 00000000 0073FA44 00000024 0141DD84 0012F2A4 004C5E57
    00486282 0012F348   0012F370 00401F54 0057A1A6 005620C8 0048C1D4 00000047 00000000 00D5C3FC 00000000 00000AF8
    00401F54 0012F370   0012F484 00486282 00000000 0058C516 00000000 0073FA44 77D40494 77D1B818 00002E6E 0012F4E4
    00486282 0012F484   0012F4AC 00402968 0058BB82 005620C8 0048C1D4 00000043 00000000 00D5C3FC 00000000 000017D0
    00402968 0012F4AC   0012F5C0 00486282 00000000 00568CF6 00000000 0073FA44 0012F500 77D1ECC3 00030000 00000002
    00486282 0012F5C0   0012F5E8 004029B8 0058C49E 005620C8 0048C1D4 00000040 00000000 00D5C3FC 00000000 000018C2
    004029B8 0012F5E8   0012F6FC 004861FF 00000001 0073FA44 FFFFFFFF 00D55B0C 003E44C0 5B151ADB 0012F714 0056133C
    004861FF 0012F6FC   0012F734 0048C54D 00568C79 005620C8 0062A559 00000000 00628694 0048C391 0073FA44 0000003C
    0048C54D 0012F734   0012F848 0048633C 00000001 00688CCB 00000000 00683EFC 0056133C 000701F8 00000112 0000F095
    0048633C 0012F848   0012F858 0040D50C 0062A4AF 00627F94


Modules:
00400000 0037E000 C:\wintpv.exe
7C910000 000B6000 C:\WINDOWS\system32\ntdll.dll
7C800000 00101000 C:\WINDOWS\system32\kernel32.dll
77DA0000 000AC000 C:\WINDOWS\system32\ADVAPI32.DLL
77E50000 00091000 C:\WINDOWS\system32\RPCRT4.dll
77BD0000 00008000 C:\WINDOWS\system32\VERSION.DLL
71A50000 0000A000 C:\WINDOWS\system32\WSOCK32.DLL
71A30000 00017000 C:\WINDOWS\system32\WS2_32.dll
77BE0000 00058000 C:\WINDOWS\system32\msvcrt.dll
71A20000 00008000 C:\WINDOWS\system32\WS2HELP.dll
72F80000 00026000 C:\WINDOWS\system32\WINSPOOL.DRV
77EF0000 00046000 C:\WINDOWS\system32\GDI32.dll
77D10000 00090000 C:\WINDOWS\system32\USER32.dll
773A0000 00102000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\COMCTL32.DLL
77F40000 00076000 C:\WINDOWS\system32\SHLWAPI.dll
76360000 0004A000 C:\WINDOWS\system32\COMDLG32.DLL
7C9D0000 0081E000 C:\WINDOWS\system32\SHELL32.dll
76330000 00005000 C:\WINDOWS\system32\MSIMG32.DLL
76B00000 0002E000 C:\WINDOWS\system32\WINMM.DLL
774B0000 0013C000 C:\WINDOWS\system32\OLE32.DLL
770F0000 0008C000 C:\WINDOWS\system32\OLEAUT32.DLL
74CC0000 00020000 C:\WINDOWS\system32\OLEDLG.DLL
77180000 000A7000 C:\WINDOWS\system32\WININET.DLL
77A50000 00095000 C:\WINDOWS\system32\CRYPT32.dll
77AF0000 00012000 C:\WINDOWS\system32\MSASN1.dll
6BD00000 0000D000 C:\WINDOWS\system32\SYNCOR11.DLL
76EE0000 00027000 C:\WINDOWS\system32\DNSAPI.dll
77FC0000 00011000 C:\WINDOWS\system32\Secur32.dll
5B150000 00038000 C:\WINDOWS\system32\uxtheme.dll
746B0000 0004B000 C:\WINDOWS\system32\MSCTF.dll
76BF0000 0002E000 C:\WINDOWS\system32\WINTRUST.dll
76C50000 00028000 C:\WINDOWS\system32\IMAGEHLP.dll
72CA0000 00009000 C:\WINDOWS\system32\wdmaud.drv
72C90000 00008000 C:\WINDOWS\system32\msacm32.drv
77BB0000 00015000 C:\WINDOWS\system32\MSACM32.dll
77BA0000 00007000 C:\WINDOWS\system32\midimap.dll
719D0000 00040000 C:\WINDOWS\system32\mswsock.dll
66740000 00059000 C:\WINDOWS\system32\hnetcfg.dll
71A10000 00008000 C:\WINDOWS\System32\wshtcpip.dll
76F70000 00008000 C:\WINDOWS\System32\winrnr.dll
76F20000 0002D000 C:\WINDOWS\system32\WLDAP32.dll
76F80000 00006000 C:\WINDOWS\system32\rasadhlp.dll
76310000 00010000 C:\WINDOWS\system32\WINSTA.dll
597F0000 00054000 C:\WINDOWS\system32\NETAPI32.dll
77230000 0009D000 C:\WINDOWS\system32\urlmon.dll
76EA0000 0003C000 C:\WINDOWS\system32\RASAPI32.DLL
76E50000 00012000 C:\WINDOWS\system32\rasman.dll
76E70000 0002F000 C:\WINDOWS\system32\TAPI32.dll
76E40000 0000E000 C:\WINDOWS\system32\rtutils.dll
77C40000 00023000 C:\WINDOWS\system32\msv1_0.dll
76D20000 00019000 C:\WINDOWS\system32\iphlpapi.dll
72250000 00005000 C:\WINDOWS\system32\sensapi.dll
76630000 000B4000 C:\WINDOWS\system32\USERENV.dll

Called from FTPLASTFILEINDIR(0)
Called from FTP_LASTFILEINDIRECTORY(308) in wintpv.prg
Called from TOK_NOMULTCIERREENFP(2825) in wintpv.prg
Called from TOK_CIERRE2FP(1789) in wintpv.prg
Called from TOK_CONSULTACONTADORES(2808) in wintpv.prg
Called from LEECONTAAUTOM(6096) in wintpv.prg
Called from CIERRETURNOVAL(6338) in wintpv.prg
Called from (b)MENUPPAL(553) in wintpv.prg
Called from TMENU:COMMAND(561) in .\source\classes\MENU.PRG
Called from TWINDOW:COMMAND(1097) in .\source\classes\WINDOW.PRG
Called from TWINDOW:HANDLEEVENT(0)
Called from _FWH(3345) in .\source\classes\WINDOW.PRG
Called from WINRUN(0)
Called from TWINDOW:ACTIVATE(1050) in .\source\classes\WINDOW.PRG
Called from MAIN(412) in wintpv.prg
------------------------------------------------------------------------
Application Internal Error - C:\wintpv.exe
Terminated at: 2015-01-18 14:13:10
Error irrecuperable 6005: Exception error:

    Exception Code:C0000005 ACCESS_VIOLATION
    Exception Address:00557D54
    EAX:00000001  EBX:000002E4  ECX:0000001C  EDX:000002E4
    ESI:0000001C  EDI:0012E66C  EBP:0012E638
    CS:EIP:001B:00557D54  SS:ESP:0023:0012E628
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010246
    Exception Parameters: 00000000 000002F6
    CS:EIP: F6 43 12 08 74 36 89 75 FC 83 7D FC 00 74 21 53
    SS:ESP: 00000000 005B471E 0012E66C 0000001C 0012E654 00558ACB 0012E66C 0000001C 000002E4 00000001 00000200 0012EB90 005594E3 0012E66C 0012ED0C 00CC0010

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...
    00557D54 0012E638   0012E654 00558ACB 0012E66C 0000001C 000002E4 00000001 00000200
    00558ACB 0012E654   0012EB90 005594E3 0012E66C 0012ED0C 00CC0010 000002E4 30303032 31383431 2009502E 32304431
    005594E3 0012EB90   0012EBB0 00557D3D 00557D44 000002E4 005B4713 00000000 00000000 0012EBCC
    00557D3D 0012EBB0   0012EE80 00404673 000002E4 005B4713 0012EBF8 01D0202B 5C6BDE00 00000080 00000000 00000000
    00404673 0012EE80   0012EF94 00486282 00000004 0057A5FA 00000000 0073FA44 00576EFF 00000000 0073FA44 0012EEE4
    00486282 0012EF94   0012EFBC 00401AF4 0057189E 005620C8 0048C1D4 00000067 00000001 00D5C3FC 00000000 00000134
    00401AF4 0012EFBC   0012F0D0 00486282 00000004 00576F16 00000000 0073FA44 0133F688 0132C998 00000027 00000000
    00486282 0012F0D0   0012F0F8 00401F68 0057A4FF 005620C8 0048C1D4 00000050 00000001 00D5C3FC 00000000 00000B09
    00401F68 0012F0F8   0012F20C 00486282 00000000 0057A4EC 00000000 0073FA44 0012F1FC 0012F1F4 009752A0 77D26DDB
    00486282 0012F20C   0012F234 00401E78 00576EB6 005620C8 0048C1D4 0000004B 00000000 00D5C3FC 00000000 000006FD
    00401E78 0012F234   0012F348 00486282 00000001 0058BBE3 00000000 0073FA44 00000024 0131DDAC 0012F2A4 004C5E57
    00486282 0012F348   0012F370 00401F54 0057A1A6 005620C8 0048C1D4 00000047 00000000 00D5C3FC 00000000 00000AF8
    00401F54 0012F370   0012F484 00486282 00000000 0058C516 00000000 0073FA44 77D40494 77D1B818 00000522 0012F4E4
    00486282 0012F484   0012F4AC 00402968 0058BB82 005620C8 0048C1D4 00000043 00000000 00D5C3FC 00000000 000017D0
    00402968 0012F4AC   0012F5C0 00486282 00000000 00568CF6 00000000 0073FA44 0012F500 77D1ECC3 00030000 00000002
    00486282 0012F5C0   0012F5E8 004029B8 0058C49E 005620C8 0048C1D4 00000040 00000000 00D5C3FC 00000000 000018C2
    004029B8 0012F5E8   0012F6FC 004861FF 00000001 0073FA44 FFFFFFFF 00D55B0C 003E44C0 5B151ADB 0012F714 0056133C
    004861FF 0012F6FC   0012F734 0048C54D 00568C79 005620C8 0062A559 00000000 00628694 0048C391 0073FA44 0000003C
    0048C54D 0012F734   0012F848 0048633C 00000001 00688CCB 00000000 00683EFC 0056133C 000801F8 00000112 0000F095
    0048633C 0012F848   0012F858 0040D50C 0062A4AF 00627F94


Modules:
00400000 0037E000 C:\wintpv.exe
7C910000 000B6000 C:\WINDOWS\system32\ntdll.dll
7C800000 00101000 C:\WINDOWS\system32\kernel32.dll
77DA0000 000AC000 C:\WINDOWS\system32\ADVAPI32.DLL
77E50000 00091000 C:\WINDOWS\system32\RPCRT4.dll
77BD0000 00008000 C:\WINDOWS\system32\VERSION.DLL
71A50000 0000A000 C:\WINDOWS\system32\WSOCK32.DLL
71A30000 00017000 C:\WINDOWS\system32\WS2_32.dll
77BE0000 00058000 C:\WINDOWS\system32\msvcrt.dll
71A20000 00008000 C:\WINDOWS\system32\WS2HELP.dll
72F80000 00026000 C:\WINDOWS\system32\WINSPOOL.DRV
77EF0000 00046000 C:\WINDOWS\system32\GDI32.dll
77D10000 00090000 C:\WINDOWS\system32\USER32.dll
773A0000 00102000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\COMCTL32.DLL
77F40000 00076000 C:\WINDOWS\system32\SHLWAPI.dll
76360000 0004A000 C:\WINDOWS\system32\COMDLG32.DLL
7C9D0000 0081E000 C:\WINDOWS\system32\SHELL32.dll
76330000 00005000 C:\WINDOWS\system32\MSIMG32.DLL
76B00000 0002E000 C:\WINDOWS\system32\WINMM.DLL
774B0000 0013C000 C:\WINDOWS\system32\OLE32.DLL
770F0000 0008C000 C:\WINDOWS\system32\OLEAUT32.DLL
74CC0000 00020000 C:\WINDOWS\system32\OLEDLG.DLL
77180000 000A7000 C:\WINDOWS\system32\WININET.DLL
77A50000 00095000 C:\WINDOWS\system32\CRYPT32.dll
77AF0000 00012000 C:\WINDOWS\system32\MSASN1.dll
6BD00000 0000D000 C:\WINDOWS\system32\SYNCOR11.DLL
76EE0000 00027000 C:\WINDOWS\system32\DNSAPI.dll
77FC0000 00011000 C:\WINDOWS\system32\Secur32.dll
5B150000 00038000 C:\WINDOWS\system32\uxtheme.dll
746B0000 0004B000 C:\WINDOWS\system32\MSCTF.dll
76BF0000 0002E000 C:\WINDOWS\system32\WINTRUST.dll
76C50000 00028000 C:\WINDOWS\system32\IMAGEHLP.dll
72CA0000 00009000 C:\WINDOWS\system32\wdmaud.drv
72C90000 00008000 C:\WINDOWS\system32\msacm32.drv
77BB0000 00015000 C:\WINDOWS\system32\MSACM32.dll
77BA0000 00007000 C:\WINDOWS\system32\midimap.dll
719D0000 00040000 C:\WINDOWS\system32\mswsock.dll
66740000 00059000 C:\WINDOWS\system32\hnetcfg.dll
71A10000 00008000 C:\WINDOWS\System32\wshtcpip.dll
76F70000 00008000 C:\WINDOWS\System32\winrnr.dll
76F20000 0002D000 C:\WINDOWS\system32\WLDAP32.dll
76F80000 00006000 C:\WINDOWS\system32\rasadhlp.dll
77230000 0009D000 C:\WINDOWS\system32\urlmon.dll
76EA0000 0003C000 C:\WINDOWS\system32\RASAPI32.DLL
76E50000 00012000 C:\WINDOWS\system32\rasman.dll
597F0000 00054000 C:\WINDOWS\system32\NETAPI32.dll
76E70000 0002F000 C:\WINDOWS\system32\TAPI32.dll
76E40000 0000E000 C:\WINDOWS\system32\rtutils.dll
77C40000 00023000 C:\WINDOWS\system32\msv1_0.dll
76D20000 00019000 C:\WINDOWS\system32\iphlpapi.dll
72250000 00005000 C:\WINDOWS\system32\sensapi.dll
76630000 000B4000 C:\WINDOWS\system32\USERENV.dll

Called from FTPLASTFILEINDIR(0)
Called from FTP_LASTFILEINDIRECTORY(308) in wintpv.prg
Called from TOK_NOMULTCIERREENFP(2825) in wintpv.prg
Called from TOK_CIERRE2FP(1789) in wintpv.prg
Called from TOK_CONSULTACONTADORES(2808) in wintpv.prg
Called from LEECONTAAUTOM(6096) in wintpv.prg
Called from CIERRETURNOVAL(6338) in wintpv.prg
Called from (b)MENUPPAL(553) in wintpv.prg
Called from TMENU:COMMAND(561) in .\source\classes\MENU.PRG
Called from TWINDOW:COMMAND(1097) in .\source\classes\WINDOW.PRG
Called from TWINDOW:HANDLEEVENT(0)
Called from _FWH(3345) in .\source\classes\WINDOW.PRG
Called from WINRUN(0)
Called from TWINDOW:ACTIVATE(1050) in .\source\classes\WINDOW.PRG
Called from MAIN(412) in wintpv.prg
------------------------------------------------------------------------
Verhoven
 
Posts: 520
Joined: Sun Oct 09, 2005 7:23 pm

Re: Migrando de FWH 32 a FWH 64 - windows.h

Postby Antonio Linares » Mon Jan 19, 2015 9:49 am

Paz,

Esta claro que el GPF se produce en FTPLASTFILEINDIR().

Puedes usar la función OutputDebugString() de Windows para ver en donde se produce el GPF:

Code: Select all  Expand view
HB_FUNC( FTPLASTFILEINDIR )  //Método por el último nombre en el listado obtenido.
{  
    WIN32_FIND_DATA ultdir;
    WIN32_FIND_DATA dirtemp;
    SYSTEMTIME stUTC;
    HINTERNET FtpHandle;
    FILE * fichero = (FILE *) hb_fsOpen( nombre, FO_WRITE );
   
    OutputDebugString( "despues de hb_fsOpen() y antes de FtpFindFirstFile()\n" );
 
    FtpHandle = FtpFindFirstFile( ( HINTERNET ) hb_parnl( 1 ), hb_parc( 2 ), &dirtemp, hb_parnl( 3 ), hb_parnl( 4 ) ) ;
   
    if ( FtpHandle )
   {
           ultdir = dirtemp;

           if( fichero ) {
            OutpuDebugString( "antes de fprintf()\n" );
 
            fprintf( fichero, "%s\t%8X\t%8X", ultdir.cFileName, ultdir.ftLastWriteTime.dwHighDateTime, ultdir.ftLastWriteTime.dwLowDateTime );

            OutputDebugString( "antes de FileTimeToSystemTime()\n" );

            if( FileTimeToSystemTime(&ultdir.ftLastWriteTime, &stUTC) )
             fprintf( fichero, "\t%2d:%2d:%2d  %2d/%2d/%4d\n", stUTC.wHour, stUTC.wMinute,stUTC.wSecond,stUTC.wDay,stUTC.wMonth,stUTC.wYear);    
           }
           // Sigue buscando por el directorio FTP
           while ( InternetFindNextFile( FtpHandle, &dirtemp ) ) {
            ultdir = dirtemp;

            if( fichero ) {
             fprintf( fichero, "%s\t%8X\t%8X", ultdir.cFileName, ultdir.ftLastWriteTime.dwHighDateTime, ultdir.ftLastWriteTime.dwLowDateTime );
             if( FileTimeToSystemTime(&ultdir.ftLastWriteTime, &stUTC) )
              fprintf( fichero, "\t%2d:%2d:%2d  %2d/%2d/%4d\n", stUTC.wHour, stUTC.wMinute,stUTC.wSecond,stUTC.wDay,stUTC.wMonth,stUTC.wYear);    
            }
           }
           
                     
           // Devuelve al PRG el nombre del último fichero creado/modificado en el directorio FTP.
           hb_retc( ultdir.cFileName );
         }
      else
         hb_retc( "" );

    OutputDebugString( "antes de InternetCloseHandle()\n" );        
    InternetCloseHandle( FtpHandle );

    if( fichero )
     fclose(fichero);
}
#pragma ENDDUMP


Faltan unos pocos por poner, por favor complétalo tu.

Para ver los mensajes que genera OutputDebugString() necesitas tener ejecutándose esta utilidad:

https://bitbucket.org/fivetech/fivewin-contributions/downloads/dbwin32.zip
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Migrando de FWH 32 a FWH 64 - windows.h

Postby Verhoven » Mon Jan 19, 2015 11:39 am

El error lo da en el primer fprintf que aparece. No genera ni el fichero de error propio de FW, sale el aviso por si se quiere reportar el error a Microsoft y se sale sin más.

El código completo es el siguiente:
Code: Select all  Expand view
HB_FUNC( FTPLASTFILEINDIR_PRUEBAS )  //Método por el último nombre en el listado obtenido.
{  
    WIN32_FIND_DATA ultdir;
    WIN32_FIND_DATA dirtemp;
    SYSTEMTIME stUTC;
    HINTERNET FtpHandle;
    FILE * fichero;

    MessageBox( GetActiveWindow(), "Antes de hb_fsOpen() y antes de FtpFindFirstFile()", "Informacion", 0x40 );
    OutputDebugString( "Antes de hb_fsOpen() y antes de FtpFindFirstFile()\n" );

    fichero = (FILE *) hb_fsOpen( "LISTFTP.DAT", FO_WRITE );
   
    OutputDebugString( "despues de hb_fsOpen() y antes de FtpFindFirstFile()\n" );
 
    FtpHandle = FtpFindFirstFile( ( HINTERNET ) hb_parnl( 1 ), hb_parc( 2 ), &dirtemp, hb_parnl( 3 ), hb_parnl( 4 ) ) ;
   
    if ( FtpHandle )
    {
           ultdir = dirtemp;

           if( fichero ) {
            OutputDebugString( "antes de fprintf()\n" );
 
            fprintf( fichero, "%s\t%8X\t%8X", ultdir.cFileName, ultdir.ftLastWriteTime.dwHighDateTime, ultdir.ftLastWriteTime.dwLowDateTime );

            OutputDebugString( "antes de FileTimeToSystemTime()\n" );

            if( FileTimeToSystemTime(&ultdir.ftLastWriteTime, &stUTC) ) {
             fprintf( fichero, "\t%2d:%2d:%2d  %2d/%2d/%4d\n", stUTC.wHour, stUTC.wMinute,stUTC.wSecond,stUTC.wDay,stUTC.wMonth,stUTC.wYear);    
             OutputDebugString( "después de FileTimeToSystemTime\n" );
             }
           }
           // Sigue buscando por el directorio FTP
           OutputDebugString( "Antes del while\n" );
           while ( InternetFindNextFile( FtpHandle, &dirtemp ) ) {
            ultdir = dirtemp;

            if( fichero ) {
             fprintf( fichero, "%s\t%8X\t%8X", ultdir.cFileName, ultdir.ftLastWriteTime.dwHighDateTime, ultdir.ftLastWriteTime.dwLowDateTime );
             if( FileTimeToSystemTime(&ultdir.ftLastWriteTime, &stUTC) )
              fprintf( fichero, "\t%2d:%2d:%2d  %2d/%2d/%4d\n", stUTC.wHour, stUTC.wMinute,stUTC.wSecond,stUTC.wDay,stUTC.wMonth,stUTC.wYear);    
            }
           }
           OutputDebugString( "Después del while\n" );
                     
           // Devuelve al PRG el nombre del último fichero creado/modificado en el directorio FTP.
           hb_retc( ultdir.cFileName );
           OutputDebugString( "Después del hb_retc\n" );
         } else {
         hb_retc( "" );
         OutputDebugString( "Después del hb_retc detrás del else linea 483\n" );
         }
    OutputDebugString( "antes de InternetCloseHandle()\n" );        
    InternetCloseHandle( FtpHandle );

    if( fichero ) {
     OutputDebugString( "antes de hb_fsClose\n" );
     hb_fsClose( (HB_FHANDLE)fichero );
     OutputDebugString( "después de hb_fsClose\n" );
     //fclose(fichero);
     }
}
Verhoven
 
Posts: 520
Joined: Sun Oct 09, 2005 7:23 pm

Re: Migrando de FWH 32 a FWH 64 - windows.h

Postby Antonio Linares » Mon Jan 19, 2015 2:41 pm

Paz,

Entonces el primer fprintf() no llega a funcionar, verdad ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Migrando de FWH 32 a FWH 64 - windows.h

Postby Antonio Linares » Mon Jan 19, 2015 2:46 pm

Paz,

Añade esta declaración antes de tu función:

FILE * hb_fopen( const char * path, const char * mode );

y cambia hb_fsOpen() por hb_fopen(). Para cerrar el fichero usa fclose().
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: russimicro and 58 guests