IopWriteTriageDumpToFirmware
INT64 __fastcall IopWriteTriageDumpToFirmware(_NT_PRODUCT_TYPE *NtProductType){
unsigned __int64 v3;
PHYSICAL_ADDRESS *v4;
char *v5;
__int64 v6;
LONGLONG QuadPart;
PHYSICAL_ADDRESS PhysicalAddress;
PVOID BaseAddress;
if( !NtProductType )
return 3221225635i64;
v3 = 262172i64;
BaseAddress = NtProductType + 1024;
v4 = (PHYSICAL_ADDRESS *)NtProductType;
*((_DWORD *)NtProductType + 1028) = 28;
*(_OWORD *)BaseAddress = CrashdmpGuid;
*((_DWORD *)BaseAddress + 5) = 458752;
*((_DWORD *)BaseAddress + 6) = 262172;
v5 = (char *)BaseAddress;
do
{
v6 = 4096i64;
if( v3 < 0x1000 )
v6 = v3;
v4->QuadPart = v6;
v4[1] = MmGetPhysicalAddress(v5);
QuadPart = v4->QuadPart;
v4 += 2;
v5 += QuadPart;
v3 -= QuadPart;
}
while( v3 );
v4->QuadPart = 0i64;
v4[1].QuadPart = 0i64;
PhysicalAddress = MmGetPhysicalAddress(NtProductType);
KiScanBugCheckCallbackList();
return((__int64(__fastcall *)(_QWORD, _QWORD, _QWORD))off_140C00848[0])(
&BaseAddress,
1i64,
(PHYSICAL_ADDRESS)PhysicalAddress.QuadPart);
}Referenced by:
IoWriteCrashDump
IopWriteCapsuleTriageDumpToFirmware