ExpWin32DeleteProcedure
VOID __stdcall ExpWin32DeleteProcedure(VOID *Object){
unsigned __int64 v1;
_OBJECT_TYPE *v2;
_WIN32_CALLOUTS_OPERATION v3;
UINT64 SessionId;
VOID *Parameters;
LODWORD(SessionId) = *(_DWORD *)Object;
v1 = (unsigned __int8)*((char *)Object - 24) ^ (unsigned __int64)(unsigned __int8)((unsigned __int16)((_WORD)Object - 48) >> 8);
Parameters = Object;
v2 = (_OBJECT_TYPE *)ObTypeIndexTable[(unsigned __int8)ObHeaderCookie ^ v1];
if( v2 == ExActivationObjectType )
{
v3 = Win32WerStartCallout|Win32DesktopOpenCallout;
goto LABEL_6;
}
if( v2 == ExCoreMessagingObjectType )
{
v3 = Win32CoreMessagingObjectDeleteCallout;
goto LABEL_6;
}
if( v2 == ExRawInputManagerObjectType )
{
v3 = Win32RawInputManagerObjectDeleteCallout;
goto LABEL_6;
}
if( v2 == ExCompositionObjectType )
{
v3 = Win32CompositionObjectDeleteCallout;
LABEL_6:
PsInvokeWin32Callout(v3, &Parameters, PsWin32SessionAttachSingle, &SessionId);
return;
}
if( v2 == (_OBJECT_TYPE *)ExDesktopObjectType )
{
v3 = Win32DesktopDeleteCallout;
goto LABEL_6;
}
if( v2 == ExWindowStationObjectType )
{
v3 = Win32WindowStationDeleteCallout;
goto LABEL_6;
}
}Referenced by:
No references.