NtDeleteFile
NTSTATUS __fastcall NtDeleteFile(INT64 a1){
char PreviousMode;
_ETHREAD *CurrentThread;
NTSTATUS v4;
_ECP_LIST *v5;
NTSTATUS result;
UINT64 DesiredAccess;
PVOID Handle;
_OPEN_PACKET OpenPacket;
char v10[272];
memset(v10, 0i64, sizeof(v10));
PreviousMode = KeGetCurrentThread()->PreviousMode;
memset(&OpenPacket, 0i64, sizeof(OpenPacket));
*(_DWORD *)&OpenPacket.Type = 14155784;
OpenPacket.CreateOptions = 4096;
OpenPacket.ShareAccess = 7;
OpenPacket.LocalFileObject = (_DUMMY_FILE_OBJECT *)v10;
memset(&OpenPacket.DriverCreateContext, 0, sizeof(OpenPacket.DriverCreateContext));
OpenPacket.DriverCreateContext.Size = 40;
OpenPacket.Disposition = 1;
OpenPacket.DeleteOnly = 1;
OpenPacket.OriginalAttributes = (_OBJECT_ATTRIBUTES *)a1;
OpenPacket.InternalFlags = 32;
OpenPacket.DriverCreateContext.SiloContext = PsGetCurrentSilo();
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
++CurrentThread->Tcb.OtherOperationCount;
__incgsdword(0x2EE4u);
LODWORD(DesiredAccess) = 0x10000;
v4 = ObOpenObjectByNameEx(
(_OBJECT_ATTRIBUTES *)a1,
(_OBJECT_TYPE *)IoFileObjectType,
PreviousMode,
0i64,
DesiredAccess,
&OpenPacket,
OpenPacket.DriverCreateContext.SiloContext,
&Handle);
IopCleanupExtraCreateParameters(&OpenPacket, v5);
result = OpenPacket.FinalStatus;
if( OpenPacket.ParseCheck != -1096154543 )
return v4;
return result;
}Referenced by:
No references.