PnpCreateObjectDispatch

__int64 __fastcall PnpCreateObjectDispatch(
        WCHAR *ValueName,
        UINT64 ValueType,
        VOID *ValueData,
        int a4,
        __int64 a5,
        __int64 a6,
        int a7){
  int v8; 
  int ObjectDispatchCallback; 
  int v12; 
  char v13; 
  VOID *v15; 
  void *v16[2]; 
  __int64 Context[8]; 

  v16[0] = 0i64;
  v8 = (int)ValueData;
  memset(Context, 0i64, sizeof(Context));
  if( (_WORD)a7 )
  {
    return(unsigned int)-1073741811;
  }
  else
  {
    ObjectDispatchCallback = PnpCtxGetObjectDispatchCallback((__int64)ValueName, v8, v16);
    if( ObjectDispatchCallback >= 0 )
    {
      if( v16[0] )
      {
        LODWORD(Context[0]) = a4;
        HIDWORD(Context[2]) = v12;
        ObjectDispatchCallback = ((__int64(__fastcall *)(WCHAR *, UINT64, _QWORD, __int64))v16[0])(
                                   ValueName,
                                   ValueType,
                                   (unsigned int)v8,
                                   3i64);
        if( ObjectDispatchCallback >= 0 )
        {
          v13 = Context[2];
          *(_QWORD *)a5 = Context[1];
          *(_BYTE *)a6 = v13;
          if( v13 )
          {
            if( v8 >= 7 )
              PnpObjectRaiseCreateEvent(ValueName, ValueType, (VOID *)(unsigned int)v8, *(_QWORD *)a5, Context, v15);
          }
        }
      }
      else
      {
        return(unsigned int)-1073741822;
      }
    }
  }
  return(unsigned int)ObjectDispatchCallback;
}

Referenced by:

PnpCreateObject