AlpcpRemoveMessageFromPendingQueue
VOID __stdcall AlpcpRemoveMessageFromPendingQueue(_KALPC_MESSAGE *Message){
__int64 v1;
volatile INT64 *v3;
v1 = *((_QWORD *)Message + 2);
v3 = (volatile INT64 *)(v1 + 176);
ExAcquirePushLockExclusiveEx(v1 + 176, 0i64);
--*(_DWORD *)(v1 + 456);
*((_DWORD *)Message + 10) &= 0xFFFFFFF8;
*((_QWORD *)Message + 2) = 0i64;
**((_QWORD **)Message + 1) = *(_QWORD *)Message;
*(_QWORD *)(*(_QWORD *)Message + 8i64) = *((_QWORD *)Message + 1);
if( (_InterlockedExchangeAdd64((volatile signed __int64 *)(v1 + 176), 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock(v3);
KeAbPostRelease((PVOID)v3);
--*((_WORD *)Message - 15);
}Referenced by:
AlpcpCancelMessage
AlpcpDispatchReplyToPort
AlpcpReplyLegacySynchronousRequest
AlpcpReturnMessageOnInsufficientBuffer