DrvDbDestroyDatabaseNode
INT64 __fastcall DrvDbDestroyDatabaseNode(INT64 a1, VOID ***a2){
int v3;
UINT64 v4;
INT64 v5;
VOID **v6;
UINT64 *v7;
VOID **v8;
VOID *v10;
v3 = DrvDbUnloadDatabaseNode(a1, (INT64)a2);
if( v3 >= 0 )
{
v6 = *a2;
if( (*a2)[1] != a2 || (v7 = (UINT64 *)a2[1], (VOID ***)*v7 != a2) )
__fastfail(3u);
*v7 = (UINT64)v6;
v6[1] = v7;
v8 = a2[18];
if( v8 )
{
ExDeleteResourceLite((INT64)a2[18], v7, v4, v5, v10);
ExFreePoolWithTag(v8, 0);
}
RtlFreeAnsiString((_UNICODE_STRING *)a2 + 1);
RtlFreeAnsiString((_UNICODE_STRING *)(a2 + 5));
ExFreePoolWithTag(a2, 0);
}
return(unsigned int)v3;
}Referenced by:
DrvDbDispatchDriverDatabase
DrvDbOpenContext
DrvDbOpenDriverDatabaseRegKey
DrvDbUnregisterDatabase