NtAlpcDeletePortSection

NTSTATUS __fastcall NtAlpcDeletePortSection(VOID *PortHandle, UINT64 Flags, VOID *SectionHandle){
  _ETHREAD *CurrentThread; 
  int v5; 
  _BLOB_TYPE *v6; 
  _ADAPTER_OBJECT *v7; 
  VOID *v8; 
  VOID *v9; 
  PADAPTER_OBJECT DmaAdapter; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  if( (_DWORD)Flags )
  {
    v5 = -1073741811;
  }
  else
  {
    DmaAdapter = 0i64;
    v5 = ObReferenceObjectByHandle(
           PortHandle,
           1ui64,
           AlpcPortObjectType,
           KeGetCurrentThread()->PreviousMode,
           (VOID **)&DmaAdapter,
           0i64);
    if( v5 >= 0 )
    {
      v7 = DmaAdapter;
      v8 = AlpcReferenceBlobByHandle(
             (_ALPC_HANDLE_TABLE *)&DmaAdapter->AdapterObject.ContiguousMapRegisters[2].Buffer,
             SectionHandle,
             (_BLOB_TYPE *)&AlpcSectionType,
             v6);
      v9 = v8;
      if( v8 )
      {
        if( AlpcpDeleteBlob(v8) )
          AlpcpDereferenceBlobEx(v9, 1i64);
        else
          v5 = -1073741738;
        AlpcpDereferenceBlobEx(v9, 1i64);
      }
      else
      {
        v5 = -1073741816;
      }
      HalPutDmaAdapter(v7);
    }
  }
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  return v5;
}

Referenced by:

No references.