PiCreateDeviceInstanceKey

__int64 __fastcall PiCreateDeviceInstanceKey(__int64 a1, HANDLE *a2, _DWORD *a3){
  _ETHREAD *CurrentThread; 
  HANDLE *v5; 
  int v7; 
  char v9; 
  *a2 = 0i64;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v5 = a2;
  *a3 = 0;
  v9 = 0;
  --*((_WORD *)CurrentThread + 242);
  LOBYTE(a2) = 1;
  ExAcquireResourceSharedLite(&PnpRegistryDeviceResource, (BOOL)a2);
  v7 = CmCreateDevice(PiPnpRtlCtx, *(const wchar_t **)(a1 + 48), 983103, v5, &v9, 0);
  if( v7 >= 0 )
    *a3 = 2 - (v9 != 0);
  ExReleaseResourceLite(&PnpRegistryDeviceResource);
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  return(unsigned int)v7;
}

Referenced by:

PiProcessNewDeviceNode