-------------------------------------------------------------------------------------------------------
[BUG/PRB.] VFP 9.0 FIX - THE NUMBER OF TIMES TO TRY AGAIN AFTER CREATING COMPOUND FILE FAILED
January 2026
-------------------------------------------------------------------------------------------------------
CCB
1. BUG:
In vfp9 (and vfp6, vfp7, vfp8), somtimes the create compound file command fails on Windows Vista or later.
2. CAUSE:
There are some compatible problems when the create compound file command calls the StgCreateDocfile Windows API
for the Windows Defender program or the antivirus programs.
Now if the create compound file command calling the StgCreateDocfile Windows API failed,
it will call the StgCreateDocfile Windows API many times again.
There are some BUGs in the following code.
3. RESOLUTION:
We can write some code to fix the BUG.
Label7ff775 ::
push ebp ;0x007ff775 : 55
mov ebp , esp ;0x007ff776 : 8bec
sub esp , 0110h ;0x007ff778 : 81ec10010000
mov eax , dword ptr [ Data937090 ] ;0x007ff77e : a190709300
push ebx ;0x007ff783 : 53
push esi ;0x007ff784 : 56
mov esi , dword ptr [ ebp + 8 ] ;0x007ff785 : 8b7508
add esi , 030h ;0x007ff788 : 83c630
xor ebx , ebx ;0x007ff78b : 33db
cmp dword ptr [esi] , ebx ;0x007ff78d : 391e
mov dword ptr [ ebp - 4 ] , eax ;0x007ff78f : 8945fc
push edi ;0x007ff792 : 57
jne Label7ff7ad ;0x007ff793 : 7518
;
; --------------------------------------------------------------------------------------------
; VFP 9.0 FIX - THE NUMBER OF TIMES TO TRY AGAIN AFTER CREATING COMPOUND FILE FAILED
; August 2023
; --------------------------------------------------------------------------------------------
; CCB
;
; The number of times to try again after creating compound file failed.
;
; 2023/8/2, by ccb
;
; push esi ;0x007ff795 : 56
; push ebx ;0x007ff796 : 53
; pushd 04001012h ;0x007ff797 : 6812100004
; push ebx ;0x007ff79c : 53
; call StgCreateDocfile ;0x007ff79d : ff15e47b9100
mov dword ptr vfpa_createcompoundfile_createcompoundfile_cnt,00h
Label7ff795 ::
push esi
push ebx
pushd 04001012h
push ebx
call StgCreateDocfile
test eax , eax
je Label7ff7a3
mov ecx,dword ptr vfpa_sys9139_data
inc dword ptr vfpa_createcompoundfile_createcompoundfile_cnt
cmp dword ptr vfpa_createcompoundfile_createcompoundfile_cnt,ecx
ja Label7ff7a3
push dword ptr vfpa_sys9074_data
call Sleep
jmp Label7ff795
Label7ff7a3 ::
mov edi , eax ;0x007ff7a3 : 8bf8
cmp edi , ebx ;0x007ff7a5 : 3bfb
jne Label7ff84b ;0x007ff7a7 : 0f859e000000
Label7ff7ad ::
mov ecx , dword ptr [ ebp + 12 ] ;0x007ff7ad : 8b4d0c
pushd 0105h ;0x007ff7b0 : 6805010000
add ecx , 04h ;0x007ff7b5 : 83c104
lea edi , dword ptr [ ebp + 0FFFFFEF4h ] ;0x007ff7b8 : 8dbdf4feffff
call Fun4a742a ;0x007ff7be : e8677ccaff
call Fun53d093 ;0x007ff7c3 : e8cbd8d3ff
push eax ;0x007ff7c8 : 50
push ebx ;0x007ff7c9 : 53
pushd 0FFFFFFFFh ;0x007ff7ca : 6aff
mov eax , edi ;0x007ff7cc : 8bc7
push eax ;0x007ff7ce : 50
lea ebx , dword ptr [ ebp + 0FFFFFEF0h ] ;0x007ff7cf : 8d9df0feffff
call Fun4d9aab ;0x007ff7d5 : e8d1a2cdff
mov ebx , eax ;0x007ff7da : 8bd8
xor edi , edi ;0x007ff7dc : 33ff
cmp ebx , edi ;0x007ff7de : 3bdf
je Label7ff7f4 ;0x007ff7e0 : 7412
mov eax , dword ptr [esi] ;0x007ff7e2 : 8b06
cmp eax , edi ;0x007ff7e4 : 3bc7
je Label7ff7ee ;0x007ff7e6 : 7406
mov ecx , dword ptr [eax] ;0x007ff7e8 : 8b08
push eax ;0x007ff7ea : 50
call dword ptr [ ecx + 8 ] ;0x007ff7eb : ff5108
Label7ff7ee ::
mov dword ptr [esi] , edi ;0x007ff7ee : 893e
mov eax , ebx ;0x007ff7f0 : 8bc3
jmp Label7ff84d ;0x007ff7f2 : eb59
Label7ff7f4 ::
cmp dword ptr [ ebp + 20 ] , edi ;0x007ff7f4 : 397d14
mov eax , dword ptr [ ebp + 8 ] ;0x007ff7f7 : 8b4508
lea ecx , dword ptr [ eax + 32 ] ;0x007ff7fa : 8d4820
push ecx ;0x007ff7fd : 51
push dword ptr [esi] ;0x007ff7fe : ff36
push eax ;0x007ff800 : 50
push edi ;0x007ff801 : 57
pushd 01h ;0x007ff802 : 6a01
pushd offset Data920d04 ;0x007ff804 : 68040d9200
push dword ptr [ ebp + 0FFFFFEF0h ] ;0x007ff809 : ffb5f0feffff
je Label7ff819 ;0x007ff80f : 7408
call OleCreateLinkToFile ;0x007ff811 : ff15a87b9100
jmp Label7ff824 ;0x007ff817 : eb0b
Label7ff819 ::
pushd offset Data9223dc ;0x007ff819 : 68dc239200
call OleCreateFromFile ;0x007ff81e : ff15ac7b9100
Label7ff824 ::
lea esi , dword ptr [ ebp + 0FFFFFEF0h ] ;0x007ff824 : 8db5f0feffff
mov edi , eax ;0x007ff82a : 8bf8
call Fun4d6e5f ;0x007ff82c : e82e76cdff
test edi , edi ;0x007ff831 : 85ff
jne Label7ff84b ;0x007ff833 : 7516
mov esi , dword ptr [ ebp + 8 ] ;0x007ff835 : 8b7508
mov eax , dword ptr [esi] ;0x007ff838 : 8b06
push esi ;0x007ff83a : 56
call dword ptr [ eax + 112 ] ;0x007ff83b : ff5070
mov edi , eax ;0x007ff83e : 8bf8
test edi , edi ;0x007ff840 : 85ff
jne Label7ff84b ;0x007ff842 : 7507
or dword ptr [ esi + 0A0h ] , 01h ;0x007ff844 : 838ea000000001
Label7ff84b ::
mov eax , edi ;0x007ff84b : 8bc7
Label7ff84d ::
mov ecx , dword ptr [ ebp - 4 ] ;0x007ff84d : 8b4dfc
pop edi ;0x007ff850 : 5f
pop esi ;0x007ff851 : 5e
pop ebx ;0x007ff852 : 5b
call Fun42bf1d ;0x007ff853 : e8c5c6c2ff
leave ;0x007ff858 : c9
ret 010h ;0x007ff859 : c21000
4. APPLIES TO:
VFP 6.0.8167.0
VFP 6.0.8961.0 (SP5)
VFP 7.0.0.9262
VFP 7.0.0.9465 (SP1)
VFP 8.0.0.2521
VFP 8.0.0.3117 (SP1)
VFP 9.0.0.2412
VFP 9.0.0.3504 (SP1)
VFP 9.0.0.4611 (SP2)
VFP 9.0.0.5015 (SP2)
VFP 9.0.0.5411 (SP2)
VFP 9.0.0.5721 (SP2)
VFP 9.0.0.5815 (SP2)
VFP 9.0.0.6303 (SP2)
VFP 9.0.0.6602 (SP2)
VFP 9.0.0.7423 (SP2)
The bug has been fixed in VFP Advanced.
5. REFERENCE WEBSITES:
1, baiyujia.com:
http://www.baiyujia.com
http://www.baiyujia.com/vfpdocuments/f_vfp9fix278.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix65.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix66.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix67.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix68.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix69.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix70.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix71.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix72.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix73.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix74.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix84.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix85.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix107.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix108.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix109.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix110.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix143.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix144.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix145.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix146.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix147.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix148.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix149.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix150.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix203.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix261.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix262.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix269.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix270.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix348.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix349.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix350.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix351.asp
2, microsoft.com:
https://devblogs.microsoft.com/oldnewthing/20120907-00/?p=6663
6. OTHER:
For reference only, there is no guarantees.
Any questions or suggestions, please send me an email at ccb2000@163.com.
|