VslRetrieveMailbox
NTSTATUS __stdcall VslRetrieveMailbox(
UINT64 TrustletIdentity,
_TRUSTLET_MAILBOX_KEY *MailboxKey,
UINT8 MailboxId,
VOID *Buffer,
UINT64 *Length){
int v6;
NTSTATUS result;
_TRUSTLET_MAILBOX_KEY v10;
NTSTATUS v11;
INT64 v12[10];
INT64 v13[14];
v6 = MailboxId;
memset(v13, 0i64, 0x68u);
memset(v12, 0i64, 0x48u);
if( *(_OWORD *)MailboxKey == 0i64 || *Length - 1 > 0x1F9FFF )
return -1073741811;
result = VslpLockPagesForTransfer((INT64)v12, (INT64)Buffer, *(unsigned int *)Length, 2i64, 0);
if( result >= 0 )
{
v10 = *MailboxKey;
v13[1] = v12[0];
v13[2] = v12[7];
*(_TRUSTLET_MAILBOX_KEY *)&v13[3] = v10;
v13[5] = TrustletIdentity;
LODWORD(v13[6]) = v6;
v11 = VslpEnterIumSecureMode(2u, 20, 0i64, (INT64)v13);
VslpUnlockPagesForTransfer((INT64 **)v12);
if( (int)(v11 + 0x80000000) < 0 || v11 == -1073741789 )
*Length = v13[8];
return v11;
}
return result;
}Referenced by:
No references.