CmEnumDevicesInContainerWithCallback

NTSTATUS __stdcall CmEnumDevicesInContainerWithCallback(
        HPNPCTX *hPnpCtx,
        const WCHAR *ContainerId,
        VOID *ObjectBaseKey,
        PNPCTX_REG_ENUM_KEY_ACTION *ContainedDeviceCallback,
        HPNPCTX *a5,
        const WCHAR *a6,
        VOID *a7,
        VOID *Context,
        UINT64 Flags,
        UINT64 *a10,
        INT64 a11){
  __int64(__fastcall *v15)(HPNPCTX *, const WCHAR *, __int64, __int64, int, UINT64 *); 
  int v16; 
  NTSTATUS v17; 
  NTSTATUS v18; 
  int v19; 
  int v20; 
  NTSTATUS v21; 
  WCHAR *v23; 
  VOID *v24; 
  VOID *v25; 
  UINT64 v26[12]; 

  memset(v26, 0i64, 0x58u);
  v15 = (__int64(__fastcall *)(HPNPCTX *, const WCHAR *, __int64, __int64, int, UINT64 *))*((_QWORD *)hPnpCtx + 63);
  LODWORD(v26[5]) = 0;
  v26[2] = (UINT64)ObjectBaseKey;
  v26[3] = (UINT64)ContainedDeviceCallback;
  v26[4] = (UINT64)a5;
  if( v15 )
  {
    v16 = v15(hPnpCtx, ContainerId, 5i64, 15i64, 1, v26);
    if( v16 == -1073741822 )
    {
      v15 = 0i64;
    }
    else
    {
      if( v16 == -1073741536 )
        return v26[0];
      if( v16 )
        return -1073741595;
    }
  }
  LODWORD(v23) = v26[5];
  v17 = CmEnumDevicesInContainerWithCallbackWorker(
          hPnpCtx,
          ContainerId,
          (VOID *)v26[2],
          (PNPCTX_REG_ENUM_KEY_ACTION *)v26[3],
          (HPNPCTX *)v26[4],
          v23,
          v24,
          v25,
          v26[0],
          (UINT64 *)v26[1],
          v26[2]);
  v18 = v17;
  if( !v15 )
    return v18;
  LODWORD(v26[0]) = v17;
  v19 = v15(hPnpCtx, ContainerId, 5i64, 15i64, 2, v26);
  v20 = v19;
  if( v19 == -1073741822 )
    return v18;
  if( v19 == -1073741536 )
    return v26[0];
  v21 = v18;
  if( v20 )
    return -1073741595;
  return v21;
}

Referenced by:

PiDcResetChildDeviceContainers