AlpcpMapLegacyPortRemoteView
INT64 __fastcall AlpcpMapLegacyPortRemoteView(INT64 *Object, INT64 a2, INT64 a3){
INT64 v3;
INT64 *v4;
INT64 *v7;
v3 = *(_QWORD *)(a2 + 40);
v4 = Object + 44;
ExAcquirePushLockSharedEx((UINT64)(Object + 44), 0i64);
AlpcpLockForCachedReferenceBlob(*(PVOID *)(v3 + 16));
v7 = *(INT64 **)(v3 + 24);
if( Object != v7 )
{
AlpcpRemoveResourcePort((INT64)v7, v3);
HalPutDmaAdapter(*(PADAPTER_OBJECT *)(v3 + 24));
ObfReferenceObject(Object);
*(_QWORD *)(v3 + 24) = Object;
AlpcpInsertResourcePort(Object, v3);
}
*(_OWORD *)a3 = 0i64;
*(_QWORD *)(a3 + 16) = 0i64;
*(_DWORD *)a3 = 24;
*(_QWORD *)(a3 + 16) = *(_QWORD *)(v3 + 40);
*(_QWORD *)(a3 + 8) = *(_QWORD *)(v3 + 48);
AlpcpUnlockBlob(*(PVOID *)(v3 + 16));
if( _InterlockedCompareExchange64(v4, 0i64, 17i64) != 17 )
ExfReleasePushLockShared(v4);
KeAbPostRelease(v4);
return 0i64;
}Referenced by:
AlpcpAcceptConnectPort