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.