WheaReportHwErrorDeviceDriverEx
INT64 __fastcall WheaReportHwErrorDeviceDriverEx(
UINT64 a1,
INT64 a2,
UINT8 *a3,
UINT64 a4,
UINT8 *Src,
UINT64 Size,
_OWORD *a7,
INT64 a8,
INT64 a9,
CHAR *pszSrc){
UINT64 v10;
_DWORD *HwErrorReportDeviceDriver;
UINT8 *v13;
UINT64 v14;
_DWORD *v15;
int v16;
UINT8 *dst;
UINT64 v19[2];
NTSTRSAFE_PSTR pszDest[2];
_BYTE *v21;
INT64 v22;
v10 = (unsigned int)a4;
*(_OWORD *)v19 = 0i64;
*(_OWORD *)pszDest = 0i64;
v21 = 0i64;
HwErrorReportDeviceDriver = WheaCreateHwErrorReportDeviceDriver(a1);
v15 = HwErrorReportDeviceDriver;
if( HwErrorReportDeviceDriver )
{
WheaHwErrorReportSetSeverityDeviceDriver(
(UINT64)HwErrorReportDeviceDriver,
(unsigned int)a9,
v13,
v14,
0i64,
v19[0],
(_OWORD *)v19[1],
(INT64)pszDest[0],
pszDest[1],
(INT64)v21,
v22);
WheaHwErrorReportGetLogDataBufferDeviceDriver(v15);
memmove(dst, Src, (unsigned int)Size);
v16 = WheaAddHwErrorReportSectionDeviceDriver(v15, v10, (__int64)v19);
if( v16 >= 0 )
{
memmove(*(UINT8 **)((char *)v19 + 4), a3, v10);
*(_OWORD *)pszDest[0] = *a7;
*v21 = 1;
if( pszSrc )
RtlStringCchCopyA(pszDest[1], 0x14ui64, pszSrc);
return(unsigned int)WheaHwErrorReportSubmitDeviceDriver((INT64)v15);
}
else
{
WheaHwErrorReportAbandonDeviceDriver(v15);
}
}
else
{
return(unsigned int)-1073741670;
}
return(unsigned int)v16;
}Referenced by:
WheaReportHwErrorDeviceDriver