PiPnpRtlCacheObjectBaseKey

__int64 __fastcall PiPnpRtlCacheObjectBaseKey(__int64 a1, wchar_t *a2, int a3, _QWORD *a4){
  BOOL v8; 
  int CurrentOperation; 
  _ETHREAD *CurrentThread; 
  CHAR *v12; 
  INT64 v13; 
  CHAR *v14; 
  v13 = 0i64;
  v14 = 0i64;
  if( a3 >= 7 )
  {
    return(unsigned int)-1073741637;
  }
  else
  {
    CurrentOperation = PiPnpRtlGetCurrentOperation((INT64 **)&v13);
    if( CurrentOperation >= 0 )
    {
      CurrentThread = (_ETHREAD *)KeGetCurrentThread();
      --*((_WORD *)CurrentThread + 242);
      LOBYTE(v8) = 1;
      ExAcquireResourceSharedLite(&PiPnpRtlRemoveOperationDispatchLock, v8);
      CurrentOperation = PiPnpRtlObjectEventCreate(a2, (unsigned int)a3, v13, &v14);
      if( CurrentOperation >= 0 && v14 )
      {
        v12 = v14 + 16;
        if( *((_QWORD *)v14 + 2)
          || (CurrentOperation = PnpOpenObjectRegKey(a1, (__int64)a2, a3, 0x2000000, 0, (__int64)v12),
              CurrentOperation >= 0) )
        {
          *a4 = *(_QWORD *)v12;
        }
        else
        {
          *(_QWORD *)v12 = 0i64;
        }
      }
      ExReleaseResourceLite(&PiPnpRtlRemoveOperationDispatchLock);
      KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
    }
  }
  return(unsigned int)CurrentOperation;
}

Referenced by:

PiPnpRtlCmActionCallback
PiPnpRtlObjectActionCallback