HvlpDynamicUpdateMicrocode
NTSTATUS __stdcall HvlpDynamicUpdateMicrocode(VOID *a1, UINT64 a2){
int v2;
_MDL *Mdl;
_MDL *v5;
INT16 v7;
INT64 v8;
UINT64 v9;
int v10;
int v11;
_HV_HYPERCALL_INPUT InputControl;
VOID *v13;
int v14;
int v15;
InputControl.AsUINT64 = 0i64;
v2 = a2;
Mdl = IoAllocateMdl(a1, a2, 0, 0, 0i64);
v5 = Mdl;
if( !Mdl )
return -1073741670;
MmBuildMdlForNonPagedPool(Mdl);
HvcallInitInputControl(HvCallDeprecated0007, &InputControl);
InputControl._bf_0 |= 0x10000u;
v15 = 0;
v13 = a1;
v14 = v2;
while( 1 )
{
v7 = HvcallFastExtended(InputControl.AsUINT64, &v13, 0x18u, 0i64, 0);
if( !HvlpHvStatusIsInsufficientMemory(v7) )
break;
HvlpHandleInsufficientMemory(v9, v8);
v11 = v10;
if( v10 < 0 )
goto LABEL_8;
}
v11 = HvlpHvToNtStatus(v9);
LABEL_8:
IoFreeMdl(v5);
if( v11 >= 0 )
HvlpLogMicrocodeUpdateStatus();
return v11;
}Referenced by:
HvlUpdateMicrocodeDatabase