NtRequestPort

NTSTATUS __fastcall NtRequestPort(UINT64 a1, __m256i *a2){
  int v4; 
  _ETHREAD *CurrentThread; 
  _ALPC_DISPATCH_CONTEXT DispatchContext; 
  PVOID Object; 

  memset(&DispatchContext, 0i64, sizeof(DispatchContext));
  Object = 0i64;
  v4 = ObReferenceObjectByHandle(
         (VOID *)a1,
         1ui64,
         AlpcPortObjectType,
         KeGetCurrentThread()->PreviousMode,
         &Object,
         0i64);
  if( v4 >= 0 )
  {
    DispatchContext.PortObject = (_ALPC_PORT *)Object;
    DispatchContext.Flags = 0x10000;
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --CurrentThread->Tcb.KernelApcDisable;
    v4 = AlpcpSendMessage(&DispatchContext, (_PORT_MESSAGE *)a2, 0i64, KeGetCurrentThread()->PreviousMode);
    KeLeaveCriticalRegionThread(KeGetCurrentThread());
    HalPutDmaAdapter((PADAPTER_OBJECT)Object);
  }
  return v4;
}

Referenced by:

No references.