IopInitializeTriageDumpData
VOID __stdcall IopInitializeTriageDumpData(){
struct _KTRIAGE_DUMP_DATA_ARRAY *PoolWithTag;
struct _KTRIAGE_DUMP_DATA_ARRAY *v1;
SIZE_T v2;
unsigned int i;
if( !IopTriageDumpDataArray )
{
PoolWithTag = (struct _KTRIAGE_DUMP_DATA_ARRAY *)ExAllocatePoolWithTag(NonPagedPoolNx, 0x4030ui64, 0x72546F49ui64);
IopTriageDumpDataArray = PoolWithTag;
v1 = PoolWithTag;
if( PoolWithTag )
{
if( KeInitializeTriageDumpDataArray(PoolWithTag, 0x4030u) < 0 )
goto LABEL_9;
if( IopNumTriageDumpDataBlocks )
{
for( i = 0; i < IopNumTriageDumpDataBlocks; ++i )
KeAddTriageDumpDataBlock(
v1,
IopTriageDumpDataBlocks[2 * i],
(PVOID)(_mm_srli_si128(*(__m128i *)&IopTriageDumpDataBlocks[2 * i], 8).m128i_u64[0]
- IopTriageDumpDataBlocks[2 * i]),
v2);
}
IopBugCheckTriageDumpDataCallbackRecord.State = 0;
if( !KeRegisterBugCheckReasonCallback(
&IopBugCheckTriageDumpDataCallbackRecord,
IoBugCheckTriageDumpDataCallback,
KbCallbackTriageDumpData,
(PUCHAR)"IoTriageDumpData") )
{
LABEL_9:
if( IopTriageDumpDataArray )
{
ExFreePoolWithTag(IopTriageDumpDataArray, 0x72546F49u);
IopTriageDumpDataArray = 0i64;
}
}
}
}
}Referenced by:
IoInitSystemPreDrivers