EtwpAllocGuidEntry
_ETW_GUID_ENTRY *__stdcall EtwpAllocGuidEntry(_GUID *Guid){
const _GUID *v1;
const _GUID *v2;
_ETW_GUID_ENTRY *result;
_ETW_GUID_ENTRY *v5;
_GUID v6;
VOID *SecurityDescriptor;
SecurityDescriptor = 0i64;
v2 = v1;
result = (_ETW_GUID_ENTRY *)ExAllocatePoolWithTag(0x200ui64, 0x1A8ui64, 1199010885i64);
v5 = result;
if( result )
{
memset(result, 0i64, sizeof(_ETW_GUID_ENTRY));
v5->RefCount = 1i64;
v6 = *v2;
v5->LockOwner = 0i64;
v5->SiloState = (_ETW_SILODRIVERSTATE *)Guid;
v5->Guid = v6;
v5->RegListHead.Blink = &v5->RegListHead;
v5->RegListHead.Flink = &v5->RegListHead;
v5->SiloGuidList.Blink = &v5->SiloGuidList;
v5->SiloGuidList.Flink = &v5->SiloGuidList;
v5->Lock._bf_0 = 0i64;
EtwpGetSecurityDescriptorByGuid(v2, &SecurityDescriptor);
if( ObLogSecurityDescriptor(SecurityDescriptor, &v5->SecurityDescriptor, 1ui64) < 0 )
{
ExFreePoolWithTag(v5, 0);
v5 = 0i64;
}
EtwpFreeSecurityDescriptor(&SecurityDescriptor);
if( v5 )
_InterlockedIncrement(&v5->SiloState->EtwpCounters.GuidCount);
return v5;
}
return result;
}Referenced by:
EtwpAddGuidEntry