CmCallbackGetKeyObjectID

NTSTATUS __stdcall CmCallbackGetKeyObjectID(
        PLARGE_INTEGER Cookie,
        PVOID Object,
        PULONG_PTR ObjectID,
        PCUNICODE_STRING *ObjectName){
  unsigned __int64 v5; 
  NTSTATUS started; 
  unsigned __int8 *v7; 
  _UNICODE_STRING *KeyPath; 
  INT64 v10[2]; 
  PPRIVILEGE_SET Privileges[2]; 
  _KAPC_STATE ApcState; 

  KeyPath = 0i64;
  *(_OWORD *)v10 = 0i64;
  WORD1(v10[0]) = -1;
  memset(&ApcState, 0, sizeof(ApcState));
  *(_OWORD *)Privileges = 0i64;
  if( !Object || *(_DWORD *)Object != 1803104306 || !Cookie )
    goto LABEL_16;
  v5 = *((_QWORD *)Object + 1);
  if( ObjectID )
    *ObjectID = v5;
  if( !ObjectName )
  {
    started = 0;
    goto LABEL_17;
  }
  if( (v5 & 1) == 0 )
  {
    CmpAttachToRegistryProcess(&ApcState);
    CmpLockRegistry();
    started = CmpStartKcbStackForTopLayerKcb((INT64)v10, v5);
    if( started >= 0 )
    {
      CmpLockKcbStackShared((INT64)v10);
      if( *(_QWORD *)(v5 + 80) && (int)CmpConstructAndCacheName((_CM_KEY_CONTROL_BLOCK *)v5, &KeyPath, v7) >= 0 )
      {
        started = 0;
        *ObjectName = KeyPath;
      }
      else
      {
        started = -1073741670;
      }
      CmpUnlockKcbStack((INT64)v10);
    }
    CmpUnlockRegistry();
    KiUnstackDetachProcess(&ApcState, 0i64);
  }
  else
  {
LABEL_16:
    started = -1073741811;
  }
LABEL_17:
  if( Privileges[1] )
    CmSiFreeMemory(Privileges[1]);
  return started;
}

Referenced by:

EtwpRegTraceCallback