MiStoreWriteIssue
NTSTATUS __stdcall MiStoreWriteIssue(
INT64 a1,
INT64 a2,
union _MM_STORE_KEY *a3,
INT64 a4,
INT64 TransferContext,
INT64 StoreContext,
INT64 PageKey,
INT64 a8){
unsigned __int64 v9;
INT64 v10;
NTSTATUS result;
__int64 v12;
UINT64 WaitAllowed;
*(_DWORD *)(a1 + 72) = 56;
*(_QWORD *)(a1 + 64) = 0i64;
*(_QWORD *)(a1 + 96) = 0i64;
*(_QWORD *)(a1 + 104) = 4096i64;
*(_WORD *)(a1 + 74) |= 2u;
v9 = (__int64)((unsigned __int128)((a2 - (__int64)MmGetPfnDb()) * (__int128)0x2AAAAAAAAAAAAAABi64) >> 64) >> 3;
v10 = PageKey;
*(_QWORD *)(a1 + 112) = (v9 >> 63) + v9;
*(_QWORD *)(a1 + 56) = v10;
LODWORD(PageKey) = 0;
result = SmKeyConvert(a3, (union _SM_PAGE_KEY *)&PageKey);
if( result >= 0 )
{
LODWORD(WaitAllowed) = a8;
return SmpPageWrite(
(_SM_PAGE_KEY *)&PageKey,
(_MM_STORE_KEY_DESCRIPTOR *)a4,
(VOID *)StoreContext,
(_MDL *)(v12 + 64),
(VOID *)TransferContext,
(_IO_STATUS_BLOCK *)(v12 + 16),
WaitAllowed);
}
return result;
}Referenced by:
MiStoreWriteModifiedPages