EtwpGetPsmKeyExtendedHeaderItem

VOID __stdcall EtwpGetPsmKeyExtendedHeaderItem(_ETWP_HEADER_EXTENDED_DATA_ITEM *PsmKeyItem){
  _EPROCESS *Process; 
  __int64 v3; 
  VOID *v4; 
  NTSTATUS v5; 
  UINT64 v6; 
  int v7; 
  UINT8 SystemAppIdentifier; 
  UINT8 PackagedApplication; 
  UINT64 PsmKeySize; 

  SystemAppIdentifier = 0;
  PsmKeySize = 0i64;
  Process = KeGetCurrentThread()->ApcState.Process;
  v3 = 8i64;
  v4 = PsReferencePrimaryToken(Process);
  PsQueryProcessAttributesByToken(v4, &SystemAppIdentifier, &PackagedApplication);
  if( SystemAppIdentifier )
  {
    PsmKeySize = 466i64;
    v5 = EtwpQueryPsmKey(v4, (WCHAR *)&PsmKeyItem[1], &PsmKeySize);
    v6 = PsmKeySize;
    if( v5 < 0 )
      v6 = 0i64;
    v3 = v6 + 8;
  }
  else
  {
    LOWORD(v6) = PsmKeySize;
  }
  ObFastDereferenceObject(&Process->Token, v4);
  *(_DWORD *)&PsmKeyItem->ExtType = 9;
  PsmKeyItem->DataSize = v6;
  v7 = (v3 + 7) & 0xFFFFFFF8;
  PsmKeyItem->Size = v7;
  memset((char *)PsmKeyItem + v3, 0i64, v7 - v3);
}

Referenced by:

EtwpWriteUserEvent