DrvDbReleaseDatabaseNodeBaseKey

__int64 __fastcall DrvDbReleaseDatabaseNodeBaseKey(__int64 a1, __int64 a2, __int64 a3, void *a4){
  _ETHREAD *CurrentThread; 
  int v5; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v5 = 0;
  --*((_WORD *)CurrentThread + 242);
  ExAcquireResourceExclusiveLite(*(ERESOURCE **)(a2 + 144), 1u);
  if( (*(_DWORD *)(a2 + 56) & 2) == 0 )
  {
    v5 = ZwClose(a4);
    if( v5 >= 0 )
      v5 = DrvDbUnloadDatabaseNode(a1, a2);
  }
  ExReleaseResourceLite(*(PERESOURCE *)(a2 + 144));
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  return(unsigned int)v5;
}

Referenced by:

DrvDbDeleteObjectRegKey
DrvDbGetObjectList
DrvDbOpenObjectRegKey