IoOpenDeviceInterfaceRegistryKey

NTSTATUS __stdcall IoOpenDeviceInterfaceRegistryKey(
        _UNICODE_STRING *SymbolicLinkName,
        UINT64 DesiredAccess,
        PVOID *DeviceInterfaceKey){
  int v4; 
  NTSTATUS v6; 
  _ETHREAD *CurrentThread; 
  __int64 v8; 
  PWCHAR InFreeString; 
  InFreeString = 0i64;
  v4 = DesiredAccess;
  if( SymbolicLinkName && SymbolicLinkName->Buffer && SymbolicLinkName->Length )
  {
    v6 = PnpUnicodeStringToWstr(&InFreeString, 0i64, SymbolicLinkName);
    if( v6 >= 0 )
    {
      CurrentThread = (_ETHREAD *)KeGetCurrentThread();
      --*((_WORD *)CurrentThread + 242);
      ExAcquireResourceExclusiveLite(&PnpRegistryDeviceResource, 1u);
      v6 = CmOpenDeviceInterfaceRegKey(PiPnpRtlCtx, InFreeString, 0x32u, v8, v4, 1, (__int64)DeviceInterfaceKey, 0i64);
      if( v6 >= 0 && DeviceInterfaceKey )
        IopApplyMutableTagToRegistryKey(*DeviceInterfaceKey);
      ExReleaseResourceLite(&PnpRegistryDeviceResource);
      KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
    }
  }
  else
  {
    v6 = -1073741811;
  }
  PnpUnicodeStringToWstrFree(InFreeString, SymbolicLinkName);
  return v6;
}

Referenced by:

IoWMISuggestInstanceName