DrvDbDispatchDriverDatabase
INT64 __fastcall DrvDbDispatchDriverDatabase(INT64 a1, INT64 a2, INT64 a3, INT64 a4, UINT64 *a5){
WCHAR *v5;
int ObjectContext;
int v7;
WCHAR *v8;
int v9;
int v10;
int v11;
int v12;
int v13;
unsigned int v14;
int v16;
int v17;
INT64 BufferSize;
VOID ***v19;
INT64 a1a;
a1a = 0i64;
ObjectContext = PnpCtxGetObjectContext(a1, a3, &a1a);
if( ObjectContext < 0 )
return(unsigned int)ObjectContext;
v9 = v7 - 1;
if( !v9 )
return(unsigned int)DrvDbValidateDriverDatabaseName(v5);
v10 = v9 - 1;
if( !v10 )
return(unsigned int)DrvDbOpenDriverDatabaseRegKey(
(const UNICODE_STRING **)a1a,
v8,
*(_DWORD *)a5,
*((_BYTE *)a5 + 4),
(void **)a5[1],
(_DWORD *)a5 + 4);
v11 = v10 - 1;
if( v11 )
{
v12 = v11 - 1;
if( v12 )
{
v13 = v12 - 1;
if( v13 )
{
v16 = v13 - 1;
if( v16 )
{
v17 = v16 - 2;
if( v17 )
{
if( v17 != 1 )
return(unsigned int)-1073741811;
return(unsigned int)DrvDbSetDriverDatabaseMappedProperty(
a1a,
v8,
(void *)*a5,
a5[2],
*((_DWORD *)a5 + 6),
(int *)a5[4],
*((_DWORD *)a5 + 10));
}
else
{
LODWORD(BufferSize) = *((_DWORD *)a5 + 10);
DrvDbGetDriverDatabaseMappedProperty(a1a, v8, (VOID *)*a5, a5[2], a5[3], a5[4], BufferSize, a5[6]);
}
}
else
{
return(unsigned int)DrvDbGetDriverDatabaseMappedPropertyKeys(
a1a,
v8,
(void *)*a5,
a5[3],
*((_DWORD *)a5 + 8),
(unsigned int *)a5[5]);
}
}
else
{
return(unsigned int)DrvDbGetDriverDatabaseList(
(_QWORD *)a1a,
(unsigned __int8(__fastcall *)(_QWORD, __int64, __int64, __int64))*a5,
a5[1],
(_WORD *)a5[2],
*((_DWORD *)a5 + 6),
(unsigned int *)a5[4]);
}
}
else
{
v19 = 0i64;
ObjectContext = DrvDbFindDatabaseNode(a1a, v8, (const UNICODE_STRING **)&v19);
if( ObjectContext < 0 )
return(unsigned int)ObjectContext;
if( ((_DWORD)v19[7] & 0x10) == 0 )
return(unsigned int)-1073741790;
return(unsigned int)DrvDbDestroyDatabaseNode(a1a, v19);
}
return v14;
}
LODWORD(v19) = 0;
ObjectContext = DrvDbOpenDriverDatabaseRegKey(
(const UNICODE_STRING **)a1a,
v8,
*(_DWORD *)a5,
1,
(void **)a5 + 1,
&v19);
if( ObjectContext >= 0 )
*((_BYTE *)a5 + 16) = (_DWORD)v19 == 1;
return(unsigned int)ObjectContext;
}Referenced by:
No references.