EtwpUpdateStackTracing
NTSTATUS __stdcall EtwpUpdateStackTracing(_WMI_LOGGER_CONTEXT *LoggerContext, UINT64 *StackTraceFilter, UINT64 Count){
unsigned int v3;
__int64 v6;
NTSTATUS v7;
int v8;
v3 = Count;
v6 = 0i64;
v7 = 0;
if( (_DWORD)Count )
{
if( (unsigned int)Count > 0x100 )
return -1073741811;
if( (LoggerContext->Flags & 0x80u) != 0 )
{
RtlClearAllBits(&LoggerContext->HookIdMap);
}
else
{
EtwpInitializeStackTracing((_ETW_STACK_TRACE_BLOCK *)LoggerContext, (UINT64)StackTraceFilter);
v7 = v8;
if( v8 < 0 )
return v7;
}
while( (unsigned int)v6 < v3 )
{
_bittestandset((signed __int32 *)LoggerContext->HookIdMap.Buffer, *((_WORD *)StackTraceFilter + 2 * v6) & 0x1FFF);
v6 = (unsigned int)(v6 + 1);
}
}
else if( (LoggerContext->Flags & 0x80u) != 0 )
{
RtlClearAllBits(&LoggerContext->HookIdMap);
}
return v7;
}Referenced by:
EtwSetPerformanceTraceInformation
EtwpCheckForStackTracingExtension