WdipSemCaptureState
NTSTATUS __stdcall WdipSemCaptureState(_GUID *ProviderGuid, CHAR a2){
char v3;
int v4;
unsigned __int16 v5;
unsigned int Data1;
unsigned int v8;
__int64 v9;
UINT8 v10;
UINT64 EnableProperty;
UINT64 ControlCode;
v3 = 0;
v4 = 0;
if( !a2 )
{
if( !ProviderGuid )
return -1073741811;
v5 = _InterlockedExchange(&WdipContextLoggerId, WdipContextLoggerId);
Data1 = ProviderGuid[2].Data1;
if( Data1 )
{
v8 = Data1 - 1;
if( v8 )
{
if( v8 != 1 )
return v4;
LODWORD(ControlCode) = 2;
LODWORD(EnableProperty) = 0;
}
else
{
v9 = *(_QWORD *)ProviderGuid[2].Data4;
if( !*(_BYTE *)(v9 + 69) )
{
v3 = 1;
v10 = BYTE2(ProviderGuid[1].Data1);
LODWORD(ControlCode) = 1;
if( v10 <= *(_BYTE *)(v9 + 48) )
v10 = *(_BYTE *)(v9 + 48);
LODWORD(EnableProperty) = *(_DWORD *)&ProviderGuid[2].Data2 | *(_DWORD *)(v9 + 64);
v4 = WdipSemEnableDisableTrace(
v5,
ProviderGuid,
v10,
*(_QWORD *)ProviderGuid[1].Data4 | *(_QWORD *)(v9 + 56),
EnableProperty,
ControlCode);
if( v4 < 0 )
return v4;
}
LODWORD(ControlCode) = 2;
LODWORD(EnableProperty) = 0;
v4 = WdipSemEnableDisableTrace(v5, ProviderGuid, 0, 0i64, EnableProperty, ControlCode);
if( !v3 )
return v4;
LODWORD(ControlCode) = 0;
LODWORD(EnableProperty) = 0;
}
return WdipSemEnableDisableTrace(v5, ProviderGuid, 0, 0i64, EnableProperty, ControlCode);
}
}
return v4;
}Referenced by:
WdipSemDisableContextProvider