EtwpAllocDataBlock
INT64 __fastcall EtwpAllocDataBlock(
UINT64 DataBlockSize,
_ETWP_NOTIFICATION_HEADER *InDataBlock,
_ETWP_NOTIFICATION_HEADER **OutDataBlock){
unsigned int v3;
unsigned int v6;
UINT8 *PoolWithTag;
_ETWP_NOTIFICATION_HEADER *v8;
v3 = 0;
*OutDataBlock = 0i64;
if( InDataBlock && InDataBlock->NotificationSize != (_DWORD)DataBlockSize )
{
return(unsigned int)-1073741820;
}
else
{
v6 = DataBlockSize;
PoolWithTag = (UINT8 *)ExAllocatePoolWithTag(PagedPool, (unsigned int)DataBlockSize, 0x44777445ui64);
v8 = (_ETWP_NOTIFICATION_HEADER *)PoolWithTag;
if( PoolWithTag )
{
if( InDataBlock )
memmove(PoolWithTag, (UINT8 *)InDataBlock, v6);
else
memset((INT64)PoolWithTag, 0i64);
v8->RefCount = 1;
*OutDataBlock = v8;
}
else
{
return(unsigned int)-1073741801;
}
}
return v3;
}Referenced by:
EtwpBuildNotificationPacket
EtwpClearSessionAndUnreferenceEntry
EtwpEnableGuid
EtwpNotifyGuid
EtwpQueueReply