DrvDbSetDriverInfFileMappedProperty
__int64 __fastcall DrvDbSetDriverInfFileMappedProperty(
__int64 *a1,
__int64 a2,
HANDLE a3,
__int64 a4,
int a5,
int *a6,
ULONG a7){
int v8;
__int64 v11;
__int64(**i)[3];
__int64(*v13)[3];
__int64 v14;
__int64 v15;
__int64(**v16)[3];
int v17;
int v18;
__int64 v20;
HANDLE Handle;
Handle = 0i64;
v8 = *(_DWORD *)(a4 + 16);
if( v8 == 2 )
{
v20 = *(_QWORD *)a4 - DEVPKEY_NODE;
if( *(_QWORD *)a4 == DEVPKEY_NODE )
v20 = *(_QWORD *)(a4 + 8) + 0x5008C7D4C8250077i64;
if( !v20 )
return(unsigned int)-1073741790;
}
v11 = 0i64;
for( i = &off_140001C60; ; i += 5 )
{
v13 = *i;
if( LODWORD((**i)[2]) == v8 )
{
v14 = (*v13)[0] - *(_QWORD *)a4;
if( (*v13)[0] == *(_QWORD *)a4 )
v14 = (*v13)[1] - *(_QWORD *)(a4 + 8);
if( !v14 )
break;
}
v11 = (unsigned int)(v11 + 1);
if( (unsigned int)v11 >= 4 )
return(unsigned int)-1073741802;
}
v15 = 5 * v11;
v16 = &off_140001C60 + v15;
if( !v16 )
return(unsigned int)-1073741802;
v17 = a5;
if( a5 != *((_DWORD *)v16 + 2) && a5 )
return(unsigned int)-1073741811;
if( !a3 )
{
v18 = DrvDbOpenDriverInfFileRegKey(a1, a2, 2i64, 0, (INT64)&Handle, 0i64);
if( v18 < 0 )
goto LABEL_13;
a3 = Handle;
}
v18 = DrvDbSetRegValueMappedProperty(v15, a3, (__int64)v16, v17, a6, a7);
LABEL_13:
if( Handle )
ZwClose(Handle);
return(unsigned int)v18;
}Referenced by:
DrvDbDispatchDriverInfFile