PpLastGoodDeleteFilesCallback
INT64 __stdcall PpLastGoodDeleteFilesCallback(
UNICODE_STRING *FullPathName,
UNICODE_STRING *FileName,
UINT64 FileAttributes,
PVOID Context){
INT64 result;
struct _IO_STATUS_BLOCK IoStatusBlock;
struct _OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING FileHandle;
char FileInformation;
*(&ObjectAttributes.Length + 1) = 0;
memset(&ObjectAttributes.Attributes + 1, 0, 20);
*(_QWORD *)&FileHandle.Length = 0i64;
IoStatusBlock = 0i64;
IopFileUtilClearAttributes(FullPathName);
ObjectAttributes.RootDirectory = 0i64;
ObjectAttributes.Length = 48;
ObjectAttributes.Attributes = 64;
ObjectAttributes.ObjectName = FullPathName;
LODWORD(result) = ZwOpenFile(&FileHandle, (PWCHAR)0x10080);
if( (int)result >= 0 )
{
FileInformation = 1;
ZwSetInformationFile(
*(VOID **)&FileHandle.Length,
&IoStatusBlock,
&FileInformation,
1ui64,
FileDispositionInformation);
ZwClose(*(HANDLE *)&FileHandle.Length);
return 0i64;
}
return result;
}Referenced by:
No references.