VrpRegistryCallback
NTSTATUS __fastcall VrpRegistryCallback(VOID *a1, VOID *a2, VOID *a3){
NTSTATUS v3;
int v5;
_VRP_JOB_CONTEXT *v7;
_UNICODE_STRING *v8;
_VRP_JOB_CONTEXT *JobContext;
__int64 v11;
_LPGUID ActivityId[4];
v3 = 0;
JobContext = 0i64;
v11 = 0i64;
v5 = (int)a2;
*(_OWORD *)ActivityId = 0i64;
if( (unsigned int)a2 <= 0x31 && VrpShouldOperateOnCall((int)a2, a3, &v11, &JobContext) )
{
EtwActivityIdControl(1ui64, (_GUID *)ActivityId);
switch( v5 )
{
case 29:
return VrpPostOpenOrCreate((_REG_POST_OPERATION_INFORMATION *)a3);
case 28:
return VrpPreOpenOrCreate((_REG_CREATE_KEY_INFORMATION_V1 *)a3, JobContext);
case 22:
return VrpPostQueryKey((_REG_POST_OPERATION_INFORMATION *)a3, v7);
default:
if( v5 != 7 )
{
switch( v5 )
{
case 14:
v8 = (_UNICODE_STRING *)*((_QWORD *)a3 + 2);
if( v8 )
VrpDecommissionKeyContext(v8);
break;
case 20:
v3 = VrpPostEnumerateKey((_REG_POST_OPERATION_INFORMATION *)a3, JobContext);
break;
case 26:
return VrpPreOpenOrCreate((_REG_CREATE_KEY_INFORMATION_V1 *)a3, JobContext);
case 27:
return VrpPostOpenOrCreate((_REG_POST_OPERATION_INFORMATION *)a3);
case 30:
return VrpPreFlushKey((_VRP_JOB_CONTEXT *)0x140000000i64);
case 32:
return VrpPreLoadKey((_REG_LOAD_KEY_INFORMATION *)a3, JobContext);
case 34:
return VrpPreUnloadKey((INT64)a3, (UINT64 *)JobContext);
case 35:
return VrpPostUnloadKey((INT64)a3, (INT64)JobContext);
case 40:
VrpFreeKeyContext(*((VOID **)a3 + 1));
break;
case 47:
return VrpPreQueryKeyName((_REG_QUERY_KEY_NAME *)a3, v7);
default:
return v3;
}
}
break;
}
}
return v3;
}Referenced by:
No references.