-------------------------------------------------------------------------------- [NEW.....] VFP 9.0 FIX - THE VFPLMMPROC TERM IN THE CONFIGURATION FILE November 2024 -------------------------------------------------------------------------------- CCB 1. THE VFPLMMPROC TERM: VFPLMMPROC - Specifies the number of processes for Visual FoxPro Large Memory Manager Specifies the number of processes for Visual FoxPro Large Memory Manager. VFPLMMPROC = nValue Parameters nValue The nValue parameter specifies the number of processes for Visual FoxPro Large Memory Manager. The range for nValue is 0 to 16. The default value is 0 for Visual FoxPro Advanced 10.0 and 10.1. The default value is 1 for Visual FoxPro Advanced 10.2 or later. Remarks We ALWAYS set VFPLMMPROC = 0 in Visual FoxPro Advanced 10.0 and 10.1. We set VFPLMMPROC = 0 if the amount of actual physical memory <= 2 GB in Visual FoxPro Advanced 10.2 or later. We set VFPLMMPROC = 1 to 16 if the amount of actual physical memory > 2 GB in Visual FoxPro Advanced 10.2 or later. When Visual FoxPro Advanced 32-bit 10.2 or later version is running on Windows 32-bit system, it creates 1 process for Visual FoxPro Large Memory Manager, it can use 4 GB memory (double of VFP 9.0). When Visual FoxPro Advanced 32-bit 10.2 or later version is running on Windows 64-bit system, it creates 1 to 16 processes for Visual FoxPro Large Memory Manager, it can use 32 GB (maximum) memory. When Visual FoxPro Advanced 64-bit 10.2 or later version is running on Windows 64-bit system, it creates 1 to 16 processes for Visual FoxPro Large Memory Manager, it can use 32 GB (maximum) memory. 2. CAUSE: There are some BUGs in the following code. 3. RESOLUTION: We can write some code to fix the BUG. Fun40a45d :: ; proc near push ebp ;0x0040a45d : 55 lea ebp , dword ptr [ esp - 104 ] ;0x0040a45e : 8d6c2498 sub esp , 0454h ;0x0040a462 : 81ec54040000 mov eax , dword ptr [ Data937090 ] ;0x0040a468 : a190709300 mov ecx , dword ptr [ ebp + 112 ] ;0x0040a46d : 8b4d70 push ebx ;0x0040a470 : 53 push esi ;0x0040a471 : 56 mov esi , dword ptr [ ebp + 116 ] ;0x0040a472 : 8b7574 mov dword ptr [ ebp + 100 ] , eax ;0x0040a475 : 894564 lea eax , dword ptr [ esi + 0642h ] ;0x0040a478 : 8d8642060000 mov dword ptr [ ebp + 0FFFFFD04h ] , eax ;0x0040a47e : 898504fdffff push edi ;0x0040a484 : 57 lea eax , dword ptr [ esi + 0A5Ch ] ;0x0040a485 : 8d865c0a0000 mov dword ptr [ ebp + 0FFFFFD24h ] , eax ;0x0040a48b : 898524fdffff xor ebx , ebx ;0x0040a491 : 33db xor eax , eax ;0x0040a493 : 33c0 inc eax ;0x0040a495 : 40 push ebx ;0x0040a496 : 53 push eax ;0x0040a497 : 50 mov dword ptr [ ebp + 0FFFFFD10h ] , eax ;0x0040a498 : 898510fdffff push ebx ;0x0040a49e : 53 lea eax , dword ptr [ ebp + 0FFFFFF38h ] ;0x0040a49f : 8d8538ffffff push eax ;0x0040a4a5 : 50 mov dword ptr [ ebp + 0FFFFFD28h ] , ebx ;0x0040a4a6 : 899d28fdffff mov dword ptr [ ebp + 0FFFFFF58h ] , ecx ;0x0040a4ac : 898d58ffffff call Fun430428 ;0x0040a4b2 : e8715f0200 cmp eax , 04h ;0x0040a4b7 : 83f804 jne Label40a660 ;0x0040a4ba : 0f85a0010000 lea ecx , dword ptr [ ebp + 0FFFFFF60h ] ;0x0040a4c0 : 8d8d60ffffff mov edx , 0100h ;0x0040a4c6 : ba00010000 lea eax , dword ptr [ ebp + 0FFFFFE38h ] ;0x0040a4cb : 8d8538feffff call Fun42c33e ;0x0040a4d1 : e8681e0200 cmp byte ptr [ ebp + 0FFFFFF60h ] , 05Fh ;0x0040a4d6 : 80bd60ffffff5f jne Label40a540 ;0x0040a4dd : 7561 lea edi , dword ptr [ ebp + 0FFFFFF60h ] ;0x0040a4df : 8dbd60ffffff call Fun43099a ;0x0040a4e5 : e8b0640200 mov edi , eax ;0x0040a4ea : 8bf8 lea eax , dword ptr [ edi - 36 ] ;0x0040a4ec : 8d47dc cmp eax , 034h ;0x0040a4ef : 83f834 ja Label40a540 ;0x0040a4f2 : 774c movzx eax ,byte ptr [ eax + offset Data4134f1 ] ;0x0040a4f4 : 0fb680f1344100 jmp dword ptr [ 4 * eax + offset DataPtr4134e9 ] ;0x0040a4fb : ff2485e9344100 Label40a502 :: cmp dword ptr [ ebp + 120 ] , ebx ;0x0040a502 : 395d78 jne Label5d60f1 ;0x0040a505 : 0f85e6bb1c00 Label40a50b :: xor eax , eax ;0x0040a50b : 33c0 lea ecx , dword ptr [ ebp + 0FFFFFF38h ] ;0x0040a50d : 8d8d38ffffff call Fun43d764 ;0x0040a513 : e84c320300 lea eax , dword ptr [ ebp + 0FFFFFF60h ] ;0x0040a518 : 8d8560ffffff push eax ;0x0040a51e : 50 mov eax , edi ;0x0040a51f : 8bc7 call Fun409f9c ;0x0040a521 : e876faffff mov eax , edi ;0x0040a526 : 8bc7 sub eax , 04Dh ;0x0040a528 : 83e84d je Label5d613c ;0x0040a52b : 0f840bbc1c00 dec eax ;0x0040a531 : 48 je Label5d611c ;0x0040a532 : 0f84e4bb1c00 Label40a538 :: xor eax , eax ;0x0040a538 : 33c0 inc eax ;0x0040a53a : 40 jmp Label40a666 ;0x0040a53b : e926010000 Label40a540 :: cmp dword ptr [ ebp + 0FFFFFF3Ch ] , 06D1h ;0x0040a540 : 81bd3cffffffd1060000 je Label5d615c ;0x0040a54a : 0f840cbc1c00 lea eax , dword ptr [ ebp + 0FFFFFF40h ] ;0x0040a550 : 8d8540ffffff lea ecx , dword ptr [ ebp + 0FFFFFF60h ] ;0x0040a556 : 8d8d60ffffff call Fun415309 ;0x0040a55c : e8a8ad0000 cmp eax , 07h ;0x0040a561 : 83f807 mov dword ptr [ ebp + 0FFFFFD18h ] , eax ;0x0040a564 : 898518fdffff je Label40a5e2 ;0x0040a56a : 7476 cmp eax , 067h ;0x0040a56c : 83f867 je Label40a5e2 ;0x0040a56f : 7471 cmp eax , 030h ;0x0040a571 : 83f830 je Label5d61b3 ;0x0040a574 : 0f8439bc1c00 mov edi , strncmp ;0x0040a57a : 8b3dcc799100 pushd 04h ;0x0040a580 : 6a04 lea eax , dword ptr [ ebp + 0FFFFFE38h ] ;0x0040a582 : 8d8538feffff pushd offset Data9191dc ;0x0040a588 : 68dc919100 push eax ;0x0040a58d : 50 call edi ;0x0040a58e : ffd7 add esp , 0Ch ;0x0040a590 : 83c40c test eax , eax ;0x0040a593 : 85c0 je Label5d61fb ;0x0040a595 : 0f8460bc1c00 pushd 05h ;0x0040a59b : 6a05 lea eax , dword ptr [ ebp + 0FFFFFE38h ] ;0x0040a59d : 8d8538feffff pushd offset Data91cc84 ;0x0040a5a3 : 6884cc9100 push eax ;0x0040a5a8 : 50 call edi ;0x0040a5a9 : ffd7 add esp , 0Ch ;0x0040a5ab : 83c40c test eax , eax ;0x0040a5ae : 85c0 je Label5d61fb ;0x0040a5b0 : 0f8445bc1c00 Label40a5b6 :: cmp dword ptr [ ebp + 120 ] , ebx ;0x0040a5b6 : 395d78 je Label40a5e2 ;0x0040a5b9 : 7427 ; ; --------------------------------------------------------------------- ; VFP 9.0 FIX - THE VFPLMMPROC TERM IN THE CONFIGURATION FILE ; November 2024 ; --------------------------------------------------------------------- ; CCB ; ; The VFPLMMPROC term in the configuration file. ; ; 2024/11/13, by ccb ; lea ecx , dword ptr [ ebp + 0FFFFFF60h ] vfpa_config_vfplmmproc_start: cmp byte ptr [ecx] , 056h ;; V jne vfpa_config_vfplmmproc_end cmp byte ptr [ecx+1] , 046h ;; F jne vfpa_config_vfplmmproc_end cmp byte ptr [ecx+2] , 050h ;; P jne vfpa_config_vfplmmproc_end cmp byte ptr [ecx+3] , 04Ch ;; L jne vfpa_config_vfplmmproc_end cmp byte ptr [ecx+4] , 04Dh ;; M jne vfpa_config_vfplmmproc_end cmp byte ptr [ecx+5] , 04Dh ;; M jne vfpa_config_vfplmmproc_end cmp byte ptr [ecx+6] , 050h ;; P jne vfpa_config_vfplmmproc_end cmp byte ptr [ecx+7] , 052h ;; R jne vfpa_config_vfplmmproc_end cmp byte ptr [ecx+8] , 04Fh ;; O jne vfpa_config_vfplmmproc_end cmp byte ptr [ecx+9] , 043h ;; C jne vfpa_config_vfplmmproc_end cmp byte ptr [ecx+10] , 000h jne vfpa_config_vfplmmproc_end xor edi , edi inc edi push ebx push edi push ebx lea eax , dword ptr [ ebp + 0FFFFFF38h ] push eax call Fun430428 cmp eax , edi jne Label5d6256 cmp dword ptr [ ebp + 0FFFFFF3Ch ] , 010h jne Label5d6256 push ebx push edi push ebx lea eax , dword ptr [ ebp + 0FFFFFF38h ] push eax call Fun430428 cmp eax , 05h jne Label5d6256 mov eax , dword ptr [ Data937fdc ] pushd 10h pushd 00h lea esi , dword ptr [ ebp + 0FFFFFF38h ] mov dword ptr [ ebp + 0FFFFFF58h ] , eax mov byte ptr [ ebp + 0FFFFFF38h ] , 07h call Fun87e084 cmp eax , 0FFFFFFFFh je Label5d6256 mov dword ptr vfpa_sys9083_data,eax vfpa_config_vfplmmproc_end1: IFDEF RAX IF VFPA_VERSION GE 102 jmp vfpa_config_vfplmmproc_end2 mov dword ptr vfpa_sys9083_data,01h ELSE mov dword ptr vfpa_sys9083_data,00h ENDIF ELSE IF VFPA_VERSION GE 102 call vfpa_lmm_iswow64process test eax,eax jne vfpa_config_vfplmmproc_end2 mov dword ptr vfpa_sys9083_data,01h ELSE mov dword ptr vfpa_sys9083_data,00h ENDIF ENDIF vfpa_config_vfplmmproc_end2: IF VFPA_VERSION GE 102 call vfpa_lmm_isphysicalmemorymorethan2gb test eax,eax jne vfpa_config_vfplmmproc_end3 mov dword ptr vfpa_sys9083_data,00h ENDIF vfpa_config_vfplmmproc_end3: IF VFPA_VERSION GE 102 cmp dword ptr vfpa_sys9082_data[8],01h jne vfpa_config_vfplmmproc_end4 cmp dword ptr vfpa_sys9083_data,01h jbe vfpa_config_vfplmmproc_end4 call vfpa_lmm_reset mov eax,dword ptr vfpa_lmm_filemap_lmmcount mov dword ptr vfpa_sys9083_data,eax ENDIF vfpa_config_vfplmmproc_end4: mov eax,dword ptr vfpa_sys9083_data mov dword ptr vfpa_config_vfplmmproc_data,eax jmp Label40a660 vfpa_config_vfplmmproc_end: push ebx ;0x0040a5bb : 53 xor edi , edi ;0x0040a5bc : 33ff inc edi ;0x0040a5be : 47 push edi ;0x0040a5bf : 57 push ebx ;0x0040a5c0 : 53 lea eax , dword ptr [ ebp + 0FFFFFF38h ] ;0x0040a5c1 : 8d8538ffffff push eax ;0x0040a5c7 : 50 call Fun430428 ;0x0040a5c8 : e85b5e0200 cmp eax , edi ;0x0040a5cd : 3bc7 jne Label5d6256 ;0x0040a5cf : 0f8581bc1c00 cmp dword ptr [ ebp + 0FFFFFF3Ch ] , 010h ;0x0040a5d5 : 83bd3cffffff10 jne Label5d6256 ;0x0040a5dc : 0f8574bc1c00 Label40a5e2 :: mov eax , dword ptr [ ebp + 0FFFFFD18h ] ;0x0040a5e2 : 8b8518fdffff cmp eax , 0F6h ;0x0040a5e8 : 3df6000000 ja Label5d6273 ;0x0040a5ed : 0f8780bc1c00 movzx eax ,byte ptr [ eax + offset Data413716 ] ;0x0040a5f3 : 0fb68016374100 jmp dword ptr [ 4 * eax + offset DataPtr413526 ] ;0x0040a5fa : ff248526354100 Label40a601 :: lea edx , dword ptr [ ebp + 0FFFFFD00h ] ;0x0040a601 : 8d9500fdffff lea eax , dword ptr [ ebp + 0FFFFFC68h ] ;0x0040a607 : 8d8568fcffff call Fun42c27f ;0x0040a60d : e86d1c0200 push ebx ;0x0040a612 : 53 push eax ;0x0040a613 : 50 call Fun42c2be ;0x0040a614 : e8a51c0200 cmp eax , ebx ;0x0040a619 : 3bc3 pop ecx ;0x0040a61b : 59 pop ecx ;0x0040a61c : 59 jne Label40a64e ;0x0040a61d : 752f lea eax , dword ptr [ ebp + 0FFFFFD1Ch ] ;0x0040a61f : 8d851cfdffff push eax ;0x0040a625 : 50 lea eax , dword ptr [ ebp + 0FFFFFF38h ] ;0x0040a626 : 8d8538ffffff call Fun40a75a ;0x0040a62c : e829010000 test eax , eax ;0x0040a631 : 85c0 je Label40a64e ;0x0040a633 : 7419 lea eax , dword ptr [ ebp + 0FFFFFD1Ch ] ;0x0040a635 : 8d851cfdffff xor ecx , ecx ;0x0040a63b : 33c9 push eax ;0x0040a63d : 50 inc ecx ;0x0040a63e : 41 call Fun4157c8 ;0x0040a63f : e884b10000 mov eax , dword ptr [ ebp + 116 ] ;0x0040a644 : 8b4574 or dword ptr [ eax + 0A78h ] , 01h ;0x0040a647 : 8388780a000001 Label40a64e :: lea eax , dword ptr [ ebp + 0FFFFFD00h ] ;0x0040a64e : 8d8500fdffff push eax ;0x0040a654 : 50 lea eax , dword ptr [ ebp + 0FFFFFC68h ] ;0x0040a655 : 8d8568fcffff Label40a65b :: call Fun42d200 ;0x0040a65b : e8a02b0200 Label40a660 :: mov eax , dword ptr [ ebp + 0FFFFFD10h ] ;0x0040a660 : 8b8510fdffff Label40a666 :: mov ecx , dword ptr [ ebp + 100 ] ;0x0040a666 : 8b4d64 call Fun42bf1d ;0x0040a669 : e8af180200 pop edi ;0x0040a66e : 5f pop esi ;0x0040a66f : 5e pop ebx ;0x0040a670 : 5b add ebp , 068h ;0x0040a671 : 83c568 leave ;0x0040a674 : c9 ret 010h ;0x0040a675 : c21000 4. APPLIES TO: VFP 10 (VFP Advanced) 5. REFERENCE WEBSITES: 1, baiyujia.com: http://www.baiyujia.com http://www.baiyujia.com/vfpdocuments/f_vfpconfigterms.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix113.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix114.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix282.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix283.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix284.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix285.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix286.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix288.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix294.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix295.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix296.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix297.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix302.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix359.asp 6. OTHER: For reference only, there is no guarantees. Any questions or suggestions, please send me an email at ccb2000@163.com. |