NtRegisterThreadTerminatePort

NTSTATUS __stdcall NtRegisterThreadTerminatePort(PVOID PortHandle){
  _ETHREAD *CurrentThread; 
  NTSTATUS result; 
  _QWORD *PoolWithQuotaTag; 
  _QWORD *v4; 
  PADAPTER_OBJECT DmaAdapter; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  DmaAdapter = 0i64;
  result = ObReferenceObjectByHandle(
             PortHandle,
             1u,
             LpcPortObjectType,
             *((_BYTE *)CurrentThread + 562),
             (PVOID *)&DmaAdapter,
             0i64);
  if( result >= 0 )
  {
    PoolWithQuotaTag = ExAllocatePoolWithQuotaTag((POOL_TYPE)9, 0x10ui64, 0x70547350ui64);
    v4 = PoolWithQuotaTag;
    if( PoolWithQuotaTag )
    {
      PoolWithQuotaTag[1] = DmaAdapter;
      *PoolWithQuotaTag = *((_QWORD *)CurrentThread + 139);
      result = 0;
      *((_QWORD *)CurrentThread + 139) = v4;
    }
    else
    {
      HalPutDmaAdapter(DmaAdapter);
      return -1073741670;
    }
  }
  return result;
}

Referenced by:

No references.