NtAlpcDisconnectPort

NTSTATUS __stdcall NtAlpcDisconnectPort(VOID *PortHandle, UINT64 Flags){
  _ETHREAD *CurrentThread; 
  unsigned int v3; 
  int v4; 
  _ALPC_PORT *AlpcPort; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v3 = Flags;
  --CurrentThread->Tcb.KernelApcDisable;
  if( (Flags & 0xFFFFFFFE) != 0 )
  {
    v4 = -1073741811;
  }
  else
  {
    AlpcPort = 0i64;
    v4 = ObReferenceObjectByHandle(
           PortHandle,
           1ui64,
           AlpcPortObjectType,
           KeGetCurrentThread()->PreviousMode,
           (VOID **)&AlpcPort,
           0i64);
    if( v4 >= 0 )
    {
      v4 = AlpcpDisconnectPort(AlpcPort, v3);
      HalPutDmaAdapter((PADAPTER_OBJECT)AlpcPort);
    }
  }
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  return v4;
}

Referenced by:

No references.