ViXdvBindXdvDriverEntryWrappers
UINT8 __stdcall ViXdvBindXdvDriverEntryWrappers(UINT64 *FuncAddr){
UINT8 v1;
_DWORD *v3;
unsigned int i;
unsigned int v5;
char v6;
char **j;
int v8;
char *v9;
v1 = 0;
ViXdvEPThunksNoXdvEntry = 0;
ViXdvEPBound = 0;
if( !FuncAddr )
return 0;
v3 = (_DWORD *)((__int64(*)(void))FuncAddr)();
if( v3 )
{
if( *v3 == 5 )
{
for( i = 0; i < v3[1]; ++i )
{
if( *(_QWORD *)&v3[2 * i + 2] )
{
v5 = 0;
v6 = 0;
for( j = &VfXdvIoCallbackThunks; ; j = &(&VfXdvIoCallbackThunks)[4 * v5] )
{
v8 = *((_DWORD *)j + 6);
if( v8 == 268435489 || v6 )
break;
if( v8 == i + 0x10000000 )
{
v6 = 1;
v9 = j[2];
if( v9 )
{
*(_QWORD *)v9 = *(_QWORD *)&v3[2 * i + 2];
++ViXdvEPBound;
}
}
++v5;
}
}
else
{
++ViXdvEPThunksNoXdvEntry;
}
}
return 1;
}
else
{
VfUtilDbgPrint((INT8 *)"XDV entry point version mismatch: kernel version %d driver version %d\n");
}
}
return v1;
}Referenced by:
ViXdvDriverLoadImage