EtwpQueryRegistryCallback
NTSTATUS __stdcall EtwpQueryRegistryCallback(
WCHAR *ValueName,
UINT64 ValueType,
VOID *ValueData,
UINT64 ValueLength,
VOID *Context,
VOID *EntryContext){
NTSTATUS v6;
int v7;
_OWORD *v9;
__int64 v10;
v6 = 0;
v7 = ValueLength;
if( EntryContext )
{
if( ValueData && (_DWORD)ValueLength )
{
if( (_DWORD)ValueType == *(_DWORD *)EntryContext )
{
switch( (_DWORD)ValueType )
{
case 4:
if( (unsigned int)ValueLength >= 4 )
**((_DWORD **)EntryContext + 1) = *(_DWORD *)ValueData;
break;
case 0xB:
**((_QWORD **)EntryContext + 1) = *(_QWORD *)ValueData;
break;
case 1:
v9 = (_OWORD *)*((_QWORD *)EntryContext + 1);
if( (unsigned int)ValueLength > 2 )
{
if( !RtlCreateUnicodeString((INT64)v9, (INT8 *)ValueData) )
return -1073741801;
}
else
{
*v9 = 0i64;
}
break;
default:
if( (_DWORD)ValueType == 3 && (unsigned int)ValueLength >= 4 )
{
v10 = *((_QWORD *)EntryContext + 1);
if( (unsigned int)ValueLength > *(_DWORD *)v10 )
{
*(_DWORD *)v10 = 0;
return -1073741306;
}
else
{
memmove(*(VOID **)(v10 + 8), ValueData, ValueLength);
**((_DWORD **)EntryContext + 1) = v7;
}
}
break;
}
}
else
{
return -1073741821;
}
}
else if( (_DWORD)ValueType == 3 && *(_DWORD *)EntryContext == 3 )
{
**((_DWORD **)EntryContext + 1) = 0;
}
}
return v6;
}Referenced by:
No references.