AlpcpCreateSectionView
INT64 __fastcall AlpcpCreateSectionView(
_KALPC_SECTION *Section,
_ALPC_PORT *OwnerPort,
UINT64 Offset,
UINT64 Size,
_KALPC_VIEW **ViewPointer){
int v9;
_KALPC_REGION *v10;
int v11;
int v12;
ULONG_PTR BugCheckParameter2;
__int64 v15[4];
BugCheckParameter2 = 0i64;
v15[0] = 0i64;
*ViewPointer = 0i64;
AlpcpLockForCachedReferenceBlob(Section);
v9 = AlpcpCreateRegion((ULONG_PTR)Section, Offset, Size, &BugCheckParameter2);
AlpcpUnlockBlob(Section);
if( v9 < 0 )
return(unsigned int)v9;
ExAcquirePushLockSharedEx((UINT64)OwnerPort + 352, 0i64);
v10 = (_KALPC_REGION *)BugCheckParameter2;
AlpcpLockForCachedReferenceBlob((PVOID)BugCheckParameter2);
AlpcpCreateView(v10, OwnerPort, (_KALPC_VIEW **)v15);
v12 = v11;
AlpcpUnlockBlob(v10);
if( _InterlockedCompareExchange64((volatile signed __int64 *)OwnerPort + 44, 0i64, 17i64) != 17 )
ExfReleasePushLockShared((INT64 *)OwnerPort + 44);
KeAbPostRelease((char *)OwnerPort + 352);
AlpcpDereferenceBlobEx((PVOID)BugCheckParameter2, 1i64);
if( v12 < 0 )
return(unsigned int)v12;
*ViewPointer = (_KALPC_VIEW *)v15[0];
return 0i64;
}Referenced by:
AlpcpMapLegacyPortView
NtAlpcCreateSectionView