IoAcquireKsrPersistentMemory
NTSTATUS __fastcall IoAcquireKsrPersistentMemory(INT64 a1, INT64 a2, VOID *a3, size_t *a4){
__int64 v8;
__int16 *v9;
_WORD *v10;
VOID **v11;
VOID **v12;
__int64 v13;
_WORD *v14;
__int64 v15;
_WORD *v16;
__int64 v17;
PVOID BugCheckParameter4;
if( KeGetCurrentIrql() )
KeBugCheckEx(0x121u, (PVOID)1, (PVOID)KeGetCurrentIrql(), 0i64, 0i64);
if( a2 )
{
v8 = *(_QWORD *)(*(_QWORD *)(a2 + 312) + 40i64);
if( !v8 || (*(_DWORD *)(v8 + 396) & 0x20000) != 0 )
{
IoAddTriageDumpDataBlock((VOID *)a2, (_BYTE *)*(unsigned __int16 *)(a2 + 2));
v9 = *(__int16 **)(a2 + 8);
if( v9 )
{
IoAddTriageDumpDataBlock(v9, (_BYTE *)(unsigned int)v9[1]);
v10 = (_WORD *)(*(_QWORD *)(a2 + 8) + 56i64);
if( *v10 )
{
IoAddTriageDumpDataBlock(v10, (_BYTE *)2);
IoAddTriageDumpDataBlock(
*(VOID **)(*(_QWORD *)(a2 + 8) + 64i64),
(_BYTE *)*(unsigned __int16 *)(*(_QWORD *)(a2 + 8) + 56i64));
}
}
v11 = *(VOID ***)(*(_QWORD *)(a2 + 312) + 40i64);
if( v11 )
{
v12 = v11 + 5;
IoAddTriageDumpDataBlock(v11, (_BYTE *)0x310);
if( *(_WORD *)v12 )
{
IoAddTriageDumpDataBlock(v12, (_BYTE *)2);
IoAddTriageDumpDataBlock(v12[1], (_BYTE *)*(unsigned __int16 *)v12);
}
v13 = *(_QWORD *)(a2 + 312);
v14 = (_WORD *)(*(_QWORD *)(v13 + 40) + 56i64);
if( *v14 )
{
IoAddTriageDumpDataBlock(v14, (_BYTE *)2);
IoAddTriageDumpDataBlock(
*(VOID **)(*(_QWORD *)(*(_QWORD *)(a2 + 312) + 40i64) + 64i64),
(_BYTE *)*(unsigned __int16 *)(*(_QWORD *)(*(_QWORD *)(a2 + 312) + 40i64) + 56i64));
v13 = *(_QWORD *)(a2 + 312);
}
v15 = *(_QWORD *)(*(_QWORD *)(v13 + 40) + 16i64);
if( v15 )
{
v16 = (_WORD *)(v15 + 56);
if( *v16 )
{
IoAddTriageDumpDataBlock(v16, (_BYTE *)2);
v17 = *(_QWORD *)(*(_QWORD *)(*(_QWORD *)(a2 + 312) + 40i64) + 16i64);
IoAddTriageDumpDataBlock(*(VOID **)(v17 + 64), (_BYTE *)*(unsigned __int16 *)(v17 + 56));
}
}
}
KeBugCheckEx(0xCAu, (PVOID)2, (PVOID)a2, 0i64, 0i64);
}
}
if( !ExIsSoftBoot() )
return -1073741637;
LODWORD(BugCheckParameter4) = 1;
return PipGetPersistentMemory(a1, a2, a4, a3, (INT64)BugCheckParameter4);
}Referenced by:
No references.