PnpDispatchDeviceInterface

__int64 __fastcall PnpDispatchDeviceInterface(__int64 a1, const WCHAR *a2, __int64 a3, int a4, __int64 a5){
  __int64(__fastcall *v6)(__int64, __int64, int); 
  __int128 *v7; 
  int v8; 
  __int64 v9; 
  int v10; 
  int v11; 
  int v12; 
  int v13; 
  int v14; 
  int v15; 
  unsigned int DeviceInterfaceMappedProperty; 
  __int128 v18; 
  v6 = 0i64;
  v7 = 0i64;
  v18 = 0i64;
  v8 = a4 - 1;
  if( v8 )
  {
    v9 = (unsigned int)(v8 - 1);
    if( (_DWORD)v9 )
    {
      v10 = v9 - 1;
      if( v10 )
      {
        v11 = v10 - 1;
        if( v11 )
        {
          v12 = v11 - 1;
          if( v12 )
          {
            v13 = v12 - 1;
            if( v13 )
            {
              v14 = v13 - 1;
              if( v14 )
              {
                v15 = v14 - 1;
                if( v15 )
                {
                  if( v15 == 1 )
                    DeviceInterfaceMappedProperty = CmSetDeviceInterfaceMappedProperty(
                                                      a1,
                                                      a2,
                                                      *(char **)a5,
                                                      *(_QWORD *)(a5 + 8),
                                                      *(_QWORD *)(a5 + 16),
                                                      *(_DWORD *)(a5 + 24),
                                                      *(_QWORD *)(a5 + 32),
                                                      *(_DWORD *)(a5 + 40));
                  else
                    DeviceInterfaceMappedProperty = -1073741811;
                }
                else
                {
                  DeviceInterfaceMappedProperty = CmGetDeviceInterfaceMappedProperty(
                                                    a1,
                                                    a2,
                                                    *(char **)a5,
                                                    *(_QWORD *)(a5 + 8),
                                                    *(_QWORD *)(a5 + 16),
                                                    *(int **)(a5 + 24),
                                                    *(_QWORD *)(a5 + 32),
                                                    *(_DWORD *)(a5 + 40),
                                                    *(_DWORD **)(a5 + 48));
                }
              }
              else
              {
                DeviceInterfaceMappedProperty = CmGetDeviceInterfaceMappedPropertyLocales(
                                                  a1,
                                                  0i64,
                                                  0i64,
                                                  *(_QWORD *)(a5 + 8),
                                                  *(_WORD **)(a5 + 16),
                                                  *(_DWORD *)(a5 + 24),
                                                  *(_DWORD **)(a5 + 32));
              }
            }
            else
            {
              DeviceInterfaceMappedProperty = CmGetDeviceInterfaceMappedPropertyKeys(
                                                a1,
                                                a2,
                                                *(_QWORD *)a5,
                                                0,
                                                *(_QWORD *)(a5 + 24),
                                                *(_DWORD *)(a5 + 32),
                                                *(unsigned int **)(a5 + 40));
            }
          }
          else
          {
            if( *(_QWORD *)a5 )
            {
              *(_QWORD *)&v18 = *(_QWORD *)a5;
              v6 = PnpCmMatchCallbackRoutine;
              v7 = &v18;
              *((_QWORD *)&v18 + 1) = *(_QWORD *)(a5 + 8);
            }
            DeviceInterfaceMappedProperty = CmGetMatchingDeviceInterfaceList(
                                              a1,
                                              (__int64)v6,
                                              (__int64)v7,
                                              *(_QWORD *)(a5 + 16),
                                              *(_DWORD *)(a5 + 24),
                                              *(_QWORD *)(a5 + 32),
                                              *(_DWORD *)(a5 + 40) & 0xFFFF0000);
          }
        }
        else
        {
          DeviceInterfaceMappedProperty = CmDeleteDeviceInterface(a1, a2, *(_DWORD *)a5 & 0xFFFF0000);
        }
      }
      else
      {
        DeviceInterfaceMappedProperty = CmCreateDeviceInterface(
                                          a1,
                                          a2,
                                          *(_DWORD *)a5,
                                          (HANDLE *)(a5 + 8),
                                          (_BYTE *)(a5 + 16),
                                          *(_DWORD *)(a5 + 20) & 0xFFFF0000);
      }
    }
    else
    {
      DeviceInterfaceMappedProperty = CmOpenDeviceInterfaceRegKey(
                                        a1,
                                        a2,
                                        0x30u,
                                        v9,
                                        *(_DWORD *)a5,
                                        *(_BYTE *)(a5 + 4),
                                        *(_QWORD *)(a5 + 8),
                                        (_DWORD *)(a5 + 16));
    }
  }
  else
  {
    DeviceInterfaceMappedProperty = CmValidateDeviceInterfaceName(a1, a2);
  }
  return PnpMapCmStatusToDispatchStatus(DeviceInterfaceMappedProperty);
}

Referenced by:

No references.