IopInitializeTriageDumpData
VOID __stdcall IopInitializeTriageDumpData(){
struct _KTRIAGE_DUMP_DATA_ARRAY *PoolWithTag;
struct _KTRIAGE_DUMP_DATA_ARRAY *v1;
_SIZE_T v2;
unsigned int i;
if( !KtriageDumpDataArray )
{
PoolWithTag = (struct _KTRIAGE_DUMP_DATA_ARRAY *)ExAllocatePoolWithTag(0x200ui64, 0x4030ui64, 1918136137i64);
KtriageDumpDataArray = PoolWithTag;
v1 = PoolWithTag;
if( PoolWithTag )
{
if( KeInitializeTriageDumpDataArray((INT64)PoolWithTag, 0x4030ui64) < 0 )
goto LABEL_9;
if( *(&stru_140C452E0 + 718) )
{
for( i = 0; i < *(&stru_140C452E0 + 718); ++i )
KeAddTriageDumpDataBlock(
v1,
*((_QWORD *)&stru_140C452E0 + 2 * i + 360),
(PVOID)(_mm_srli_si128(*((__m128i *)&stru_140C452E0 + i + 180), 8).m128i_u64[0]
- *((_QWORD *)&stru_140C452E0 + 2 * i + 360)),
v2);
}
*(&CallbackRecord.State + 4) = 0;
if( !KeRegisterBugCheckReasonCallback(
&CallbackRecord,
IoBugCheckTriageDumpDataCallback,
KbCallbackRemovePages|KbCallbackReserved1,
(PUCHAR)"IoTriageDumpData") )
{
LABEL_9:
if( KtriageDumpDataArray )
{
ExFreePoolWithTag(KtriageDumpDataArray, 0x72546F49u);
KtriageDumpDataArray = 0i64;
}
}
}
}
}Referenced by:
IoInitSystemPreDrivers