; **********************************************************************************
; ***************************** FileSecureDelete ***********************************
; **********************************************************************************
ALIGN 16
FileSecureDelete PROC USES RDI __lpszFileName:LPSTR PARMAREA = 4 * QWORD
LOCAL _szTmp[MAX_PATH + 4]:BYTE
LOCAL _Sh:SHFILEOPSTRUCT
jrcxz @Error
mov rdi,rcx
call PathFileExistsA
test eax,eax
jz @EndOfFunction
lea rcx,_Sh
mov edx,SIZEOF SHFILEOPSTRUCT
call MemSetTo0
lea rcx,_szTmp ; Doit etre terminee par un double '\0'
mov edx,SIZEOF _szTmp
call MemSetTo0
mov rcx,rax
mov rdx,rdi
call lstrcpyA
mov _Sh.wFunc,FO_DELETE ;
mov _Sh.pFrom,rax
mov _Sh.fFlags,FOF_ALLOWUNDO or FOF_FILESONLY or FOF_NOCONFIRMATION or FOF_NOERRORUI or FOF_SILENT or FOF_NORECURSION ;
lea rcx,_Sh
call SHFileOperationA
and eax,00000000ffffffffh
jnz @Error
inc eax
Ret
; ===========================================================================================
; ===========================================================================================
ALIGN 16
@Error :
xor eax,eax
ret
; ===========================================================================================
; ===========================================================================================
ALIGN 16
@EndOfFunction :
ret
FileSecureDelete ENDP