MiApplyHotPatchToDriver
NTSTATUS __stdcall MiApplyHotPatchToDriver(INT64 a1, INT64 a2, _UNICODE_STRING *a3, INT64 a4){
INT64 v4;
int v7;
int v8;
NTSTATUS v9;
unsigned int v10;
INT64 v12;
v4 = PsLoadedModuleList;
v7 = a2;
v8 = a1;
v9 = -1073741515;
while( (INT64 *)v4 != &PsLoadedModuleList )
{
if( MiGetSystemRegionType(*(_QWORD *)(v4 + 48)) != 1
&& *(_DWORD *)(v4 + 120) == v8
&& *(_DWORD *)(v4 + 156) == v7
&& (*(_DWORD *)(v4 + 196) & 0x21) == 0 )
{
v9 = 0;
if( a3 )
{
if( !a4 )
return v9;
v10 = MiApplyHotPatchToLoadedDriver(v4, a3, a4);
}
else
{
if( !*(_QWORD *)(v4 + 280) )
return v9;
v10 = MiUnapplyDriverHotPatch(v4, v4 + 160);
}
v9 = v10;
LODWORD(v12) = 1;
MiLogHotPatchOperationStatus(
*(unsigned int *)(v4 + 120),
*(unsigned int *)(v4 + 156),
(PFN_WDFCX_DEVICE_POST_SELF_MANAGED_IO_INIT *)a3,
v10,
v12);
return v9;
}
v4 = *(_QWORD *)v4;
}
return v9;
}Referenced by:
MiLoadHotPatch
MiUnloadHotPatch
MmRegisterHotPatch