DrvDbSetDriverFileMappedProperty
INT64 __fastcall DrvDbSetDriverFileMappedProperty(
INT64 *a1,
INT64 a2,
VOID *a3,
INT64 a4,
INT64 a5,
VOID *a6,
INT64 a7){
int v8;
__int64 v11;
int v12;
__int64 v13;
__int64(**i)[3];
__int64(*v15)[3];
__int64 v16;
__int64 v18;
__int64(**v19)[3];
int v20;
HANDLE Handle;
Handle = 0i64;
v8 = *(_DWORD *)(a4 + 16);
if( v8 == 2 )
{
v11 = *(_QWORD *)a4 - DEVPKEY_NODE;
if( *(_QWORD *)a4 == DEVPKEY_NODE )
v11 = *(_QWORD *)(a4 + 8) + 0x5008C7D4C8250077i64;
if( !v11 )
return(unsigned int)-1073741790;
}
v13 = 0i64;
for( i = &off_1400099E0; ; i += 5 )
{
v15 = *i;
if( LODWORD((**i)[2]) == v8 )
{
v16 = (*v15)[0] - *(_QWORD *)a4;
if( (*v15)[0] == *(_QWORD *)a4 )
v16 = (*v15)[1] - *(_QWORD *)(a4 + 8);
if( !v16 )
break;
}
v13 = (unsigned int)(v13 + 1);
if( (unsigned int)v13 >= 2 )
return(unsigned int)-1073741802;
}
v18 = 5 * v13;
v19 = &off_1400099E0 + v18;
if( !v19 )
return(unsigned int)-1073741802;
v20 = a5;
if( (_DWORD)a5 != *((_DWORD *)v19 + 2) && (_DWORD)a5 )
return(unsigned int)-1073741811;
if( !a3 )
{
v12 = DrvDbOpenDriverFileRegKey(a1, a2, 2i64, 0, (INT64)&Handle, 0i64);
if( v12 < 0 )
goto LABEL_22;
a3 = Handle;
}
v12 = DrvDbSetRegValueMappedProperty(v18, a3, (__int64)v19, v20, (int *)a6, a7);
LABEL_22:
if( Handle )
ZwClose(Handle);
return(unsigned int)v12;
}Referenced by:
DrvDbDispatchDriverFile